NLP(2)——中文分詞

上一篇文章提到了詞向量的相關(guān)知識(shí),可如何用計(jì)算機(jī)對(duì)一篇文章或者一些句子進(jìn)行分詞,從而讓計(jì)算機(jī)更好理解句子呢?

分詞的概念

簡單來說就是把詞進(jìn)行分開,分詞的難點(diǎn):
1.如何避免歧義,如:“白開水不如果汁甜”。如何讓機(jī)器避免將“如果”分到一起。
2.如何識(shí)別未登錄詞,并判斷詞性(人物,地點(diǎn))
解決歧義的方法有很多,使用n_gram模型或者概率統(tǒng)計(jì)在解決歧義的作用下很好實(shí)現(xiàn),如下面要介紹的HMM和CRF.

分詞方法分類

  • 基于詞典的分詞算法
    基于詞典的分詞算法又稱為機(jī)械分詞算法,它是按照一定的策略將待分析的漢字串與一個(gè)“充分大的機(jī)器詞典”中的詞條進(jìn)行匹配 , 若在詞典中找到某個(gè)字符串, 則匹配成功,認(rèn)為這個(gè)字串是詞并將之切分出來。基于詞典的分詞算法有三個(gè)要素,分詞詞典、掃描方向(正向、逆向)和匹配原則(最大匹配,最小匹配等)[2]。
    正向最大匹配算法。假設(shè)詞典里詞條的最大長度是Maxlen,則每次從文本最左邊截取一個(gè)字符串,其長度為Maxlen,把該字串在詞典中進(jìn)行匹配,如果匹配成功,則將這個(gè)詞從句子中切分出來;若匹配不成功,則將這個(gè)字串的最后一個(gè)字去掉,再將新得到的字串在詞典中匹配。循環(huán)這個(gè)過程,直到切分出所有的詞。
  • 基于統(tǒng)計(jì)的分詞算法和基于理解的分詞算法
    基于統(tǒng)計(jì)的分詞算法主要思想是,詞是穩(wěn)定的字的組合,兩個(gè)字在文本中連續(xù)出現(xiàn)的次數(shù)越多,就越有可能組合成一個(gè)詞。因此這類算法通過對(duì)大量文本的統(tǒng)計(jì),根據(jù)字串在文本中出現(xiàn)的統(tǒng)計(jì)頻率來決定其是否構(gòu)成一個(gè)詞。其主要的統(tǒng)計(jì)模型有:互信息、N元文法模型、神經(jīng)網(wǎng)絡(luò)模型和隱馬爾科夫模型(HMM)等。

下面就介紹一下最大隨機(jī)場(chǎng)和隱馬可夫模型在中文分詞中的應(yīng)用

