jieba.NET是jieba中文分詞的.NET版本(C#實(shí)現(xiàn))。 當(dāng)前版本為0.38.2,基于jieba 0.38,提供與jieba一致的功能與接口,以后可能會(huì)在jieba基礎(chǔ)上提供其它擴(kuò)展功能。關(guān)于jieba的實(shí)現(xiàn)思路,可以看看這篇wiki里提到的資料。 如果您在開發(fā)中遇到與分詞有關(guān)的需求或困難,請(qǐng)?zhí)峤灰粋€(gè)Issue,I see u:) 特點(diǎn)
算法
安裝和配置當(dāng)前版本基于.NET Framework 4.5,可以手動(dòng)引用項(xiàng)目,也可以通過(guò)NuGet添加引用: PM> Install-Package jieba.NET
安裝之后,在packages\jieba.net目錄下可以看到Resources目錄,這里面是jieba.Net運(yùn)行所需的詞典及其它數(shù)據(jù)文件,最簡(jiǎn)單的配置方法是將整個(gè)Resources目錄拷貝到程序集所在目錄,這樣jieba.NET會(huì)使用內(nèi)置的默認(rèn)配置值。如果希望將這些文件放在其它位置,則要在app.config或web.config中添加如下的配置項(xiàng): <appSettings> <add key="JiebaConfigFileDir" value="C:\jiebanet\config" /> </appSettings> 需要注意的是,這個(gè)路徑可以使用絕對(duì)路徑或相對(duì)路徑。如果使用相對(duì)路徑,那么jieba.NET會(huì)假設(shè)該路徑是相對(duì)于當(dāng)前應(yīng)用程序域的BaseDirectory。 配置示例:
主要功能1. 分詞
代碼示例 var segmenter = new JiebaSegmenter(); var segments = segmenter.Cut("我來(lái)到北京清華大學(xué)", cutAll: true); Console.WriteLine("【全模式】:{0}", string.Join("/ ", segments)); segments = segmenter.Cut("我來(lái)到北京清華大學(xué)"); // 默認(rèn)為精確模式 Console.WriteLine("【精確模式】:{0}", string.Join("/ ", segments)); segments = segmenter.Cut("他來(lái)到了網(wǎng)易杭研大廈"); // 默認(rèn)為精確模式,同時(shí)也使用HMM模型 Console.WriteLine("【新詞識(shí)別】:{0}", string.Join("/ ", segments)); segments = segmenter.CutForSearch("小明碩士畢業(yè)于中國(guó)科學(xué)院計(jì)算所,后在日本京都大學(xué)深造"); // 搜索引擎模式 Console.WriteLine("【搜索引擎模式】:{0}", string.Join("/ ", segments)); segments = segmenter.Cut("結(jié)過(guò)婚的和尚未結(jié)過(guò)婚的"); Console.WriteLine("【歧義消除】:{0}", string.Join("/ ", segments)); 輸出
2. 添加自定義詞典加載詞典
如
調(diào)整詞典
3. 關(guān)鍵詞提取基于TF-IDF算法的關(guān)鍵詞提取
基于TextRank算法的關(guān)鍵詞抽取
4. 詞性標(biāo)注
var posSeg = new PosSegmenter(); var s = "一團(tuán)碩大無(wú)朋的高能離子云,在遙遠(yuǎn)而神秘的太空中迅疾地飄移"; var tokens = posSeg.Cut(s); Console.WriteLine(string.Join(" ", tokens.Select(token => string.Format("{0}/{1}", token.Word, token.Flag))));
5. Tokenize:返回詞語(yǔ)在原文的起止位置
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. 并行分詞(暫未實(shí)現(xiàn))7. 與Lucene.NET的集成jiebaForLuceneNet項(xiàng)目提供了與Lucene.NET的簡(jiǎn)單集成,更多信息請(qǐng)看:jiebaForLuceneNet 8. 其它詞典jieba分詞亦提供了其它的詞典文件:
9. 分詞速度
10. 命令行分詞Segmenter.Cli項(xiàng)目build之后得到j(luò)iebanet.ext,它的選項(xiàng)和實(shí)例用法如下: -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
|
|