NLP 之 結巴分詞

2021-10-05 12:11:40 字數 1777 閱讀 4656

結巴分詞是當前效果較好的一種中文分詞器,支援中文簡體、中文繁體分詞,同時還支援自定義詞庫。

結巴分詞支援三種分詞模式:精確模式、全模式和搜尋引擎模式。

結巴分詞自帶乙個詞典,內含20000多條詞,及詞條出現的次數與詞性。結巴分詞用到的演算法有基於trie樹的詞圖遍歷,會生成乙個dag圖,該圖是由句子中所有漢字的所有可能組合決定,採用動態規劃(dp)查詢概率最大的路徑,從而找出基於詞頻的最大切分組合,而對於結巴分詞詞典中未記錄的詞,其使用了基於漢字成詞能力的hmm模型,以及viterbi演算法。

python結巴分詞安裝

pip install jieba
結巴分詞有三種模式,具體內容在上文已有介紹。本系統分詞採用的是精確模式,使用的是基於python的jieba模組來實現。

停用詞(stop words)是指在資訊檢索中,在自然語言處理之前或之後被自動過濾的字或詞,目的是為了節省記憶體空間並提高搜尋效率。停用詞表是人工構造的,本系統使用的是哈工大停用詞表。

結巴分詞及去停用詞核心**如下:

import jieba

#分詞def stripdata(test):

# jieba 預設啟用了hmm(隱馬爾科夫模型)進行中文分詞

seg_list = jieba.cut(test) # 分詞

#獲取字典,去除停用詞

line = "/".join(seg_list)

word = stripword(line)

#print(line)

#列出關鍵字

print("\n關鍵字:\n"+word)

#停用詞分析

def stripword(seg):

keyword = open('key_word.txt', 'w+', encoding='utf-8')

print("去停用詞:\n")

wordlist =

#獲取停用詞表

stop = open('stopword.txt', 'r+', encoding='utf-8')

stopword = stop.read().split("\n")

#遍歷分詞表

for key in seg.split('/'):

#print(key)

#去除停用詞,去除單字,去除重複詞

if not(key.strip() in stopword) and (len(key.strip()) > 1) and not(key.strip() in wordlist) :

print(key)

keyword.write(key+"\n")

#停用詞去除end

stop.close()

keyword.close()

return '/'.join(wordlist)

def creat():

rawdata = open('raw.txt','r+')

text = rawdata.read()

#呼叫分詞

stripdata(text)

#end

rawdata.close()

if __name__ == '__main__' :

creat()

分詞效果

python結巴分詞

中文分詞是中文文字處理的乙個基礎性工作,結巴分詞利用進行中文分詞。其基本實現原理有三點 基於trie樹結構實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 dag 採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合 對於未登入詞,採用了基於漢字成詞能力的hmm模型,使用了...

結巴分詞jieba

全模式text 我來到北京清華大學 seg list jieba.cut text,cut all true print u 全模式 join seg list 精確模式 seg list jieba.cut text,cut all false print u 精確模式 join seg list...

python中文分詞 結巴分詞

中文分詞是中文文字處理的乙個基礎性工作,結巴分詞利用進行中文分詞。其基本實現原理有三點 基於trie樹結構實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 dag 採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合 對於未登入詞,採用了基於漢字成詞能力的hmm模型,使用了...