日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分词原理

發(fā)布時間:2023/12/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分词原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

    在做文本挖掘的時候,首先要做的預(yù)處理就是分詞。英文單詞天然有空格隔開容易按照空格分詞,但是也有時候需要把多個單詞做為一個分詞,比如一些名詞如“New York”,需要做為一個詞看待。而中文由于沒有空格,分詞就是一個需要專門去解決的問題了。無論是英文還是中文,分詞的原理都是類似的,本文就對文本挖掘時的分詞原理做一個總結(jié)。

1. 分詞的基本原理

    現(xiàn)代分詞都是基于統(tǒng)計的分詞,而統(tǒng)計的樣本內(nèi)容來自于一些標(biāo)準(zhǔn)的語料庫。假如有一個句子:“小明來到荔灣區(qū)”,我們期望語料庫統(tǒng)計后分詞的結(jié)果是:”小明/來到/荔灣/區(qū)”,而不是“小明/來到/荔/灣區(qū)”。那么如何做到這一點(diǎn)呢?

    從統(tǒng)計的角度,我們期望”小明/來到/荔灣/區(qū)”這個分詞后句子出現(xiàn)的概率要比“小明/來到/荔/灣區(qū)”大。如果用數(shù)學(xué)的語言來說說,如果有一個句子S’>SS

    其中下標(biāo)ni’>nini

    但是我們的概率分布P(Ai1,Ai2,...,Aini)’>P(Ai1,Ai2,...,Aini)P(Ai1,Ai2,...,Aini)

    在前面我們講MCMC采樣時,也用到了相同的假設(shè)來簡化模型復(fù)雜度。使用了馬爾科夫假設(shè),則我們的聯(lián)合分布就好求了,即:

P(Ai1,Ai2,...,Aini)=P(Ai1)P(Ai2|Ai1)P(Ai3|Ai2)...P(Aini|Ai(ni−1))’>P(Ai1,Ai2,...,Aini)=P(Ai1)P(Ai2|Ai1)P(Ai3|Ai2)...P(Aini|Ai(ni?1))P(Ai1,Ai2,...,Aini)=P(Ai1)P(Ai2|Ai1)P(Ai3|Ai2)...P(Aini|Ai(ni?1))

    而通過我們的標(biāo)準(zhǔn)語料庫,我們可以近似的計算出所有的分詞之間的二元條件概率,比如任意兩個詞w1,w2’>w1,w2w1,w2

    其中freq(w1,w2)’>freq(w1,w2)freq(w1,w2)在語料庫中出現(xiàn)的統(tǒng)計次數(shù)。

    利用語料庫建立的統(tǒng)計概率,對于一個新的句子,我們就可以通過計算各種分詞方法對應(yīng)的聯(lián)合分布概率,找到最大概率對應(yīng)的分詞方法,即為最優(yōu)分詞。

2. N元模型

    當(dāng)然,你會說,只依賴于前一個詞太武斷了,我們能不能依賴于前兩個詞呢?即:

P(Ai1,Ai2,...,Aini)=P(Ai1)P(Ai2|Ai1)P(Ai3|Ai1,Ai2)...P(Aini|Ai(ni−2),Ai(ni−1))’>P(Ai1,Ai2,...,Aini)=P(Ai1)P(Ai2|Ai1)P(Ai3|Ai1Ai2)...P(Aini|Ai(ni?2)Ai(ni?1))P(Ai1,Ai2,...,Aini)=P(Ai1)P(Ai2|Ai1)P(Ai3|Ai1,Ai2)...P(Aini|Ai(ni?2),Ai(ni?1))

    這樣也是可以的,只不過這樣聯(lián)合分布的計算量就大大增加了。我們一般稱只依賴于前一個詞的模型為二元模型(Bi-Gram model),而依賴于前兩個詞的模型為三元模型。以此類推,我們可以建立四元模型,五元模型,…一直到通用的N’>NN元模型。越往后,概率分布的計算復(fù)雜度越高。當(dāng)然算法的原理是類似的。

    在實(shí)際應(yīng)用中,N’>NN增大時,復(fù)雜度呈指數(shù)級的增長。

    N’>NN元模型的分詞方法雖然很好,但是要在實(shí)際中應(yīng)用也有很多問題,首先,某些生僻詞,或者相鄰分詞聯(lián)合分布在語料庫中沒有,概率為0。這種情況我們一般會使用拉普拉斯平滑,即給它一個較小的概率值,這個方法在樸素貝葉斯算法原理小結(jié)也有講到。第二個問題是如果句子長,分詞有很多情況,計算量也非常大,這時我們可以用下一節(jié)維特比算法來優(yōu)化算法時間復(fù)雜度。

