• mmseg4j 中文分词 for .net版本


    1、mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/ )实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。

    2、MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。

    • 1.5版的分词速度simple算法是 1100kb/s左右、complex算法是 700kb/s左右,(测试机:AMD athlon 64 2800+ 1G内存 xp)。
    • 1.6版在complex基础上实现了最多分词(max-word)。“很好听” -> "很好|好听"; “中华人民共和国” -> "中华|华人|共和|国"; “中国人民银行” -> "中国|人民|银行"。
    • 1.7-beta 版, 目前 complex 1200kb/s左右, simple 1900kb/s左右, 但内存开销了50M左右. 上几个版都是在10M左右.

    作者博客:http://blog.chenlb.com/

    因最近要做一个全文检索的工具,在寻找中文分词组件时,在庖丁解牛和mmseg4j中选择了mmseg4j.

    这个是根据java版本翻译过来的.

    欲正确运行lucene,需修改lucene2.9.2的源码Lucene.Net.Index.ReusableStringReader中的Read()修改为:

    int r = -1;
               if (upto < s.Length)
               {
                   r = (int)s[upto];
                   ++upto;
               }
               return r;

    ,否则在搜索时会找不到结果。

    上图是测试运行结果。

    测试代码如下:

     

    String txt = "京华时报1月23日报道 昨天,受一股来自中西伯利亚的强冷空气影响,本市出现大风降温天气,白天最高气温只有零下7摄氏度,同时伴有6到7级的偏北风。";

    IndexWriter iw
    = new IndexWriter(GetDir, GetAna);
    Document doc
    = new Document();
    doc.Add(
    new Field("txt", txt, Field.Store.YES, Field.Index.ANALYZED));
    iw.AddDocument(doc);
    iw.Commit();
    iw.Optimize();
    iw.Close();

    Console.WriteLine();

    Console.WriteLine(
    "indexer ok.\r\n\r\n");

    IndexSearcher searcher
    = new IndexSearcher(GetDir, true);
    QueryParser qp
    = new QueryParser("txt", GetAna);
    Query q
    = qp.Parse("冷空气"); //2008年底
    Console.WriteLine("query>{0}", q);
    TopDocs tds
    = searcher.Search(q, 10);
    Console.WriteLine(
    "======size:" + tds.totalHits + "========");
    foreach (ScoreDoc sd in tds.scoreDocs)
    {
    Console.WriteLine(sd.score);
    Console.WriteLine(searcher.Doc(sd.doc).Get(
    "txt"));
    }

    Console.WriteLine(
    "ok.....");

     

    文件下载

    欢迎大家使用,我将继续发布一些关于lucene构建全文检索在应用方面的文章。

  • 相关阅读:
    5. Mybatis UPDATE更新,DELETE删除
    3. Mybatis Insert
    4. selectKey语句属性配置细节
    2. Mybatis Select
    uoj#282. 长度测量鸡(构造)
    uoj#276. 【清华集训2016】汽水(分数规划+点分治)
    uoj#275. 【清华集训2016】组合数问题(数位dp)
    uoj#274. 【清华集训2016】温暖会指引我们前行(LCT)
    uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
    uoj#272. 【清华集训2016】石家庄的工人阶级队伍比较坚强(矩阵+三维FWT)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2111130.html
Copyright © 2020-2023  润新知