CRF

  • 原理
    用一句話來解釋就是“有序列的分類”。
    就是在原來分類的基礎(chǔ)上考慮到了時(shí)序,開始(B),中間(B),結(jié)尾(E),以及單字構(gòu)成的詞(S)
    CRF分詞的過程就是對(duì)詞位標(biāo)注后,將B和E之間的字,以及S單字構(gòu)成分詞
    CRF學(xué)習(xí)的過程:
    就是描述一些特征配置:當(dāng)前詞語是xx,上個(gè)詞xx,滿足這種配置的,特征函數(shù)輸出就是1,不然是0。每個(gè)詞都有同樣多的特征函數(shù)判斷,所以是全局優(yōu)化值。預(yù)測(cè)的過程就是利用每種特征配置給標(biāo)簽打分,然后打分結(jié)果加權(quán)求和,打分最高的標(biāo)簽,就是預(yù)測(cè)結(jié)果。
    訓(xùn)練方法:
    線性鏈的條件隨機(jī)場(chǎng)跟線性鏈的隱馬爾科夫模型一樣,一般推斷用的都是維特比算法。這個(gè)算法是一個(gè)最簡單的動(dòng)態(tài)規(guī)劃。首先我們推斷的目標(biāo)是給定一個(gè)X,找到使P(Y|X)最大的那個(gè)Y嘛。然后這個(gè)Z(X),一個(gè)X就對(duì)應(yīng)一個(gè)Z,所以X固定的話這個(gè)項(xiàng)是常量,優(yōu)化跟他沒關(guān)系(Y的取值不影響Z)。然后
    exp也是單調(diào)遞增的,也不帶他,直接優(yōu)化exp里面。所以最后優(yōu)化目標(biāo)就變成了里面那個(gè)線性和的形式,就是對(duì)每個(gè)位置的每個(gè)特征加權(quán)求和。比如說兩個(gè)狀態(tài)的話,它對(duì)應(yīng)的概率就是從開始轉(zhuǎn)移到第一個(gè)狀態(tài)的概率加上從第一個(gè)轉(zhuǎn)移到第二個(gè)狀態(tài)的概率,這里概率是只exp里面的加權(quán)和。那么這種關(guān)系下就可以用維特比了。

  • 維特比原理
    首先你算出第一個(gè)狀態(tài)取每個(gè)標(biāo)簽的概率,然后你再計(jì)算到第二個(gè)狀態(tài)取每個(gè)標(biāo)簽得概率的最大值,這個(gè)最大值是指從狀態(tài)一哪個(gè)標(biāo)簽轉(zhuǎn)移到這個(gè)標(biāo)簽的概率最大,值是多
    少,并且記住這個(gè)轉(zhuǎn)移(也就是上一個(gè)標(biāo)簽是啥)。然后你再計(jì)算第三個(gè)取哪個(gè)標(biāo)簽概率最大,取最大的話上一個(gè)標(biāo)簽應(yīng)該是哪個(gè)。以此類推。整條鏈計(jì)算完之后,
    你就知道最后一個(gè)詞去哪個(gè)標(biāo)簽最可能,以及去這個(gè)標(biāo)簽的話上一個(gè)狀態(tài)的標(biāo)簽是什么、取上一個(gè)標(biāo)簽的話上上個(gè)狀態(tài)的標(biāo)簽是什么,醬。這里我說的概率都是
    exp里面的加權(quán)和,因?yàn)閮蓚€(gè)概率相乘其實(shí)就對(duì)應(yīng)著兩個(gè)加權(quán)和相加,其他部分都沒有變。

  • 與HMM區(qū)別
    1)HMM是假定滿足HMM獨(dú)立假設(shè)。CRF沒有,所以CRF能容納更多上下文信息。
    2)CRF計(jì)算的是全局最優(yōu)解,不是局部最優(yōu)值。
    3)CRF是給定觀察序列的條件下,計(jì)算整個(gè)標(biāo)記序列的聯(lián)合概率。而HMM是給定當(dāng)前狀態(tài),計(jì)算下一個(gè)狀態(tài)。
    4)CRF比較依賴特征的選擇和特征函數(shù)的格式,并且訓(xùn)練計(jì)算量大

  • 示例
    這里用的是genius包
    Genius是一個(gè)開源的python中文分詞組件,采用 CRF(Conditional Random Field)條件隨機(jī)場(chǎng)算法。

#encoding=utf-8
import genius
text = u"""昨天,我和施瓦布先生一起與部分企業(yè)家進(jìn)行了交流,大家對(duì)中國經(jīng)濟(jì)當(dāng)前、未來發(fā)展的態(tài)勢(shì)、走勢(shì)都十分關(guān)心。"""
seg_list = genius.seg_text(
    text,
    use_combine=True,
    use_pinyin_segment=True,
    use_tagging=True,
    use_break=True
)
print('\n'.join(['%s\t%s' % (word.text, word.tagging) for word in seg_list]))
['昨天', ',', '我', '和', '施瓦布', '先生', '一起', '與', '部分', '企業(yè)家', '進(jìn)行', '了', '交流', ',', '大家', '對(duì)', '中國', '經(jīng)濟(jì)', '當(dāng)前', '、', '未來', '發(fā)展', '的', '態(tài)勢(shì)', '、', '走勢(shì)', '都', '十分關(guān)心']

HMM分詞

HMM是關(guān)于時(shí)序的概率模型,描述一個(gè)含有未知參數(shù)的馬爾可夫鏈所生成的不 可觀測(cè)的狀態(tài)隨機(jī)序列,再由各個(gè)狀態(tài)生成觀測(cè)隨機(jī)序列的過程。HMM是一個(gè) 雙重隨機(jī)過程---具有一定狀態(tài)的隱馬爾可夫鏈和隨機(jī)的觀測(cè)序列.
HMM由隱含狀態(tài)S、可觀測(cè)狀態(tài)O、初始狀態(tài)概率矩陣π、隱含狀態(tài)轉(zhuǎn)移概率矩 陣A、可觀測(cè)值轉(zhuǎn)移矩陣B(又稱為混淆矩陣,Confusion Matrix);
π和A決定了狀態(tài)序列,B決定觀測(cè)序列,因此HMM可以使用三元符號(hào)表示,稱 為HMM的三元素:


具體的原理部分會(huì)專門用一章來介紹。
具體代碼可以見:https://github.com/tostq/Easy_HMM

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容