mmseg4j 中文分词 for .net版本

系统 1697 0

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;

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

mmseg4j 中文分词 for .net版本

上图是测试运行结果。

测试代码如下:

 

      
        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构建全文检索在应用方面的文章。

mmseg4j 中文分词 for .net版本


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论