欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python Jieba分詞處理詳解【模式,詞庫(kù)的添加、刪除,自定義詞庫(kù),失敗處理等】

 更新時(shí)間:2023年07月14日 08:46:07   作者:專(zhuān)注算法的馬里奧學(xué)長(zhǎng)  
這篇文章主要介紹了python Jieba分詞處理,結(jié)合實(shí)例形式詳細(xì)分析了python 使用jieba分詞的模式,詞庫(kù)的添加、刪除,自定義詞庫(kù),失敗處理等相關(guān)操作技巧,需要的朋友可以參考下

Jieba(結(jié)巴)是一個(gè)中文分詞第三方庫(kù),它可以幫助我們將一段中文文本分成一個(gè)個(gè)獨(dú)立的詞語(yǔ)。Jieba具有以下特點(diǎn):

  1. 簡(jiǎn)單易用:Jieba提供了簡(jiǎn)潔的API接口,易于使用和擴(kuò)展??梢钥焖俚貙?shí)現(xiàn)中文分詞功能。
  2. 高效準(zhǔn)確:Jieba采用了基于前綴詞典和動(dòng)態(tài)規(guī)劃算法的分詞方法,能夠高效準(zhǔn)確地處理各種中文文本。
  3. 支持多種分詞模式:Jieba提供了三種分詞模式:精確模式、全模式和搜索引擎模式,可以根據(jù)不同的應(yīng)用場(chǎng)景選擇合適的模式。
  4. 支持用戶自定義詞典:Jieba允許用戶自定義詞典,可以根據(jù)實(shí)際需要添加新的詞語(yǔ)或調(diào)整已有詞語(yǔ)的詞頻和詞性等信息。
  5. 支持并發(fā)分詞:Jieba采用多進(jìn)程和協(xié)程的方式實(shí)現(xiàn)并發(fā)分詞,可以提高分詞速度和效率。

除了中文分詞功能之外,Jieba還提供了關(guān)鍵詞提取、詞性標(biāo)注、繁體轉(zhuǎn)簡(jiǎn)體、詞語(yǔ)拼音轉(zhuǎn)換等功能??梢詽M足不同的中文文本處理需求。image.png

1 Jieba的搜索模式

1.1 全模式

全模式會(huì)將需要分詞的文本中所有可能的詞語(yǔ)都進(jìn)行匹配,因此會(huì)產(chǎn)生大量的冗余詞語(yǔ)。使用Jieba的全模式,比如我們希望把美國(guó)數(shù)據(jù)倉(cāng)庫(kù)巨頭發(fā)布開(kāi)源模型,公開(kāi)挑戰(zhàn)ChatGPT這句話進(jìn)行分詞:

import jieba    
text = '美國(guó)數(shù)據(jù)倉(cāng)庫(kù)巨頭發(fā)布開(kāi)源模型,公開(kāi)挑戰(zhàn)ChatGPT'  
seg_list = jieba.cut(text, cut_all=True)  
print("/".join(seg_list))

在上述代碼中,cut_all=True指定了使用全模式進(jìn)行分詞,"/".join(seg_list)會(huì)將分詞結(jié)果以斜杠分隔輸出。這段的輸出結(jié)果為:image.png

可以看到分詞結(jié)果中,數(shù)據(jù)倉(cāng)庫(kù)被分為了數(shù)據(jù)、倉(cāng)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)三個(gè)獨(dú)立的詞語(yǔ),因此會(huì)產(chǎn)生大量的冗余詞語(yǔ)。全模式適合于對(duì)文本中所有可能的詞語(yǔ)進(jìn)行匹配的場(chǎng)景,例如搜索引擎的索引處理、關(guān)鍵詞提取等。

1.2 精確模式

精確模式會(huì)將需要分詞的文本中可能存在的詞語(yǔ)都進(jìn)行匹配,但不會(huì)產(chǎn)生冗余詞語(yǔ)。使用Jieba的精確模式,可以通過(guò)以下方式實(shí)現(xiàn):

import jieba    
text = '美國(guó)數(shù)據(jù)倉(cāng)庫(kù)巨頭發(fā)布開(kāi)源模型,公開(kāi)挑戰(zhàn)ChatGPT'  
seg_list = jieba.cut(text, cut_all=False)  
print("/".join(seg_list))

在上述代碼中,cut_all=False指定了使用精確模式進(jìn)行分詞。這段的輸出結(jié)果為:image.png

可以看到,在精確模式下,Jieba會(huì)將數(shù)據(jù)倉(cāng)庫(kù)作為一個(gè)詞語(yǔ)進(jìn)行匹配,不會(huì)產(chǎn)生冗余詞語(yǔ)。精確模式適合于對(duì)文本中存在的詞語(yǔ)進(jìn)行匹配的場(chǎng)景,例如文本分類(lèi)、情感分析等。精確模式不會(huì)產(chǎn)生冗余詞語(yǔ),因此可以得到準(zhǔn)確的分詞結(jié)果。

1.3 搜索引擎模式

搜索引擎模式使用了基于前綴匹配算法的正向最大匹配(FMM)和逆向最大匹配(RMM)算法,會(huì)對(duì)需要分詞的文本進(jìn)行分詞,并且盡可能多地匹配分詞結(jié)果。因此,在分詞時(shí),搜索引擎模式會(huì)優(yōu)先匹配較長(zhǎng)的詞語(yǔ)。使用Jieba的搜索引擎模式,可以通過(guò)以下方式實(shí)現(xiàn):

import jieba   
text = '美國(guó)數(shù)據(jù)倉(cāng)庫(kù)巨頭發(fā)布開(kāi)源模型,公開(kāi)挑戰(zhàn)ChatGPT'  
seg_list = jieba.cut_for_search(text)  
print("/".join(seg_list))

