MindSpore:自然语言处理(NLP)—分词技术
1.?摘要
本次我們將開始新的分享系列——自然語言處理(NLP),NLP可以被應用于很多領域:機器翻譯、情感分析、智能問答、文本分類等等。本次我們將分享中文自然語言處理的一個重要技術:中文分詞技術。在通常的語言理解中,詞是最小的能夠獨立活動的語言成分。只有將詞確定下來,中文才能夠向英文那樣過渡到短語劃分以及主題分析,以至自然語言處理。
2.?中文分詞技術
由于漢語結構與歐體系語種差異較大,對詞的構成邊界方面很難進行定位。在英文中,單詞本身就是詞的表示,一篇英文文章就是單詞加空格來表示。在漢語中,詞以字為單位,但一篇漢語文章的語義卻仍以詞來劃分。因此,在處理中文文檔時,需要進行分詞處理,將文檔轉換成詞來表示。這個切詞過程就是中文分詞。通過計算機自動識別出句子的詞,在詞間加入邊界標識符,分隔出各個詞匯,主要的難點在于分詞歧義。
中文分詞主要有三個流派:規則分詞、統計分詞、混合分詞。
3.?規則分詞
規則分詞:基于規則的分詞是一種機械分詞方法,主要是通過維護詞典,將語句中的每一個字符串與詞表中的詞逐一匹配,匹配到就切分,否則不予切分。按照匹配切分的方式,主要有正向最大匹配法、逆向最大匹配法和雙向最大匹配法。
正向最大匹配法思想:假設分詞詞典中的最長詞有i個字符,那么用被處理文檔的當前字符串的前i個字符作為匹配字段,查找字典。若字典中存在這樣一個i長度字詞,則匹配成功,匹配字段則被作為一個詞切分出來。如果詞典中找不到這樣的一個i長度字詞,則匹配失敗。此時便將匹配字段中的最后一個字去掉,對剩余的字符串重新匹配處理。根據這樣的規則處理下去,直到匹配成功,即切分出一個詞或剩余字符串的長度為0為止。這樣就完成一輪匹配,然后取下一個i長度字符串進行匹配處理,直到文檔被掃描完為止。
逆向最大匹配法思想:基本原理與正向最大匹配法相同,不同的是分詞切分的方向與正向最大匹配法相反。相應的,它使用的分詞詞典是逆序詞典,其中的每個詞條都將按逆序方式存放。在實際的處理時,先將文檔進行倒排處理,生成逆序文檔。然后,根據逆序詞典,對逆序文檔用正向最大匹配法處理即可。
由于漢語中偏正結構較多,若從后向前匹配,可以適當提高精準度。所以,逆向最大匹配法比正向最大匹配法的誤差要小。統計結果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配法的錯誤率為1/245。
雙向最大匹配法思想:將正向最大匹配法得到的分詞結果和逆向最大匹配法得到的結果進行比較,然后按照最大匹配原則,選取詞數切分最少的作為結果。
基于規則的分詞,一般都比較簡單高效,但是詞典的維護是一個很龐大的工程。而且網絡新詞頻頻出現,很難通過詞典覆蓋到所以詞。
4.?統計分詞
統計分詞:主要思想是把每個詞看作是由詞的最小單位的各個字組成的,如果相連的字在不同的文本中出現的次數越多,就證明這相連的字很可能就是一個詞。因此我們就可以利用字與字相鄰出現的頻率來反映成詞的可靠度,統計語料中相鄰共現的各個字的組合的頻率,當組合頻率高于某一個臨界值時,我們可以認為這個字的組合可能會構成一個詞語。
基于統計的分詞,通常需要兩個步驟操作:
(1)建立統計語言模型;
(2)對句子進行單詞劃分,然后對劃分結果進行概率計算,獲得概率最大的分詞方式。這里就要用到了統計學習算法。
語言模型:用概率論的專業術語描述語言模型就是,為長度為m的字符串確定其概率分布P(w1,w2,?…,wm),其中w1到wm依次表示文本中的每個詞語。一般采用鏈式法則計算其概率值。
P(w1,w2,?…,wm)=P(w1)P(w2|w1)P(w3|w1,w2)
...P(wi|w1,w2,?…,wi-1)?…P(wm|w1,w2,?…,wm-1)
當文本過長時,公式右部從第三項起的每一項計算難度都很大。為了解決該問題,提出了n元模型用來降低該計算難度。所謂的n元模型就是在估算條件概率時,忽略距離大于等于n的上文詞的影響,那么此時,計算公式可以簡化為
P(wi|w1,w2,?…,wi-1)?≈P(wi|wi-(n-1),?…,wi-1)
當n=1時稱為一元模型,此時整個句子的概率可以表示為P(w1,w2,…,wm)=P(w1)P(w2)…P(wm)。在一元模型中,整個句子的概率等于各個詞語概率的乘積。也可以看作是各個詞之間是相互獨立的,這無疑是完全損失了句子中的順序信息。所以一元模型的效果并不理想。?
由上面表達式可見,當n越大時,模型包含的詞順序信息越豐富,但同時計算量也隨之增大。此時長度越長的文本序列出現的次數也會減少。根據公式估計n元條件概率時,就會出現分子分母為零的情況。因此,在一般的n元模型中需要配合相應的平滑算法解決該問題,例如拉普拉斯平滑算法。
HMM模型:隱馬爾可夫模型(HMM)是將分詞作為字在字串中的序列標注任務來實現的。基本思想是,每一個字在構造一個特定詞語時都占據著一個確定的構詞位置(簡稱詞位),現規定每個字最多只有4個構詞位置,即B(詞首)、M(詞中)、E(詞尾)、S(單獨成詞),那么對常見的一句話,我們展示效果為。
原句:留給中國足球隊的時間已經不多了!
切詞后:留給/中國/足球隊/的/時間/已經/不多了!
逐字標注后:留/B 給/E 中/B 國/E 足/B 球/M 隊/E 的/S 時/B 間/E 已/B 經/E 不/B 多/M 了/M !/E
使用數學抽象表示:用λ=λ1λ2…λn代表輸入的句子,n為句子的長度λi表示字,o=o1o2…on代表輸出的標簽,這樣最理想的輸出可以表示為:
Max=maxP(o1o2…on|λ1λ2…λn)
在分詞的任務中,o即為B、M、E、S這4種標記,λ則表示文本中“足”“球”“隊”等單獨的字,也包括標點符號等非中文字符。需要注意的是,P(o|λ)是關于2n個變量的條件概率,且n不固定。因此,幾乎是無法對P(o|λ)進行精確計算的。在這里要引入觀測獨立性假設,即每個字的輸出僅僅與當前的字有關,于是就可以得到下面表達式:
P(o1o2…on|λ1λ2…λn)=P(o1|λ1)P(o2|λ2)…P(on|λn)
通過了觀測獨立性假設后,目標問題得到了極大的簡化,P(ok|λk)在計算上容易了很多。但是我們會發現這種方法完全沒有考慮上下文環境,所以這是非常不合理的。
HMM就是用來解決上述問題的。在上面公式中,我們期望求解的是P(o|λ),那么通過貝葉斯公式分析可以得到:
P(o|λ)=P(o,λ)/P(λ)=P(λ|o)P(o)/P(λ)
λ為給定的輸入,因此P(λ)計算為常數,因此最大化P(o,λ)等價于最大化P(λ|o)P(o)。
此時對P(λ|o)P(o)作馬爾可夫假設,可以得到:
P(λ|o)=P(λ1|o1)P(λ2|o2)…P(λn|on)
同時,對P(o)有:
P(o)=P(o1)P(o2|o1)P(o3|o1,o2)…P(on|o1,o2,…,on-1)
這是也會面臨計算困難的問題,從公式中的第三項開始,計算難度就非常大,這里HMM做了另一個假設——齊次馬爾可夫假設:每次輸出僅與上一個的輸出相關,那么公式可以簡化為:
P(o)=P(o1)P(o2|o1)P(o3|o2)…P(on|on-1)
這時,對于P(λ|o)P(o)就可以表示為:
P(λ|o)P(o)≈P(λ1|o1)P(o2|o1)P(λ2|o2)P(o3|o2)…P(λn|on)P(on|on-1)
在HMM中,將P(λk|ok)稱為發射概率,P(ok|ok-1)稱為轉移概率。并且可以通過設置P(ok|ok-1)=0,排除上述中不合理的情況。在我們列出的馬爾可夫式子中就是一個二元語言模型,在實際的分詞中也多采用二元模型。
HMM求解MaxP(λ|o)P(o)的常用方法是Veterbi算法。算法思想是:如果最終的最優路徑經過某個oi,那么從初始節點到oi-1點的路徑也必然是最優路徑。因為每個節點oi只會影響前后兩個P(oi-1|oi)和P(oi|oi+1)。
和機械分詞相比,統計分詞方法不需要維護詞典,還能較好的處理歧義和一些未登錄詞,是目前很主流的方法,但分詞的效果很依賴訓練語料的質量,并且計算量高于機械分詞很多。
5.?混合分詞
在目前常用的分詞方法中,在具體的分詞任務中,效果上并未有很明顯的差距。在實際的工程應用中,首先是先基于一種分詞算法使用,然后將其他分詞方法輔助使用。
通常的使用方式是先基于機械分詞方法進行分詞,然后再使用統計分詞方法輔助對準未登錄詞和歧義詞,這樣混合使用會有比單一使用有更好的效果。
6.?總結
本次分享了中文自然語言處理項目分詞的相關技術,基于詞典匹配下的規則分詞:正向最大匹配法、逆向最大匹配法以及雙向最大匹配法。以及為了消除詞語歧義和為登錄詞的基于統計原理的的分詞技術:HMM模型。并介紹了通常實戰分詞時使用的混合分詞策略。
?
總結
以上是生活随笔為你收集整理的MindSpore:自然语言处理(NLP)—分词技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 财务内部收益率用计算机怎么算,财务内部收
- 下一篇: 欧美风简约PPT模板