隨著技術的不斷發展,中文分詞作為自然語言處理的一項基礎性技術,越來越受到關注。在中文分詞庫中,jieba庫是最為流行和廣泛應用的一個。而jieba庫中的自定義詞典更是許多人所青睞的一項功能。下面我們將從幾個方面對jieba自定義詞典進行詳細的闡述。
一、自定義詞典的作用
1、提高分詞準確率。
自定義詞典可以幫助jieba庫實現對特定文檔或者應用場景中使用的非通用辭彙的識別,從而提高分詞的準確率。比如,在醫學領域中,有一些醫學術語是標準詞典中沒有收錄的,如果我們在使用jieba進行分詞時不將這些專業辭彙加入到自定義詞典中,那麼這些辭彙就會被分成兩部分或者被分成多個詞。
2、自定義名詞,從而符合業務場景。
在特定的業務場景中,通用的詞庫不一定能夠滿足實際情況,而自定義詞庫可以幫助我們滿足特定業務場景的需求,從而使得分詞結果更加符合業務場景。
二、jieba的自定義詞典相關函數詳解及使用示例
1、 add_word(word, freq=None, tag=None)
import jieba jieba.add_word('蜂窩煤') # 將詞蜂窩煤加入jieba的自定義詞典 words = jieba.cut('中國礦業大學的煤礦里挖出了大量的蜂窩煤') print('/'.join(words))
上述代碼實現了向jieba的自定義詞典中添加一個新詞「蜂窩煤」,然後利用jieba庫來進行分詞並列印出分詞結果。執行結果是:中國礦業大學/的/煤礦里/挖出/了/大量/的/蜂窩煤。可以看出,添加了自定義詞典後,分詞結果更加完整,且「蜂窩煤」被識別為一個詞。
2、 del_word(word)
import jieba jieba.del_word('蜂窩煤') # 將詞蜂窩煤從jieba的自定義詞典中刪除 words = jieba.cut('中國礦業大學的煤礦里挖出了大量的蜂窩煤') print('/'.join(words))
上述代碼實現了從jieba的自定義詞典中刪除一個詞「蜂窩煤」,然後利用jieba庫來進行分詞並列印出分詞結果。執行結果是:中國礦業大學的/煤礦里/挖出/了/大量/的。可以看出,刪除了自定義詞典中的辭彙後,分詞結果發生了變化。
3、load_userdict(file_name)
load_userdict函數可以讓我們從外部文件中導入自定義辭彙,提高程序的靈活性。
import jieba jieba.load_userdict('userdict.txt') # 載入自定義詞典 words = jieba.cut('我來到北京清華大學') print('/'.join(words))
上述代碼中,我們通過load_userdict函數將自定義辭彙從userdict.txt文件中載入到jieba的自定義詞典中,然後再使用jieba庫進行分詞,並列印出分詞結果。由於userdict.txt中包含的自定義辭彙「清華大學」,因此可以看到分詞結果中包含了這個辭彙。
三、自定義詞典相關注意事項
1、自定義詞庫中的頻率值freq,只是為了調整分詞結果,默認都是None,不起實際作用。
2、自定義辭彙如果有多種詞性,可以通過給詞性tag進行賦值來實現。如「中國鐵建」具有「公司名」和「地名」兩種基本詞性,需要標註出來。
import jieba jieba.add_word('中國鐵建', freq=50, tag='公司名') # 加入公司名 jieba.add_word('中國鐵建', freq=50, tag='地名') # 加入地名 words = jieba.cut('中國鐵建在北京建鐵路') for word in words: print(word + "/" +jieba.lcut(word)[0].tag)
上述代碼通過add_word函數將「中國鐵建」加入到jieba的自定義詞典中,並用freq來標註出這個公司名/地名的辭彙在自定義詞典中的重要程度。然後通過cut方法來進行分詞,並用lcut方法來列印出每個分詞的詞性。執行結果是:中國鐵建/公司名/在/北京/建/鐵路。
3、自定義過多的辭彙會導致jieba運行變慢,同時不一定會對分詞結果帶來提升。
四、總結
本文對jieba庫的自定義詞典進行了詳細的解釋和說明,並介紹了相關函數的使用方法。自定義詞典在jieba庫中具有重要的作用,可以提高分詞的準確率和符合業務場景的程度。但是在實際使用中,需要注意自定義辭彙的數量和實際的效果。
原創文章,作者:SLHIB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329623.html