這段函數(shù)的輸出結(jié)果為;

image.png

由于我們的實(shí)例文本過(guò)段,在這里的結(jié)果與全模式的分詞結(jié)果并未表現(xiàn)出區(qū)別。搜索引擎模式適合于對(duì)長(zhǎng)文本進(jìn)行分詞的場(chǎng)景,例如自然語(yǔ)言處理、信息檢索等。搜索引擎模式使用了基于前綴匹配算法的正向最大匹配(FMM)和逆向最大匹配(RMM)算法,可以盡可能多地匹配分詞結(jié)果,但可能會(huì)對(duì)一些新詞造成誤判,需要進(jìn)行進(jìn)一步的處理和校對(duì)。

1.4 分詞結(jié)果的形式選擇

正常情況下,分詞結(jié)果將會(huì)以生成器的形式保存,這意味著,當(dāng)我們像上面一樣將分詞結(jié)果全部打印之后,這個(gè)生成器就不能二次使用了。image.png

如果希望以列表的形式報(bào)錯(cuò)結(jié)果。可以將生成器轉(zhuǎn)為list格式:

seg_list = jieba.cut(text)  
print(type(seg_list))  
seg_list = list(seg_list)  
print(type(seg_list))

image.png

也可以直接指定函數(shù)的返回為list,此時(shí)我們需要使用函數(shù)lcut

seg_list = jieba.lcut(text)  
print(type(seg_list))

image.png

2 詞庫(kù)的添加與刪除

在Jieba中,詞庫(kù)是指用于分詞的詞典,Jieba提供了內(nèi)置的詞典和用戶自定義的詞典。用戶可以通過(guò)添加或刪除詞語(yǔ)來(lái)定制自己的詞典。

2.1 添加單個(gè)詞語(yǔ)

在Jieba中,可以通過(guò)調(diào)用add_word(word, freq=None, tag=None)方法來(lái)向詞庫(kù)中添加單個(gè)詞語(yǔ)。其中,word為需要添加的詞語(yǔ),freq為該詞語(yǔ)的詞頻,tag為該詞語(yǔ)的詞性。例如,假設(shè)需要將詞語(yǔ)開(kāi)源模型添加到Jieba的詞庫(kù)中,可以通過(guò)如下代碼實(shí)現(xiàn):

import jieba  
text = '美國(guó)數(shù)據(jù)倉(cāng)庫(kù)巨頭發(fā)布開(kāi)源模型,公開(kāi)挑戰(zhàn)ChatGPT'  
jieba.add_word("開(kāi)源模型")  
seg_list = jieba.cut(text)  
print('/'.join(seg_list))

此時(shí),開(kāi)源模型就被分為一個(gè)詞了:image.png

2.2 添加自定義詞典

當(dāng)需要添加的詞過(guò)多時(shí),建議使用添加詞典的方式。自定義詞典可以包含用戶自己添加的詞語(yǔ)及其詞頻和詞性等信息。添加自定義詞典的方法如下:

  1. 創(chuàng)建一個(gè)文本文件,例如userdict.txt,用于存儲(chǔ)自定義詞典。每行格式為:詞語(yǔ) 詞頻 詞性。
  2. 將需要添加的詞語(yǔ)及其詞頻和詞性等信息寫(xiě)入到userdict.txt中,每個(gè)詞語(yǔ)一行。
  3. 調(diào)用Jieba的load_userdict()方法加載自定義詞典文件。詞典示例如下:
開(kāi)源模型 10 n 
深度學(xué)習(xí) 8 n

其中,108為詞語(yǔ)的詞頻,n為詞語(yǔ)的詞性。之后調(diào)用詞典即可。

jieba.load_userdict("userdict.txt")

詞典加入之后,再次進(jìn)行分詞,詞典中的內(nèi)容就可以被分出來(lái)了。

2.3 詞庫(kù)的刪除

在Jieba中,可以通過(guò)調(diào)用del_word(word)方法來(lái)刪除詞庫(kù)中的單個(gè)詞語(yǔ)。其中,word為需要?jiǎng)h除的詞語(yǔ)。剛剛我們?cè)谠~典中添加了開(kāi)源模型這個(gè)詞,接下來(lái)我們將其刪除:

jieba.del_word("開(kāi)源模型")
seg_list = jieba.cut(text)  
print('/'.join(seg_list))

image.png

此時(shí)開(kāi)源和模型就又變?yōu)閮蓚€(gè)詞了。

2.4 添加詞庫(kù)失效的情況

如果想要添加的詞包含標(biāo)點(diǎn)符號(hào),則這個(gè)添加操作會(huì)失效(無(wú)論是添加單個(gè)的詞語(yǔ)還是使用自定義字典),比如:

import jieba  
text = '美國(guó)數(shù)據(jù)倉(cāng)庫(kù)巨頭發(fā)布<開(kāi)源模型>,公開(kāi)挑戰(zhàn)ChatGPT'  
jieba.add_word("<開(kāi)源模型>")  
seg_list = jieba.cut(text)  
print('/'.join(seg_list))

這段代碼希望將<開(kāi)源模型>分為一個(gè)詞,然而jieba默認(rèn)標(biāo)點(diǎn)符號(hào)會(huì)被單獨(dú)分割,因此這個(gè)添加詞庫(kù)的操作會(huì)失效,不但<開(kāi)源模型>不能被分出來(lái),開(kāi)源模型也不能被分出來(lái)。image.png

因此,在添加詞庫(kù)時(shí)要避免這種情況的出現(xiàn)。

python 結(jié)巴分詞具體下載與使用方法可參考github相關(guān)說(shuō)明:

https://github.com/livemirror/jieba

相關(guān)文章

最新評(píng)論