中文分詞概述
????????詞是最小的能夠獨(dú)立活動(dòng)的有意義的語言成分娜庇,一般分詞是自然語言處理的第一項(xiàng)核心技術(shù)。英文中每個(gè)句子都將詞用空格或標(biāo)點(diǎn)符號(hào)分隔開來套蒂,而在中文中很難對詞的邊界進(jìn)行界定抚太,難以將詞劃分出來坪它。在漢語中,雖然是以字為最小單位蛾派,但是一篇文章的語義表達(dá)卻仍然是以詞來劃分的俄认。因此處理中文文本時(shí),需要進(jìn)行分詞處理碍脏,將句子轉(zhuǎn)為詞的表示梭依,這就是中文分詞。
中文分詞的三個(gè)難題:? ? ? ??
????????分詞規(guī)則典尾,消除歧義和未登錄詞識(shí)別役拴。
????????構(gòu)建完美的分詞規(guī)則便可以將所有的句子正確的劃分,但是這根本無法實(shí)現(xiàn)钾埂,語言是長期發(fā)展自然而然形成的河闰,而且語言規(guī)則龐大復(fù)雜,很難做出完美的分詞規(guī)則褥紫。
????????在中文句子中姜性,很多詞是由歧義性的,在一句話也可能有多種分詞方法髓考。比如:”結(jié)婚/的/和尚/未結(jié)婚/的“部念,“結(jié)婚/的/和/尚未/結(jié)婚/的”,人分辨這樣的句子都是問題氨菇,更何況是機(jī)器儡炼。
????????此外對于未登陸詞,很難對其進(jìn)行正確的劃分查蓉。
目前主流分詞方法:
????????基于規(guī)則乌询,基于統(tǒng)計(jì)以及二者混合。
基于規(guī)則的分詞:
????????主要是人工建立詞庫也叫做詞典豌研,通過詞典匹配的方式對句子進(jìn)行劃分妹田。其實(shí)現(xiàn)簡單高效唬党,但是對未登陸詞很難進(jìn)行處理。主要有正向最大匹配法鬼佣,逆向最大匹配法以及雙向最大匹配法驶拱。
正向最大匹配法(FMM)
????FMM的步驟是:
????(1)從左向右取待分漢語句的m個(gè)字作為匹配字段,m為詞典中最長詞的長度沮趣。
????(2)查找詞典進(jìn)行匹配屯烦。
????(3)若匹配成功,則將該字段作為一個(gè)詞切分出去房铭。
????(4)若匹配不成功驻龟,則將該字段最后一個(gè)字去掉,剩下的字作為新匹配字段缸匪,進(jìn)行再次匹配翁狐。
????(5)重復(fù)上述過程,直到切分所有詞為止凌蔬。
????????分詞的結(jié)果為:
逆向最大匹配法(RMM)? ? ? ??
? ? ? ? RMM的基本原理與FMM基本相同露懒,不同的是分詞的方向與FMM相反。RMM是從待分詞句子的末端開始砂心,也就是從右向左開始匹配掃描懈词,每次取末端m個(gè)字作為匹配字段,匹配失敗辩诞,則去掉匹配字段前面的一個(gè)字坎弯,繼續(xù)匹配。
????????分詞的結(jié)果為:
雙向最大匹配法(Bi-MM)
? ? ? ? Bi-MM是將正向最大匹配法得到的分詞結(jié)果和逆向最大匹配法得到的結(jié)果進(jìn)行比較译暂,然后按照最大匹配原則抠忘,選取詞數(shù)切分最少的作為結(jié)果。據(jù)SunM.S.和Benjamin K.T.(1995)的研究表明外永,中文中90.0%左右的句子崎脉,正向最大匹配法和逆向最大匹配法完全重合且正確,只有大概9.0%的句子兩種切分方法得到的結(jié)果不一樣伯顶,但其中必有一個(gè)是正確的(歧義檢測成功)囚灼,只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分雖然重合但是錯(cuò)的祭衩,或者兩種方法切分不同但結(jié)果都不對(歧義檢測失斣钐濉)。
????雙向最大匹配的規(guī)則是:
????(1)如果正反向分詞結(jié)果詞數(shù)不同汪厨,則取分詞數(shù)量少的那個(gè)赃春。
????(2)如果分詞結(jié)果詞數(shù)相同:
????????????1)分詞結(jié)果相同愉择,沒有歧義劫乱,返回任意一個(gè)织中。
????????????2)分詞結(jié)果不同,返回其中單字?jǐn)?shù)量較少的那個(gè)衷戈。
????比如:上述例子中詞數(shù)相同狭吼,但結(jié)果不同,逆向最大匹配法的分詞結(jié)果單字個(gè)數(shù)是1殖妇,所以返回的是逆向最大匹配法的結(jié)果刁笙。
????????分詞的結(jié)果為:
????????基于規(guī)則的分詞,一般較為簡單高效谦趣,但是詞典的維護(hù)很大的人力維護(hù)疲吸,同時(shí)對于未登錄詞也沒有很好的解決辦法。雙向最大匹配結(jié)合了正反兩種方法的結(jié)果前鹅,結(jié)果較為準(zhǔn)確摘悴,在實(shí)用中文信息處理中使用廣泛。
待更新舰绘。
詳細(xì)代碼可參考GitHub: 代碼連接
參考書籍:
《Python自然語言處理實(shí)戰(zhàn)-核心技術(shù)與算法》涂銘蹂喻,劉祥,劉樹春? 著
《統(tǒng)計(jì)自然語言處理》 宗成慶? 著