|
jieba.NET是jieba中文分詞的.NET版本(C#實現(xiàn))。 當前版本為0.38.2,基于jieba 0.38,提供與jieba一致的功能與接口,以后可能會在jieba基礎上提供其它擴展功能。關(guān)于jieba的實現(xiàn)思路,可以看看這篇wiki里提到的資料。 如果您在開發(fā)中遇到與分詞有關(guān)的需求或困難,請?zhí)峤灰粋€Issue,I see u:) 特點
算法
安裝和配置當前版本基于.NET Framework 4.5,可以手動引用項目,也可以通過NuGet添加引用: PM> Install-Package jieba.NET
安裝之后,在packages\jieba.net目錄下可以看到Resources目錄,這里面是jieba.Net運行所需的詞典及其它數(shù)據(jù)文件,最簡單的配置方法是將整個Resources目錄拷貝到程序集所在目錄,這樣jieba.NET會使用內(nèi)置的默認配置值。如果希望將這些文件放在其它位置,則要在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("他來到了網(wǎng)易杭研大廈"); // 默認為精確模式,同時也使用HMM模型 Console.WriteLine("【新詞識別】:{0}", string.Join("/ ", segments)); segments = segmenter.CutForSearch("小明碩士畢業(yè)于中國科學院計算所,后在日本京都大學深造"); // 搜索引擎模式 Console.WriteLine("【搜索引擎模式】:{0}", string.Join("/ ", segments)); segments = segmenter.Cut("結(jié)過婚的和尚未結(jié)過婚的"); Console.WriteLine("【歧義消除】:{0}", string.Join("/ ", segments)); 輸出
2. 添加自定義詞典加載詞典
如
調(diào)整詞典
3. 關(guān)鍵詞提取基于TF-IDF算法的關(guān)鍵詞提取
基于TextRank算法的關(guān)鍵詞抽取
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. 并行分詞(暫未實現(xiàn))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
|
|
|