支持三種分詞模式:
為文安等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及文安網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、網(wǎng)站設計、文安網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
精確模式,試圖將句子最精確地切開,適合文本分析;
全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非???,但是不能解決歧義。具體來說,分詞過程不會借助于詞頻查找最大概率路徑,亦不會使用HMM;
搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
支持繁體分詞
支持添加自定義詞典和自定義詞
下載代碼使用VS 2017 打開,或者使用VS Code 打開項目。
選擇jieba.NET 為起始項目,Program.cs 代碼如下:
class Program { static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 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)); Console.ReadKey(); } }
運行程序結(jié)果如下:
JiebaSegmenter.Cut方法可通過cutAll來支持兩種模式,精確模式和全模式。精確模式是最基礎和自然的模式,試圖將句子最精確地切開,適合文本分析;而全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度更快,但是不能解決歧義,因為它不會掃描最大概率路徑,也不會通過HMM去發(fā)現(xiàn)未登錄詞。
CutForSearch采用的是搜索引擎模式,在精確模式的基礎上對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
詞性標注采用和ictclas兼容的標記法,關于ictclas和jieba中使用的標記法列表,請參考:詞性標記。
在TestDemo.cs 中PosCutDemo 方法為詞性標注。
public void PosCutDemo() { 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)))); }
調(diào)用結(jié)果如下:
現(xiàn)在來嘗試提取其中的關鍵詞。jieba.NET提供了TF-IDF和TextRank兩種算法來提取關鍵詞,TF-IDF對應的類是JiebaNet.Analyser.TfidfExtractor,TextRank的是JiebaNet.Analyser.TextRankExtractor。
public void ExtractTagsDemo() { var text = "程序員(英文Programmer)是從事程序開發(fā)、維護的專業(yè)人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限并不非常清楚,特別是在中國。軟件從業(yè)人員分為初級程序員、高級程序員、系統(tǒng)分析員和項目經(jīng)理四大類。"; var extractor = new TfidfExtractor(); var keywords = extractor.ExtractTags(text); foreach (var keyword in keywords) { Console.WriteLine(keyword); } } public void ExtractTagsDemo2() { var text = @"在數(shù)學和計算機科學/算學之中,算法/算則法(Algorithm)為一個計算的具體步驟,常用于計算、數(shù)據(jù)處理和自動推理。精確而言,算法是一個表示為有限長列表的有效方法。算法應包含清晰定義的指令用于計算函數(shù)。 算法中的指令描述的是一個計算,當其運行時能從一個初始狀態(tài)和初始輸入(可能為空)開始,經(jīng)過一系列有限而清晰定義的狀態(tài)最終產(chǎn)生輸出并停止于一個終態(tài)。一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)移不一定是確定的。隨機化算法在內(nèi)的一些算法,包含了一些隨機輸入。 形式化算法的概念部分源自嘗試解決希爾伯特提出的判定問題,并在其后嘗試定義有效計算性或者有效方法中成形。這些嘗試包括庫爾特·哥德爾、雅克·埃爾布朗和斯蒂芬·科爾·克萊尼分別于1930年、1934年和1935年提出的遞歸函數(shù),阿隆佐·邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,依然常有直覺想法難以定義為形式化算法的情況。"; var extractor = new TfidfExtractor(); var keywords = extractor.ExtractTags(text, 10, Constants.NounAndVerbPos); foreach (var keyword in keywords) { Console.WriteLine(keyword); } }
ExtractTagsDemo 方法為提取所有關鍵詞。
ExtractTagsDemo2 方法為提取前十個僅包含名詞和動詞的關鍵詞
ExtractTagsWithWeight方法的返回結(jié)果中除了包含關鍵詞,還包含了相應的權重值。
public void TokenizeDemo() { 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); } }
調(diào)用 TokenizeDemo 方法會返回對應位置
代碼加入
var segmenter = new JiebaSegmenter(); var segments = segmenter.Cut(@".NETCore2.0的發(fā)布時間,.NET Core 2.0預覽版及.NET Standard 2.0 Preview大概在5月中旬或下旬發(fā)布。"); Console.WriteLine("【精確模式】:{0}", string.Join("/ ", segments)); segmenter.AddWord("發(fā)布時間"); segmenter.AddWord(".NETCore2.0"); segments = segmenter.Cut(@".NETCore2.0的發(fā)布時間,.NET Core 2.0預覽版及.NET Standard 2.0 Preview大概在5月中旬或下旬發(fā)布。"); Console.WriteLine("【精確模式】:{0}", string.Join("/ ", segments));
調(diào)用 segmenter.AddWord添加新詞,這里添加了發(fā)布時間及.NETCore2.0
可以看到新加入的詞被識別出來。
詞典加入
詞典格式如下:詞典格式與主詞典格式相同,即一行包含:詞、詞頻(可省略)、詞性(可省略),用空格隔開。詞頻省略時,分詞器將使用自動計算出的詞頻保證該詞被分出。
創(chuàng)新辦 3 i 云計算 5凱特琳 nz 臺中 機器學習 3深度學習 8linezero 2
然后使用segmenter.LoadUserDict() 方法,傳入詞典路徑。
更多詳細內(nèi)容,可以查看代碼及readme.md
網(wǎng)頁題目:.NETCore中文分詞組件jieba.NETCore
文章URL:http://aaarwkj.com/article34/pccdpe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站設計、網(wǎng)頁設計公司、做網(wǎng)站、品牌網(wǎng)站設計、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)