天天看點

.NET Core中文分詞元件jieba.NET Core

支援三種分詞模式:

精确模式,試圖将句子最精确地切開,适合文本分析;

全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義。具體來說,分詞過程不會借助于詞頻查找最大機率路徑,亦不會使用HMM;

搜尋引擎模式,在精确模式的基礎上,對長詞再次切分,提高召回率,适合用于搜尋引擎分詞。

支援繁體分詞

支援添加自定義詞典和自定義詞

下載下傳代碼使用VS 2017 打開,或者使用VS Code 打開項目。

選擇jieba.NET 為起始項目,Program.cs 代碼如下:

運作程式結果如下:

.NET Core中文分詞元件jieba.NET Core

JiebaSegmenter.Cut方法可通過cutAll來支援兩種模式,精确模式和全模式。精确模式是最基礎和自然的模式,試圖将句子最精确地切開,适合文本分析;而全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度更快,但是不能解決歧義,因為它不會掃描最大機率路徑,也不會通過HMM去發現未登入詞。

CutForSearch采用的是搜尋引擎模式,在精确模式的基礎上對長詞再次切分,提高召回率,适合用于搜尋引擎分詞。

詞性标注采用和ictclas相容的标記法,關于ictclas和jieba中使用的标記法清單,請參考:詞性标記。

在TestDemo.cs 中PosCutDemo 方法為詞性标注。

調用結果如下:

.NET Core中文分詞元件jieba.NET Core

現在來嘗試提取其中的關鍵詞。jieba.NET提供了TF-IDF和TextRank兩種算法來提取關鍵詞,TF-IDF對應的類是JiebaNet.Analyser.TfidfExtractor,TextRank的是JiebaNet.Analyser.TextRankExtractor。

ExtractTagsDemo 方法為提取所有關鍵詞。

.NET Core中文分詞元件jieba.NET Core

ExtractTagsDemo2 方法為提取前十個僅包含名詞和動詞的關鍵詞

.NET Core中文分詞元件jieba.NET Core

ExtractTagsWithWeight方法的傳回結果中除了包含關鍵詞,還包含了相應的權重值。

調用 TokenizeDemo 方法會傳回對應位置

.NET Core中文分詞元件jieba.NET Core

代碼加入

調用 segmenter.AddWord添加新詞,這裡添加了釋出時間及.NETCore2.0

.NET Core中文分詞元件jieba.NET Core

可以看到新加入的詞被識别出來。

詞典加入

詞典格式如下:詞典格式與主詞典格式相同,即一行包含:詞、詞頻(可省略)、詞性(可省略),用空格隔開。詞頻省略時,分詞器将使用自動計算出的詞頻保證該詞被分出。

然後使用segmenter.LoadUserDict() 方法,傳入詞典路徑。

      本文轉自zsdnr  51CTO部落格,原文連結:http://blog.51cto.com/12942149/1949721,如需轉載請自行聯系原作者

繼續閱讀