jieba中文分词的.NET版本(支持.NET Framework与.NET Core)
作者:朱尚 / 日期:2021-03-19 / 分类:Asp.Net / 浏览:162

jieba.NET是jieba中文分词的.NET版本(C#实现)。

当前版本为0.42.2,基于jieba 0.42,提供与jieba基本一致的功能与接口,但不支持其最新的paddle模式。关于jieba的实现思路,可以看看这篇wiki里提到的资料。

此外,也提供了KeywordProcessor,参考FlashText实现。KeywordProcessor可以更灵活地从文本中提取词典中的关键词,比如忽略大小写、含空格的词等。

主要功能

分词

  • JiebaSegmenter.Cut方法接受三个输入参数,text为待分词的字符串;cutAll指定是否采用全模式;hmm指定使用是否使用hmm模型切分未登录词;返回类型为IEnumerable<string>
  • JiebaSegmenter.CutForSearch方法接受两个输入参数,text为待分词的字符串;hmm指定使用是否使用hmm模型;返回类型为IEnumerable<string>

代码示例

var  segmenter  =  new  JiebaSegmenter (); 
var  segments  =  segmenter . Cut ( "我来到北京清华大学" , cutAll : true ); 
Console . WriteLine ( "【全模式】:{0} " , string . Join ( " / " , segments ));

segments  =  segmenter . Cut ( "我来到北京清华大学" );   //默认为精确模式
Console . WriteLine ( "【精确模式】:{0} " , string . Join ( " / " , segments ));

segments  =  segmenter . Cut ( "他来到了网易杭研大厦" );   //默认为精确模式,同时也使用HMM模型
Console . WriteLine ( "【新词识别】:{0} " , string . Join ( " / " , segments ));

segments  =  segmenter . CutForSearch ( "小明硕士毕业于中国科学院计算所,后在日本京都大学深造" ); //搜索引擎模式
Console . WriteLine ( "【搜索引擎模式】:{0} " , string . Join ( " / " , segments ));

segments  =  segmenter . Cut ( "结过婚的和尚未结过婚的" ); 
Console . WriteLine ( "【歧义消除】:{0} " , string . Join ( " / " , segments ));

输出

【全模式】:我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
【精确模式】:我/ 来到/ 北京/ 清华大学
【新词识别】:他/ 来到/ 了/ 网易/ 杭研/ 大厦
【搜索引擎模式】:小明/ 硕士/ 毕业/ 于/ 中国/ 科学/ 学院/ 科学院/ 中国科学院/ 计算/ 计算所/ ,/ 后/ 在/ 日本/ 京都/ 大学/ 日本京都大学/ 深造
【歧义消除】:结过婚/ 的/ 和/ 尚未/ 结过婚/ 的

词频统计

可以使用Counter类统计词频,其实现来自Python标准库的Counter类(具体接口和实现细节略有不同),用法大致是:

var s = "在数学和计算机科学之中,算法(algorithm)为任何良定义的具体计算步骤的一个序列,
常用于计算、数据处理和自动推理。精确而言,算法是一个表示为有限长列表的有效方法。
算法应包含清晰定义的指令用于计算函数。";
var seg = new JiebaSegmenter();
var freqs = new Counter<string>(seg.Cut(s));
foreach (var pair in freqs.MostCommon(5))
{    Console.WriteLine($"{pair.Key}: {pair.Value}");
}

输出:

的: 4
,: 3
算法: 3
计算: 3
。: 3

Counter类可通过AddSubtractUnion方法进行修改,最后以MostCommon方法获得频率最高的若干词。具体用法可见测试用例。

   

                                                                                                                                                                                                                                                                 转自 https://github.com/anderscui/jieba.NET/

上一篇:.Net NPOI导入导出
下一篇:当前aspx中的ajax访问当前.cs里的方法
本文标签: 中文 分词 搜索
本文链接:http://www.banzhuan.net/detail/364