1. 程式人生 > >jieba之sedict(自定義字典)

jieba之sedict(自定義字典)

程式碼:

import jieba

string = "李小福是創新辦主任也是雲端計算方面的專家"

# 精確模式分詞
cut_result = jieba.cut(string)
print("===" * 20)
print("/".join(cut_result))

# 創新辦沒有識別出來
# 用自定義詞典來定義創新辦
# 創新辦 3 i
jieba.load_userdict("userdict.txt")
cut_result = jieba.cut(string)
print("===" * 20)
# 已經識別出來了
print("/".join(cut_result))
print("===" * 20)
# 搜尋模式
print(jieba.lcut_for_search(string))


# 具有一定的新詞識別能力
string = "李老福是創新辦主任也是雲端計算方面的專家"
cut_result = jieba.cut(string)
print("===" * 20)
print("/".join(cut_result))

執行結果:

============================================================
李小福/是/創新辦/主任/也/是/雲/計算/方面/的/專家
============================================================
李小福/是/創新辦/主任/也/是/雲/計算/方面/的/專家
============================================================
['李小福', '是', '創新', '創新辦', '主任', '也', '是', '雲', '計算', '方面', '的', '專家']
============================================================
李老福/是/創新辦/主任/也/是/雲/計算/方面/的/專家

程式碼:

# 動態調整詞的方法
# 希望 “小王仁莊” 不被分開, 如今被分開了
string = "我住在小王仁莊"
cut_result = jieba.cut(string)
print("===" * 20)
print("/".join(cut_result))

# 新增到自定義詞典
jieba.add_word("小王仁莊")
cut_result = jieba.cut(string)
print("===" * 20)
# 哈哈,分隔開了吧
print("/".join(cut_result))


# 詞頻和詞性
# 如果詞頻太小也不會被分開
jieba.add_word("小王仁莊", freq=0.1, tag=None)
cut_result = jieba.cut(string)
print("===" * 20)
# 怎麼樣,沒有分開
print("/".join(cut_result))


# 那麼,該如何尋找詞頻呢?
print("===" * 20)
# 詞頻為1
print(jieba.suggest_freq("小王仁莊", tune=True))

# 將詞頻設定為1看看可不可以分開
jieba.add_word("小王仁莊", freq=1, tag=None)
cut_result = jieba.cut(string)
print("===" * 20)
# 成功分開
print("/".join(cut_result))

執行結果:

============================================================
我/住/在/小王仁莊
============================================================
我/住/在/小王仁莊
============================================================
我/住/在/小/王仁莊
============================================================
1
============================================================
我/住/在/小王仁莊

程式碼:

# 刪除字典中的一些詞
jieba.del_word("小王仁莊")
# 看看還能不能識別出來
cut_result = jieba.cut(string)
print("/".join(cut_result))

執行結果:

我/住/在/小/王仁莊

程式碼:

# 總結

# 自定義詞典中:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒
# 李小福 2 nr
# file_name為檔案類物件或自定義詞典的路徑
jieba.load_userdict(file_name)

# 動態新增自定義詞
jieba.add_word(word, freq=None, tag=None)

# 動態刪除自定義詞
jieba.del_word(word)

# 找到合適詞頻
jieba.suggest_freq(segment, tune=True)