结巴分词原理介绍
20220331
jieba.cut與jieba.lcut的區(qū)別_stay_foolish12的博客-CSDN博客_jieba.lcut
20211130
??????三種模式、兩個(gè)函數(shù)掌握Python結(jié)巴分詞重點(diǎn)功能
?三種劃分方法
?
1.結(jié)巴長度優(yōu)先
2.?權(quán)重相同的時(shí)候? 前面的先分? ?
zhyl? pk? ? ?
zh ylpk? ?
結(jié)果是第一種? ??
3.權(quán)重不相同的時(shí)候? ?權(quán)重大的先分
zhyl? 權(quán)重為1? ? ylpk 權(quán)重為2? 則 結(jié)果為第二種
2.分詞盡量唯一
結(jié)巴分詞的原理,結(jié)合一個(gè)面試題:有一個(gè)詞典,詞典里面有每個(gè)詞對(duì)應(yīng)的權(quán)重,有一句話,用這個(gè)詞典進(jìn)行分詞,要求分完之后的每個(gè)詞都必須在這個(gè)詞典中出現(xiàn)過,目標(biāo)是讓這句話的權(quán)重最大。?
涉及算法:
- 基于前綴詞典實(shí)現(xiàn)詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG),采用動(dòng)態(tài)規(guī)劃查找最大概率路徑,找出基于詞頻的最大切分組合;
- 對(duì)于未登錄詞,采用了基于漢字成詞能力的 HMM模型,采用Viterbi算法進(jìn)行計(jì)算;
- 基于Viterbi算法的詞性標(biāo)注;
- 分別基于tfidf和textrank模型抽取關(guān)鍵詞;
基于前綴詞典及動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)分詞
結(jié)巴分詞2--基于前綴詞典及動(dòng)態(tài)規(guī)劃實(shí)現(xiàn)分詞 - 老頑童2007 - 博客園
jieba分詞主要是基于統(tǒng)計(jì)詞典,構(gòu)造一個(gè)前綴詞典;然后利用前綴詞典對(duì)輸入句子進(jìn)行切分,得到所有的切分可能,根據(jù)切分位置,構(gòu)造一個(gè)有向無環(huán)圖;通過動(dòng)態(tài)規(guī)劃算法,計(jì)算得到最大概率路徑,也就得到了最終的切分形式。
1.前綴詞典構(gòu)建:如統(tǒng)計(jì)詞典中的詞“北京大學(xué)”的前綴分別是“北”、“北京”、“北京大”;詞“大學(xué)”的前綴是“大”。
2.有向無環(huán)圖構(gòu)建:然后基于前綴詞典,對(duì)輸入文本進(jìn)行切分,對(duì)于“去”,沒有前綴,那么就只有一種劃分方式;對(duì)于“北”,則有“北”、“北京”、“北京大學(xué)”三種劃分方式;對(duì)于“京”,也只有一種劃分方式;對(duì)于“大”,則有“大”、“大學(xué)”兩種劃分方式,依次類推,可以得到每個(gè)字開始的前綴詞的劃分方式。
3.最大概率路徑計(jì)算:
在得到所有可能的切分方式構(gòu)成的有向無環(huán)圖后,我們發(fā)現(xiàn)從起點(diǎn)到終點(diǎn)存在多條路徑,多條路徑也就意味著存在多種分詞結(jié)果。因此,我們需要計(jì)算最大概率路徑,也即按照這種方式切分后的分詞結(jié)果的概率最大。在采用動(dòng)態(tài)規(guī)劃計(jì)算最大概率路徑時(shí),每到達(dá)一個(gè)節(jié)點(diǎn),它前面的節(jié)點(diǎn)到終點(diǎn)的最大路徑概率已經(jīng)計(jì)算出來。
有向無環(huán)圖DAG的每個(gè)節(jié)點(diǎn),都是帶權(quán)的,對(duì)于在前綴詞典里面的詞語,其權(quán)重就是它的詞頻;我們想要求得route = (w1,w2,w3,...,wn),使得?∑weight(wi) 最大。
如果需要使用動(dòng)態(tài)規(guī)劃求解,需要滿足兩個(gè)條件,
- 重復(fù)子問題
- 最優(yōu)子結(jié)構(gòu)
我們來分析一下最大概率路徑問題,是否滿足動(dòng)態(tài)規(guī)劃的兩個(gè)條件。
基于漢字成詞能力的HMM模型識(shí)別未登錄詞
利用HMM模型進(jìn)行分詞,主要是將分詞問題視為一個(gè)序列標(biāo)注(sequence labeling)問題,其中,句子為觀測(cè)序列,分詞結(jié)果為狀態(tài)序列。首先通過語料訓(xùn)練出HMM相關(guān)的模型,然后利用Viterbi算法進(jìn)行求解,最終得到最優(yōu)的狀態(tài)序列,然后再根據(jù)狀態(tài)序列,輸出分詞結(jié)果。
HMM的兩個(gè)基本假設(shè):
1.齊次馬爾科夫性假設(shè),即假設(shè)隱藏的馬爾科夫鏈在任意時(shí)刻t的狀態(tài)只依賴于其前一時(shí)刻的狀態(tài),與其它時(shí)刻的狀態(tài)及觀測(cè)無關(guān),也與時(shí)刻t無關(guān);
2.觀測(cè)獨(dú)立性假設(shè),即假設(shè)任意時(shí)刻的觀測(cè)只依賴于該時(shí)刻的馬爾科夫鏈的狀態(tài),與其它觀測(cè)和狀態(tài)無關(guān)。
HMM模型的三個(gè)基本問題:
Viterbi算法
Viterbi算法實(shí)際上是用動(dòng)態(tài)規(guī)劃求解HMM模型預(yù)測(cè)問題,即用動(dòng)態(tài)規(guī)劃求概率路徑最大(最優(yōu)路徑)。這時(shí)候,一條路徑對(duì)應(yīng)著一個(gè)狀態(tài)序列。
總結(jié)
- 上一篇: Pytorch学习记录-torchtex
- 下一篇: 自然语言处理课程(二):Jieba分词的