為什么需要在python
使用結巴分詞(jieba
)創建自己的詞典/詞庫,因為很多時候分詞給我們的結果了能剛好相反,如:不回家
變成了不,回家
;從上一篇文章文章我們已經講訴了python使用結巴中文分詞以及訓練自己的分詞詞典,基本的安裝和基本使用大家直接去看那篇文章即可,我們主要介紹如何python
創建自己的詞典。
一、創建分詞字典
1、准備詞典
創建一個dict.txt
,然后寫入你的分詞,一個詞占一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。file_name 若為路徑或二進制方式打開的文件,則文件必須為 UTF-8 編碼。
不處理 nr
不還款
中國銀行
根本打不開
2、編寫python代碼
在分詞前通過jieba.load_userdict(file_name)
來加載分詞字典:
#-*- coding:utf-8 -*- import jieba jieba.load_userdict("./dict.txt") word_list = jieba.cut("我今天不處理逾期信用貸款,因為你們中國銀行的APP根本打不開") print("|".join(word_list))
3、分詞對比
第一張,未添加字典
第二張:添加了字典
可以看出,我們更加明確了用戶的意圖,不處理
我們識別為處理
,這樣的事情在識別意圖的時候還是比較坑的!
二、使用add_word和suggest_freq
- 使用
add_word(word, freq=None, tag=None)
和del_word(word)
可在程序中動態修改詞典。 - 使用
suggest_freq(segment, tune=True)
可調節單個詞語的詞頻,使其能(或不能)被分出來。
實現代碼:
#-*- coding:utf-8 -*- import jieba jieba.suggest_freq('不處理',True) jieba.add_word('不處理',tag='d') jieba.add_word('中國銀行APP',tag='d') word_list = jieba.cut("我今天不處理逾期信用貸款,因為你們中國銀行APP根本打不開") print("|".join(word_list))
實現的結果和上面的相同,所以不做過多的對比描述
注意:
add_word
只是一次性的添加分詞字典,不是直接將內容添加到結巴庫中了;同時此方法的代碼可能比較多,所以感覺沒有方法一好
https://ptorch.com/news/204.html