在Hanlp詞典和jieba詞典中手動添加未登錄詞

在使用Hanlp詞典或者jieba詞典進行分詞的時候,會出現分詞不準的情況,原因是內置詞典中並沒有收錄當前這個詞,也就是我們所說的未登錄詞,只要把這個詞加入到內置詞典中就可以解決類似問題,如何操作呢,下面我們來看一下:

一,在Hanlp詞典中添加未登錄詞
1.找到hanlp內置詞典目錄
位於D:\hnlp\hanlp_code\hanlp\data\dictionary\custom

也就是Hanlp安裝包中的data\dictionary\custom下目錄

在Hanlp詞典和jieba詞典中手動添加未登錄詞

2.將未登錄詞以詞名,詞性,詞頻的格式添加到文件中(句首或者句尾都可以)

在Hanlp詞典和jieba詞典中手動添加未登錄詞
3.將字典的同名bin文件刪除掉
執行文件時讀取的是bin文件,必須刪掉後等下次執行時重新生成,新字典才發揮作用

在Hanlp詞典和jieba詞典中手動添加未登錄詞
4.使用新字典重新執行文件
執行時會遇到沒有相關bin文件的提示,不過放心,程序會自動生成一個新的bin文件,騷等片刻,就好了。

在Hanlp詞典和jieba詞典中手動添加未登錄詞

驗證結果是否正確

在Hanlp詞典和jieba詞典中手動添加未登錄詞

 

二,在jieba詞典中添加未登錄詞
先來看看沒添加登錄詞的效果

在Hanlp詞典和jieba詞典中手動添加未登錄詞

好我們需要開始添加未登錄詞了

1.新建一個dict.txt文件,將未登錄詞直接添加到txt文件中
在Hanlp詞典和jieba詞典中手動添加未登錄詞

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.驗證分詞是否有效

在Hanlp詞典和jieba詞典中手動添加未登錄詞

哦,好的,就是這樣!完美!

文章來源於小魚兒的博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章