支持三种分词模式:
精确模式,试图将句子最精确地切开,适合文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义。具体来说,分词过程不会借助于词频查找最大概率路径,亦不会使用HMM;
搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
支持繁体分词
支持添加自定义词典和自定义词
下载代码使用VS 2017 打开,或者使用VS Code 打开项目。
选择jieba.NET 为起始项目,Program.cs 代码如下:
运行程序结果如下:
JiebaSegmenter.Cut方法可通过cutAll来支持两种模式,精确模式和全模式。精确模式是最基础和自然的模式,试图将句子最精确地切开,适合文本分析;而全模式,把句子中所有的可以成词的词语都扫描出来, 速度更快,但是不能解决歧义,因为它不会扫描最大概率路径,也不会通过HMM去发现未登录词。
CutForSearch采用的是搜索引擎模式,在精确模式的基础上对长词再次切分,提高召回率,适合用于搜索引擎分词。
词性标注采用和ictclas兼容的标记法,关于ictclas和jieba中使用的标记法列表,请参考:词性标记。
在TestDemo.cs 中PosCutDemo 方法为词性标注。
调用结果如下:
现在来尝试提取其中的关键词。jieba.NET提供了TF-IDF和TextRank两种算法来提取关键词,TF-IDF对应的类是JiebaNet.Analyser.TfidfExtractor,TextRank的是JiebaNet.Analyser.TextRankExtractor。
ExtractTagsDemo 方法为提取所有关键词。
ExtractTagsDemo2 方法为提取前十个仅包含名词和动词的关键词
ExtractTagsWithWeight方法的返回结果中除了包含关键词,还包含了相应的权重值。
调用 TokenizeDemo 方法会返回对应位置
代码加入
调用 segmenter.AddWord添加新词,这里添加了发布时间及.NETCore2.0
可以看到新加入的词被识别出来。
词典加入
词典格式如下:词典格式与主词典格式相同,即一行包含:词、词频(可省略)、词性(可省略),用空格隔开。词频省略时,分词器将使用自动计算出的词频保证该词被分出。
然后使用segmenter.LoadUserDict() 方法,传入词典路径。
本文转自zsdnr 51CTO博客,原文链接:http://blog.51cto.com/12942149/1949721,如需转载请自行联系原作者