jieba.NET是jieba中文分词的.NET版本(C#实现)。 当前版本为0.38.2,基于jieba 0.38,提供与jieba一致的功能与接口,以后可能会在jieba基础上提供其它扩展功能。关于jieba的实现思路,可以看看这篇wiki里提到的资料。 如果您在开发中遇到与分词有关的需求或困难,请提交一个Issue,I see u:) 特点
算法
安装和配置当前版本基于.NET Framework 4.5,可以手动引用项目,也可以通过NuGet添加引用: PM> Install-Package jieba.NET
安装之后,在packages\jieba.net目录下可以看到Resources目录,这里面是jieba.Net运行所需的词典及其它数据文件,最简单的配置方法是将整个Resources目录拷贝到程序集所在目录,这样jieba.NET会使用内置的默认配置值。如果希望将这些文件放在其它位置,则要在app.config或web.config中添加如下的配置项: <appSettings> <add key="JiebaConfigFileDir" value="C:\jiebanet\config" /> </appSettings> 需要注意的是,这个路径可以使用绝对路径或相对路径。如果使用相对路径,那么jieba.NET会假设该路径是相对于当前应用程序域的BaseDirectory。 配置示例:
主要功能1. 分词
代码示例 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)); 输出
2. 添加自定义词典加载词典
如
调整词典
3. 关键词提取基于TF-IDF算法的关键词提取
基于TextRank算法的关键词抽取
4. 词性标注
var posSeg = new PosSegmenter(); var s = "一团硕大无朋的高能离子云,在遥远而神秘的太空中迅疾地飘移"; var tokens = posSeg.Cut(s); Console.WriteLine(string.Join(" ", tokens.Select(token => string.Format("{0}/{1}", token.Word, token.Flag))));
5. Tokenize:返回词语在原文的起止位置
var segmenter = new JiebaSegmenter(); var s = "永和服装饰品有限公司"; var tokens = segmenter.Tokenize(s); foreach (var token in tokens) { Console.WriteLine("word {0,-12} start: {1,-3} end: {2,-3}", token.Word, token.StartIndex, token.EndIndex); }
var segmenter = new JiebaSegmenter(); var s = "永和服装饰品有限公司"; var tokens = segmenter.Tokenize(s, TokenizerMode.Search); foreach (var token in tokens) { Console.WriteLine("word {0,-12} start: {1,-3} end: {2,-3}", token.Word, token.StartIndex, token.EndIndex); }
6. 并行分词(暂未实现)7. 与Lucene.NET的集成jiebaForLuceneNet项目提供了与Lucene.NET的简单集成,更多信息请看:jiebaForLuceneNet 8. 其它词典jieba分词亦提供了其它的词典文件:
9. 分词速度
10. 命令行分词Segmenter.Cli项目build之后得到jiebanet.ext,它的选项和实例用法如下: -f --file the file name, (必要的). -d --delimiter the delimiter between tokens, default: / . -a --cut-all use cut_all mode. -n --no-hmm don't use HMM. -p --pos enable POS tagging. -v --version show version info. -h --help show help details. sample usages: $ jiebanet -f input.txt > output.txt $ jiebanet -d | -f input.txt > output.txt $ jiebanet -p -f input.txt > output.txt
https://github.com/anderscui/jieba.NET
|
|