在使用Hanlp詞典或者jieba詞典進行分詞的時候,會出現分詞不準的情況,原因是內置詞典中並沒有收錄當前這個詞,也就是我們所說的未登錄詞,只要把這個詞加入到內置詞典中就可以解決類似問題,如何操作呢,下面我們來看一下:
一,在Hanlp詞典中添加未登錄詞
1.找到hanlp內置詞典目錄
位於D:\hnlp\hanlp_code\hanlp\data\dictionary\custom
也就是Hanlp安裝包中的data\dictionary\custom下目錄
2.將未登錄詞以詞名,詞性,詞頻的格式添加到文件中(句首或者句尾都可以)
3.將字典的同名bin文件刪除掉
執行文件時讀取的是bin文件,必須刪掉後等下次執行時重新生成,新字典才發揮作用
4.使用新字典重新執行文件
執行時會遇到沒有相關bin文件的提示,不過放心,程序會自動生成一個新的bin文件,騷等片刻,就好了。
驗證結果是否正確
二,在jieba詞典中添加未登錄詞
先來看看沒添加登錄詞的效果
好我們需要開始添加未登錄詞了
1.新建一個dict.txt文件,將未登錄詞直接添加到txt文件中
2.加載dict.txt文件
這個過程有一步要動態調整詞頻,因爲詞典默認是從詞頻較高的詞開始匹配,調整未登錄詞的詞頻靠前,這樣可以優先匹配
#-- coding=utf8 --
import jieba
import re
#將添加有未登錄詞的詞典加載進來
jieba.load_userdict("D:\hnlp\hanlp_code\dict.txt")
#動態調整詞頻,讓未登錄詞的詞頻自動靠前,這樣可以優先匹配
[jieba.suggest_freq(line.strip(), tune=True) for line in open("dict.txt",'r',encoding='utf8')]
string="TNM分期不太能明確地區分 ,以及輔助治療(氟尿嘧啶單藥或聯合奧沙利鉑)"
words=jieba.cut(string,HMM=False)
print('/'.join(words))
3.驗證分詞是否有效
哦,好的,就是這樣!完美!
文章來源於小魚兒的博客