3. 維特比算法與分詞

    為了簡化原理描述,我們本節(jié)的討論都是以二元模型為基礎(chǔ)。

    對于一個有很多分詞可能的長句子,我們當(dāng)然可以用暴力方法去計算出所有的分詞可能的概率,再找出最優(yōu)分詞方法。但是用維特比算法可以大大簡化求出最優(yōu)分詞的時間。

    大家一般知道維特比算法是用于隱式馬爾科夫模型HMM解碼算法的,但是它是一個通用的求序列最短路徑的方法,不光可以用于HMM,也可以用于其他的序列最短路徑算法,比如最優(yōu)分詞。

    維特比算法采用的是動態(tài)規(guī)劃來解決這個最優(yōu)分詞問題的,動態(tài)規(guī)劃要求局部路徑也是最優(yōu)路徑的一部分,很顯然我們的問題是成立的。首先我們看一個簡單的分詞例子:”人生如夢境”。它的可能分詞可以用下面的概率圖表示:

    圖中的箭頭為通過統(tǒng)計語料庫而得到的對應(yīng)的各分詞位置BEMS(開始位置,結(jié)束位置,中間位置,單詞)的條件概率。比如P(生|人)=0.17。有了這個圖,維特比算法需要找到從Start到End之間的一條最短路徑。對于在End之前的任意一個當(dāng)前局部節(jié)點(diǎn),我們需要得到到達(dá)該節(jié)點(diǎn)的最大概率δ’>δδ

    我們先用這個例子來觀察維特比算法的過程。首先我們初始化有:

δ(人)=0.26Ψ(人)=Startδ(人生)=0.44Ψ(人生)=Start’>δ()=0.26Ψ()=Startδ()=0.44Ψ()=Startδ(人)=0.26Ψ(人)=Startδ(人生)=0.44Ψ(人生)=Start

    對于節(jié)點(diǎn)”生”,它只有一個前向節(jié)點(diǎn),因此有:

δ(生)=δ(人)P(生|人)=0.0442Ψ(生)=人’>δ()=δ()P(|)=0.0442Ψ()=δ(生)=δ(人)P(生|人)=0.0442Ψ(生)=人

?    對于節(jié)點(diǎn)”如”,就稍微復(fù)雜一點(diǎn)了,因為它有多個前向節(jié)點(diǎn),我們要計算出到“如”概率最大的路徑:

δ(如)=max{δ(生)P(如|生),δ(人生)P(如|人生)}=max{0.01680,0.3168}=0.3168Ψ(如)=人生’>δ()=max{δ()P(|)δ()P(|)}=max{0.01680,0.3168}=0.3168Ψ()=δ(如)=max{δ(生)P(如|生),δ(人生)P(如|人生)}=max{0.01680,0.3168}=0.3168Ψ(如)=人生

    類似的方法可以用于其他節(jié)點(diǎn)如下:

δ(如梦)=δ(人生)P(如梦|人生)=0.242Ψ(如梦)=人生’>δ()=δ()P(|)=0.242Ψ()=δ(如夢)=δ(人生)P(如夢|人生)=0.242Ψ(如夢)=人生

    最后我們看看最終節(jié)點(diǎn)End:

δ(End)=max{δ(梦境)P(End|梦境),δ(境)P(End|境)}=max{0.0396,0.0047}=0.0396Ψ(End)=梦境’>δ(End)=max{δ()P(End|),δ()P(End|)}=max{0.0396,0.0047}=0.0396Ψ(End)=δ(End)=max{δ(夢境)P(End|夢境),δ(境)P(End|境)}=max{0.0396,0.0047}=0.0396Ψ(End)=夢境

    由于最后的最優(yōu)解為“夢境”,現(xiàn)在我們開始用Ψ’>ΨΨ

    從而最終的分詞結(jié)果為”人生/如/夢境”。是不是很簡單呢。

    由于維特比算法我會在后面講隱式馬爾科夫模型HMM解碼算法時詳細(xì)解釋,這里就不歸納了。

4. 常用分詞工具

    對于文本挖掘中需要的分詞功能,一般我們會用現(xiàn)有的工具。簡單的英文分詞不需要任何工具,通過空格和標(biāo)點(diǎn)符號就可以分詞了,而進(jìn)一步的英文分詞推薦使用nltk。對于中文分詞,則推薦用結(jié)巴分詞(jieba)。這些工具使用都很簡單。你的分詞沒有特別的需求直接使用這些分詞工具就可以了。

5. 結(jié)語

    分詞是文本挖掘的預(yù)處理的重要的一步,分詞完成后,我們可以繼續(xù)做一些其他的特征工程,比如向量化(vectorize),TF-IDF以及Hash trick,這些我們后面再講。

?

(歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處。歡迎溝通交流: pinard.liu@ericsson.com)?

總結(jié)

以上是生活随笔為你收集整理的分词原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。