「結巴」中文分詞:
演算法
1)基於字首詞典實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (dag);
2)採用了動態規劃查詢最大概率路徑, 找出基於詞頻的最大切分組合;
3)對於未登入詞,採用了基於漢字成詞能力的 hmm 模型,使用了 viterbi 演算法。
1、分詞
支援三種分詞模式:
精確模式,試圖將句子最精確地切開,適合文字分析;
全模式,把句子中所有的可以成詞的詞語都掃瞄出來, 速度非常快,但是不能解決歧義;
搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
import jieba
seg1 = jieba.cut("好好學學python,有用。", cut_all=true)
print('全模式:', ' '.join(seg1))
seg2 = jieba.cut("好好學學python,有用。", cut_all=false)
print("精確模式(也是預設模式):", ' '.join(seg2))
seg3 = jieba.cut_for_search("好好學學python,有用。")
print("搜尋引擎模式:", ' '.join(seg3))
print("\n")
seg_list1 = jieba.lcut("好好學學python,有用。", cut_all=true)
print(seg_list1)
seg_list2 = jieba.lcut("好好學學python,有用。", cut_all=false)
print(seg_list2)
seg_list_search = jieba.lcut_for_search("好好學學python,有用。")
print(seg_list_search)
輸出:
全模式: 好好 好好學 好學 學學 python 有用
精確模式(也是預設模式): 好好 學學 python , 有用 。
搜尋引擎模式: 好好 學學 python , 有用 。
['好好', '好好學', '好學', '學學', 'python', '', '有用', '', '']
['好好', '學學', 'python', ',', '有用', '。']
['好好', '學學', 'python', ',', '有用', '。']
特別地:
jieba.cut以及jieba.cut_for_search返回的結構都是乙個可迭代的generator,可以使用 for 迴圈來獲得分詞後得到的每乙個詞語,或者用jieba.lcut以及jieba.lcut_for_search直接返回list。
2、詞性標註
import jieba.posseg as pseg
words = pseg.cut("好好學習,天天向上。")
for word, flag in words:
print('%s %s' % (word, flag))
輸出:
好好學習 n
, x天天向上 l
。 x
語法:
jieba.analyse.extract_tags(sentence, topk=20, withweight=false, allowpos=())
import jieba.analyse
keyword = jieba.analyse.extract_tags('流雲在天邊,行囊在眼前,有一條通往太陽的路無邊又無沿。')
print(keyword)
keywords = jieba.analyse.extract_tags('流雲在天邊,行囊在眼前,有一條通往太陽的路無邊又無沿。',
topk=5, withweight=true)
print(keywords)
輸出:
['流雲', '行囊', '天邊', '無邊', '通往', '太陽', '眼前', '一條']
[('流雲', 1.33032263925), ('行囊', 1.20652280124125), ('天邊', 1.1546548197325), ('無邊', 1.02799048121375), ('通往', 0.90122942182)]
語法:
jieba.analyse.textrank(sentence, topk=20, withweight=false, allowpos=(『ns』, 『n』, 『vn』, 『v』))直接使用,介面相同,注意預設過濾詞性。
**:
mihalcea r, tarau p. textrank: bringing order into texts[j]. emnlp, 2004:404-411.
基本思想:
import jieba.analyse
keyword = jieba.analyse.textrank('流雲在天邊,行囊在眼前,有一條通往太陽的路無邊又無沿。')
print(keyword)
keywords = jieba.analyse.textrank('流雲在天邊,行囊在眼前,有一條通往太陽的路無邊又無沿。',
topk=30, withweight=true)
print(keywords)
輸出:
['行囊', '流雲']
[('行囊', 1.0), ('流雲', 0.9961264494011037)]
使用cpython重寫了jieba分詞庫中計算dag和hmm中的vitrebi函式,速度得到大幅提公升。 python中文分詞工具 結巴分詞jieba
支援三種分詞模式 精確模式,試圖將句子最精確地切開,適合文字分析 全模式,把句子中所有的可以成詞的詞語都掃瞄出來,速度非常快,但是不能解決歧義 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。支援繁體分詞 支援自定義詞典 基於字首詞典實現高效的詞圖掃瞄,生成句子中...
中文分詞工具 Jieba
jieba分詞值基於規則和統計這兩類方法。其首先基於字首詞典進行詞圖掃瞄,字首詞典是指詞典中的詞按照字首的包含順序排列的,從而形成一種層級包含結構。這種字首詞典的好處便是可以快速構建包含全部可能分詞結果的有向無環圖,這個圖包含多條分詞路徑,無環是指節點間不構成閉環。然後基於標註語料,使用動態規劃演算...
python中文分詞 結巴分詞
中文分詞是中文文字處理的乙個基礎性工作,結巴分詞利用進行中文分詞。其基本實現原理有三點 基於trie樹結構實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 dag 採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合 對於未登入詞,採用了基於漢字成詞能力的hmm模型,使用了...