自然语言处理 # 中文分词技术 概述
定義
中文分詞(Chinese Word Segmentation)就是將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程。
Ques:為什么要分詞?
Ans: 詞是最小的能夠獨立運用的語言單位
Ques:什么是獨立運用呢?
Ans:它可以解釋為“單獨做句法成分或單獨起語法作用”1
基本信息
在英文的行文中,單詞之間是以空格作為自然分界符的,而中文只是字、句和段能通過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符,雖然英文也同樣存在短語的劃分問題,不過在詞這一層上,中文比之英文要復雜得多、困難得多2。
中文在基本文法上有以下特殊性:
現(xiàn)代漢語的基本表達單元雖然為“詞”,且以雙字或者多字詞居多,但由于人們認識水平的不同,對詞和短語的邊界很難去區(qū)分。
中文分詞是文本挖掘的基礎(chǔ),對于輸入的一段中文,成功的進行中文分詞,可以達到電腦自動識別語句含義的效果。
分詞算法概述
中文分詞方法的基本原理是針對輸入文字串進行分詞、過濾處理,輸出中文單詞、英文單詞和數(shù)字串等一系列分割好的字符串。
現(xiàn)有的分詞算法可分為三大類:基于字符串匹配的分詞方法、基于理解的分詞方法和基于統(tǒng)計的分詞方法。按照是否與詞性標注過程相結(jié)合,又可以分為單純分詞方法和分詞與標注相結(jié)合的一體化方法。
基于字符串匹配的分詞方法
又稱為機械分詞方法,它需要有一個初始的充分大的詞典,然后將待分詞的字符串與詞典中的元素進行匹配,若能成功匹配,則將該詞切分出來。按掃描方向的不同,字符串匹配分詞方法可以分為正相匹配和逆向匹配;按照不同長度的匹配優(yōu)先度可以劃分為最大匹配和最小匹配。3
常用的幾種機械分詞方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的詞數(shù)最小);
4)雙向最大匹配法(進行由左到右、由右到左兩次掃描)
還可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆向最大匹配方法結(jié)合起來構(gòu)成雙向匹配法。由于漢語單字成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高于正向匹配,遇到的歧義現(xiàn)象也較少。統(tǒng)計結(jié)果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統(tǒng),都是把機械分詞作為一種初分手段,還需通過利用各種其它的語言信息來進一步提高切分的準確率。
一種方法是改進掃描方式,稱為特征掃描或標志切分,優(yōu)先在待分析字符串中識別和切分出一些帶有明顯特征的詞,以這些詞作為斷點,可將原字符串分為較小的串再來進機械分詞,從而減少匹配的錯誤率。另一種方法是將分詞和詞類標注結(jié)合起來,利用豐富的詞類信息對分詞決策提供幫助,并且在標注過程中又反過來對分詞結(jié)果進行檢驗、調(diào)整,從而極大地提高切分的準確率。
正向最大匹配思想 MM
1 從左向右取待切分漢語句的m個字符作為匹配字段,m為大機器詞典中最長詞條個數(shù)。
2 查找大機器詞典并進行匹配。若匹配成功,則將這個匹配字段作為一個詞切分出來。
若匹配不成功,則將這個匹配字段的最后一個字去掉,剩下的字符串作為新的匹配字段,進行再次匹配,重復以上過程,直到切分出所有詞為止。
舉個栗子↓
假設(shè)我們要切分的句子為“南京市長江大橋”,字典中最長的元素長度為5,則先取待切分句子的前5個字符“南京市長江”。 字典中沒有元素與之匹配,長度減一,則變成“南京市長”,匹配成功。 對剩余三個字“江大橋”再次進行正向最大匹配,會切成“江”、“大橋”; 整個句子切分完成為:南京市長、江、大橋;逆向最大匹配算法 RMM
該算法是正向最大匹配的逆向思維,匹配不成功,將匹配字段的最前一個字去掉,實驗表明,逆向最大匹配算法要優(yōu)于正向最大匹配算法。
還是上一個栗子:
雙向最大匹配法 Bi-directction Matching method,BM
雙向最大匹配法是將正向最大匹配法得到的分詞結(jié)果和逆向最大匹配法的到的結(jié)果進行比較,從而決定正確的分詞方法。據(jù)SunM.S. 和 Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正確,只有大概9.0%的句子兩種切分方法得到 的結(jié)果不一樣,但其中必有一個是正確的(歧義檢測成功),只有不到1.0%的句子,或者正向最大匹配法和逆向最大匹配法的切分雖重合卻是錯的,或者正向最 大匹配法和逆向最大匹配法切分不同但兩個都不對(歧義檢測失敗)。這正是雙向最大匹配法在實用中文信息處理系統(tǒng)中得以廣泛使用的原因所在4。
還是上面的例子,雙向最大匹配的劃分結(jié)果為:南京市長、南京市、長江大橋、江、大橋。設(shè)立切分標志法
切分標志有自然和非自然之分。自然切分標志是指文章中出現(xiàn)的非文字符號,如標點符號等;非自然標志是利用詞綴和不構(gòu)成詞的詞(包 括單音詞、復音節(jié)詞以及象聲詞等)。設(shè)立切分標志法首先收集眾多的切分標志,分詞時先找出切分標志,把句子切分為一些較短的字段,再用MM、RMM 或其它的方法進行細加工。這種方法并非真正意義上的分詞方法,只是自動分詞的一種前處理方式而已,它要額外消耗時間掃描切分標志,增加存儲空間存放那些非 自然切分標志。
最佳匹配(OM,分正向和逆向)
對分詞詞典按詞頻大小順序排列,并注明長度,降低時間復雜度。
優(yōu)點:易于實現(xiàn);
缺點:匹配速度慢。對于未登錄詞的補充較難實現(xiàn)。缺乏自學習。
逐字匹配算法
基于Trie樹(字典樹)的逐字匹配算法。建立在樹型詞典機制上,匹配的過程是從索引樹的根結(jié)點依次同步匹配待查詞中的每個字,可以看成是對樹某一分枝的遍歷。
該算法的分詞速度較快,但樹的構(gòu)造和維護比較復雜。一種改進的算法是和最大匹配算法相結(jié)合,吸取最大匹配算法詞典結(jié)構(gòu)簡單、TRIE索引樹算法查詢速度快的優(yōu)點。因此詞典結(jié)構(gòu)和最大匹配詞典構(gòu)造機制相似,區(qū)別在于詞典正文前增加了多級索引。匹配過程類似TRIE索引樹進行逐字匹配,在性能上和TRIE索引樹相近。
神經(jīng)網(wǎng)絡(luò)分詞算法
尹峰等提出了以神經(jīng)網(wǎng)絡(luò)理論(BP模型)為基礎(chǔ)的漢語分詞模型,為漢語分詞研究開辟了新途徑。在實用中,BP算法存在收斂速度慢、易陷 入局部最小等缺點,嚴重妨礙了分詞速度。一種改進算法采用Levenbery2Marquart 算法來加速收斂速度,加快了收斂速度利用神經(jīng)網(wǎng)絡(luò)的基本原理進行分詞。5
聯(lián)想—回溯法
聯(lián)想—回溯法(Association-Backtracking Method,簡稱 AB 法)。這種方法要求建立三個知識庫——特征詞詞庫、實詞詞庫和規(guī)則庫。首先將待切分的漢字字符串序列按特征詞詞庫分割為若干子串,子串可以是詞,也可以是 由幾個詞組合而成的詞群;然后,再利用實詞詞庫和規(guī)則庫將詞群再細分為詞。切詞時,要利用一定的語法知識,建立聯(lián)想機制和回溯機制。聯(lián)想機制由聯(lián)想網(wǎng)絡(luò)和聯(lián)想推理構(gòu)成,聯(lián)想網(wǎng)絡(luò)描述每個虛詞的構(gòu)詞能力,聯(lián)想推理利用相應(yīng)的聯(lián)想網(wǎng)絡(luò)來判定所描述的虛詞究竟是單獨成詞還是作為其他詞中的構(gòu)詞成分?;厮輽C制主要用于處理歧義句子的切分。聯(lián)想—回溯法雖然增加了算法的時間復雜度和空間復雜度,但這種方法的切詞正確率較高,是一種行之有效的方法。
N-最短路徑分詞算法
基本思想是根據(jù)詞典,找出字串中所有可能的詞,構(gòu)造詞語切分有向無環(huán)圖。每個詞對應(yīng)圖中的一條有向邊,并賦給相應(yīng)的邊長(權(quán) 值)。然后針對該切分圖,在起點到終點的所有路徑中,求出長度值按嚴格升序排列(任何兩個不同位置上的值一定不等,下同)依次為第1,第2,…,第 i,…,第N的路徑集合作為相應(yīng)的粗分結(jié)果集。如果兩條或兩條以上路徑長度相等,那么他們的長度并列第 i,都要列入粗分結(jié)果集,而且不影響其他路徑的排列序號,最后的粗分結(jié)果集合大小大于或等于N。N一最短路徑方法實際上是最短路徑方法和全切分的有機結(jié) 合。該方法的出發(fā)點是盡量減少切分出來的詞數(shù),這和最短路徑分詞方法是完全一致的;同時又要盡可能的包含最終結(jié)果,這和全切分的思想是共通的。通過這種綜 合,一方面避免了最短路徑分詞方法大量舍棄正 確結(jié)果的可能,另一方面又大大解決了全切分搜索空間過大,運行效率差的弊端。N一最短路徑方法相對的不足就是粗分結(jié)果不唯一 ,后續(xù)過程需要處理多個粗分結(jié)果。 但是 ,對于預(yù)處理過程來講,粗分結(jié)果的高召回率至關(guān)重要。因為低召回率就意味著沒有辦法 再作后續(xù)的補救措施。預(yù)處理一旦出錯,后續(xù)處理只能是一錯再錯 ,基本上得不到正確的最終 結(jié)果。而少量的粗分結(jié)果對后續(xù)過程的運行效率影響不會太大,后續(xù)處理可以進一步優(yōu)選排 錯,如詞性標注、句法分析等。
除上面之外,還有基于詞頻統(tǒng)計的切詞法, 基于期望的切詞法,有窮多級列舉法等。
基于理解的分詞方法
通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現(xiàn)象。它通常包括三個部分:分詞子系統(tǒng)、句法語義子系統(tǒng)、總控部分。在總控部分的協(xié)調(diào)下,分詞子系統(tǒng)可以獲得有關(guān)詞、句子等的句法和語義信息來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。由于漢語語言知識的籠統(tǒng)、復雜性,難以將各種語言信息組織成機器可直接讀取的形式,因此目前基于理解的分詞系統(tǒng)還處在試驗階段。
基于統(tǒng)計的分詞方法
主要思想:每個字都是詞的最小單元,如果相連的字在不同的文本中出現(xiàn)的頻率越多,這就越有可能是一個詞。因此我們可以用相鄰字出現(xiàn)的頻率來衡量組詞的可能性,當頻率高于某個閾值時,我們可以認為這些字可能會構(gòu)成一個詞。
主要統(tǒng)計模型: N元文法模型(N-gram),隱馬爾可夫模型(Hidden Markov Model,HMM),最大熵模型(ME),條件隨機場(Conditional Random Fields,CRF)等
優(yōu)勢:在實際運用中常常將字符串匹配分詞和統(tǒng)計分詞結(jié)合使用,這樣既體現(xiàn)了匹配分詞速度快、效率高的優(yōu)點,同時又能運用統(tǒng)計分詞識別生詞、自動消除歧義等方面的特點。
從形式上看,詞是穩(wěn)定的字的組合,因此在上下文中,相鄰的字同時出現(xiàn)的次數(shù)越多,就越有可能構(gòu)成一個詞。因此字與字相鄰共現(xiàn)的頻率或概率能夠較好的反映成詞的可信度??梢詫φZ料中相鄰共現(xiàn)的各個字的組合的頻度進行統(tǒng)計,計算它們的互現(xiàn)信息。定義兩個字的互現(xiàn)信息,計算兩個漢字X、Y的相鄰共現(xiàn)概率。互現(xiàn)信息體現(xiàn)了漢字之間結(jié)合關(guān)系的緊密程度。當緊密程度高于某一個閾值時,便可認為此字組可能構(gòu)成了一個詞。這種方法只需對語料中的字組頻度進行統(tǒng)計,不需要切分詞典,因而又叫做無詞典分詞法或統(tǒng)計取詞方法。但這種方法也有一定的局限性,會經(jīng)常抽出一些共現(xiàn)頻度高、但并不是詞的常用字組,例如“這一”、“之一”、“有的”、“我的”、“許多的”等,并且對常用詞的識別精度差,時空開銷大。實際應(yīng)用的統(tǒng)計分詞系統(tǒng)都要使用一部基本的分詞詞典(常用詞詞典)進行串匹配分詞,同時使用統(tǒng)計方法識別一些新的詞,即將串頻統(tǒng)計和串匹配結(jié)合起來,既發(fā)揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結(jié)合上下文識別生詞、自動消除歧義的優(yōu)點。
各種分詞方法的優(yōu)劣對比7
中文分詞存在的難題
在中文分詞過程中,有兩大難題一直沒有完全突破。
歧義識別
同樣的一句話,可能有兩種或者更多的切分方法。主要的歧義有兩種:交集型歧義和組合型歧義。
例如:表面的,因為“表面”和“面的”都是詞,那么這個短語就可以分成“表面 的”和“表 面的”。這種稱為交集型歧義(交叉歧義)。
交集型歧義相對組合型歧義來說是還算比較容易處理,組合型歧義就必須根據(jù)整個句子來判斷了。
例如,在句子“這個門把手壞了”中,“把手”是個詞,但在句子“請把手拿開”中,“把手”就不是一個詞;在句子“將軍任命了一名中將”中,“中將”是個詞,但在句子“產(chǎn)量三年中將增長兩倍”中,“中將”就不再是詞。這些詞計算機又如何去識別?
如果交集型歧義和組合型歧義計算機都能解決的話,在歧義中還有一個難題,是真歧義。真歧義意思是給出一句話,由人去判斷也不知道哪個應(yīng)該是詞,哪個應(yīng)該不是詞。例如:“乒乓球拍賣完了”,可以切分成“乒乓 球拍 賣 完 了”、也可切分成“乒乓球 拍賣 完 了”,如果沒有上下文其他的句子,恐怕誰也不知道“拍賣”在這里算不算一個詞。
基于字符串的分詞算法:僅僅是跟一個電子詞典進行比較,故不能進行歧義識別;
基于理解的分詞算法:指通過理解字符串的含義,故有很強的歧義識別能力;
基于統(tǒng)計的分詞算法:根據(jù)字符連續(xù)出現(xiàn)次數(shù)的多少,得到分詞系列,故常常能夠給出正確的分詞系列選擇,但是也有可能判斷錯誤的情況。
新詞識別
命名實體(人名、地名)、新詞,專業(yè)術(shù)語稱為未登錄詞。也就是那些在分詞詞典中沒有收錄,但又確實能稱為詞的那些詞。最典型的是人名,人可以很容易理解。句子“王軍虎去廣州了”中,“王軍虎”是個詞,因為是一個人的名字,但要是讓計算機去識別就困難了。如果把“王軍虎”做為一個詞收錄到字典中去,全世界有那么多名字,而且每時每刻都有新增的人名,收錄這些人名本身就是一項既不劃算又巨大的工程。即使這項工作可以完成,還是會存在問題,例如:在句子“王軍虎頭虎腦的”中,“王軍虎”還能不能算詞?
除了人名以外,還有機構(gòu)名、地名、產(chǎn)品名、商標名、簡稱、省略語等都是很難處理的問題,而且這些又正好是人們經(jīng)常使用的詞,因此對于搜索引擎來說,分詞系統(tǒng)中的新詞識別十分重要。新詞識別準確率已經(jīng)成為評價一個分詞系統(tǒng)好壞的重要標志之一。
基于字符串的分詞算法:無法正確識別未登錄詞,因為這種算法僅僅與詞典中存在的詞語進行比較;
基于理解的分詞算法:理解字符串的含義,從而有很強的新詞識別能力;
基于統(tǒng)計的分詞算法:這種算法對第二種未登錄詞有很強的識別能力,因為出現(xiàn)次數(shù)多,才會當作一個新詞;對于第二類未登錄詞,這類詞語有一定的規(guī)律,如姓名:“姓”+ 名字,如李勝利;機構(gòu):前綴+稱謂,如希望集團;故需要結(jié)合一定的規(guī)則進行識別,僅僅統(tǒng)計方法難以正確識別。
其他
詞典
基于字符串的分詞算法:基本思路就是與電子詞典進行比較,故電子詞典是必須的。并且詞典越大,分詞的正確率越高,因為詞典越大,未登錄詞越少,從而可以大大減少未登錄詞識別的錯誤;
基于理解的分詞算法:理解字符串的含義,故不需要一個電子詞典;
基于統(tǒng)計的分詞算法:僅僅根據(jù)統(tǒng)計得到最終的結(jié)果,故電子詞典不是必須的。
語料庫
基于字符串的分詞算法:分詞過程僅僅與一個已經(jīng)存在的電子詞典進行比較,故不需要語料庫;
基于理解的分詞算法:理解字符串的含義,故不需要電子詞典;
基于統(tǒng)計的分詞算法:需要語料庫進行統(tǒng)計訓練,故語料庫是必須的;且好的語料庫是分詞準確性的保證。
規(guī)則庫
基于字符串的分詞算法:分詞過程僅僅與一個已經(jīng)存在的電子詞典進行比較,不需要規(guī)則庫來進行分詞;
基于理解的分詞算法:規(guī)則是計算機進行理解的基礎(chǔ),故準確、完備的規(guī)則庫是這種分詞算法的前提;
基于統(tǒng)計的分詞算法:根據(jù)語料庫統(tǒng)計訓練,故規(guī)則庫不是必須的。
算法復雜度
基于字符串的分詞算法:僅僅進行字符串的比較操作,故算法簡單;
基于理解的分詞算法:需要充分處理各種規(guī)則,故算法非常復雜;事實上到目前為止,還沒有成熟的這類算法;
基于統(tǒng)計的分詞算法:需要語料庫進行訓練,雖然算法也比較復雜,但是已經(jīng)比較常見,故這種分詞的復雜性比第一種大,比第二種容易?,F(xiàn)在的實用分詞系統(tǒng)都采用這種算法。
技術(shù)成熟度
基于字符串的分詞算法:是最早出現(xiàn)也是最成熟的算法;
基于理解的分詞算法:是最不成熟的一類算法,到目前為止還沒有成熟的算法;
基于統(tǒng)計的分詞算法:已經(jīng)有多種成熟的這類算法,基本上能夠滿足實際的應(yīng)用。
故技術(shù)成熟度:基于匹配的分詞算法〉基于理解的分詞算法〉基于統(tǒng)計的分詞算法。
實施復雜性
同理,實施復雜性:基于理解的分詞算法〉基于統(tǒng)計的分詞算法〉基于匹配的分詞算法。
分詞準確性
到目前為止還沒有一個準確的結(jié)論,不過從理論上說,基于理解的分詞算法有最高的分詞準確性,理論上有100%的準確性;而基于匹配的分詞算法和基于統(tǒng)計的分詞算法是一種"淺理解"的分詞方法,不涉及真正的含義理解,故可能會出現(xiàn)錯誤,難以達到100%的準確性5。
分詞速度
基于匹配的分詞算法:算法簡單,操作容易,故分詞速度快,所以這種算法常常作為另外兩種算法的預(yù)處理,進行字符串的粗分;
基于理解的分詞算法:這種算法常常需要操作一個巨大的規(guī)則庫,故速度最慢;
基于統(tǒng)計的分詞算法:這種分詞算法僅僅是與一個統(tǒng)計結(jié)果進行比較,故速度一般。
故一般的分詞速度從快到慢依次為:基于匹配的分詞算法〉基于統(tǒng)計的分詞算法〉基于理解的分詞算法。
分詞技術(shù)的評價
分詞正確率
書面漢語的文本可以看成是字符序列,分詞的正確率直接影響更高一級的處理?,F(xiàn)有的分詞系統(tǒng)切分錯誤主要集中在歧義字段和專有名詞(如人名、地名、機 構(gòu)名和未登錄詞等)。為了獲得分詞系統(tǒng)切分正確率,應(yīng)該進行整體測試,歧義測試和專業(yè)詞測試。自動分詞系統(tǒng)的切分正確率的基本公式為:
S=∑i=13βiSiS=\sum^3_{i=1}\beta_iS_iS=i=1∑3?βi?Si?
其中,S1,S2,S3分別為總體測試、歧義測試和專業(yè)詞測試的正確率;βi\beta_iβi?(i=1、2、3)為三種測試加的權(quán)值。
切分速度
切分速度是指單位時間內(nèi)所處理的漢字個數(shù)。在分詞正確率基本滿足要求的情況下,切分速度是另一個很重要的指標,特別對于算法不單一,使用輔助手段, 諸如聯(lián)想,基于規(guī)則,神經(jīng)網(wǎng)絡(luò),專家系統(tǒng)等方法更應(yīng)注意這一點。通常中文信息處理的文本數(shù)量是相當大的,因此必須考慮方法是否能使系統(tǒng)總開銷合理。在人機 交互方式下處理歧義問題的策略和人機接口的設(shè)計,有時會嚴重地影響切分速度,這也是應(yīng)考慮的因素。
功能完備性
自動分詞方法除了完成分詞功能外,還應(yīng)具備詞庫增刪、修改、查詢和批處理等功能。
易擴充性和可維護性
這是提供數(shù)據(jù)存儲和計算功能擴充要求的軟件屬性,包括詞庫的存儲結(jié)構(gòu),輸入/輸出形式的變化等方面的擴展和完善。這項指標與系統(tǒng)清晰性、模塊性、簡 單性、結(jié)構(gòu)性、完備性以及自描述性等軟件質(zhì)量準則有直接的聯(lián)系,對于研究實驗性質(zhì)的軟件是非常重要的,因為這類軟件需要不斷提高與改進,使之適應(yīng)中文信息處理的各種應(yīng)用。
可移植性
可移植性是指方法能從一個計算機系統(tǒng)或環(huán)境轉(zhuǎn)移到另一個系統(tǒng)或環(huán)境的容易程度。一個好的分詞方法不應(yīng)該只能在一個環(huán)境下運行,而應(yīng)該稍作修改便可在另一種環(huán)境下運行,使它更便于推廣。
https://baike.baidu.com/tashuo/browse/content?id=d276fc8ff138ce5c74e7683b&lemmaId=371496&fromLemmaModule=pcBottom ??
https://blog.csdn.net/sysu63/article/details/80185555 ??
https://baike.baidu.com/item/中文分詞/371496?fr=aladdin ??
https://www.cnblogs.com/racaljk/p/7822304.html ??
https://blog.csdn.net/Yelbosh/article/details/45896051 ?? ??
https://blog.csdn.net/xiaomin1991222/article/details/84803377 ??
https://blog.csdn.net/pengyuanyuankuang/article/details/84508045 ??
總結(jié)
以上是生活随笔為你收集整理的自然语言处理 # 中文分词技术 概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARCH++
- 下一篇: matlab绘制图形中图像标注