首頁  >  文章  >  後端開發  >  asp.net下的中文分詞檢索工具分享

asp.net下的中文分詞檢索工具分享

黄舟
黄舟原創
2017-10-08 09:34:522231瀏覽

jieba是python下的一個檢索庫, 有人將這個庫移植到了asp.net 平台下, 完全可以替代lucene.net以及盤古分詞的搭配

之所以寫這個, 其實是因為昨天面試時, 被問到網站的關鍵字檢索你怎麼做?我就是說了下sql模糊查詢以及sql語句優化, 快取。以前接觸過關鍵字分詞, 但是在.net平台下沒有成熟的分詞檢索庫, 不像java有lucene, 儘管也移植到了.net, 但是更新慢。我之前學python的時候留意到了python的分詞檢索, 以及做詞雲, 就想著有沒有python的分詞檢索庫移植到了.net的查了下python的jieba庫 果然有移植的!
原文介紹: jieba中文分詞的.NET版本:jieba.NET 
.NET平台上常見的分詞組件是盤古分詞,但是已經好久沒有更新了。最明顯的是內建字典,jieba的字典有50萬個詞條,而盤古的字典是17萬,這樣會造成明顯不同的分詞效果。另外,對於未登錄詞,jieba“採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法”,效果看起來也不錯。

我們直接在VS2013的nuget包管理器裡面搜尋下載也行:

#看到評論裡面有人說, 將工信處女幹事每月經過下屬科室都要親口交代24口交換器等技術性裝置的安裝工作分詞試試, 能分好就不錯, 我自己測試了下:


var segmenter = new JiebaSegmenter();

            Console.WriteLine("原检索语句: 工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作");            
            var segments1 = segmenter.Cut("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作", cutAll: true);
            Console.WriteLine("[全模式]: {0}", string.Join("/ ", segments1));            
            var segments2 = segmenter.Cut("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作");  // 默认为精确模式
            Console.WriteLine("【精确模式】:{0}", string.Join("/ ", segments2));            
            var segments3 = segmenter.Cut("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作");  // 默认为精确模式,同时也使用HMM模型
            Console.WriteLine("【新词识别】:{0}", string.Join("/ ", segments3));            
            var segments4 = segmenter.CutForSearch("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"); // 搜索引擎模式
            Console.WriteLine("【搜索引擎模式】:{0}", string.Join("/ ", segments4));            
            var segments5 = segmenter.Cut("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作");
            Console.WriteLine("【歧义消除】:{0}", string.Join("/ ", segments5));

            Console.Read();

運行結果:

不錯吧, 除去全模式外, 其餘的都能滿足我們人所讀的順序

以上是asp.net下的中文分詞檢索工具分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn