NLP入門干貨:手把手教你3種中文規(guī)則分詞方法

發(fā)布時(shí)間:2024-03-12
在自然語言理解中,詞(token)是最小的能夠獨(dú)立活動(dòng)的有意義的語言成分。將詞確定下來是理解自然語言的第一步,只有跨越了這一步,中文才能像英文那樣過渡到短語劃分、概念抽取以及主題分析,以至自然語言理解,最終達(dá)到智能計(jì)算的最高境界。因此,每個(gè)nlp工作者都應(yīng)掌握分詞技術(shù)。
1. 分詞的概念和分類
“詞”這個(gè)概念一直是漢語言學(xué)界糾纏不清而又揮之不去的問題。“詞是什么”(詞的抽象定義)和“什么是詞”(詞的具體界定)這兩個(gè)基本問題迄今為止也未能有一個(gè)權(quán)威、明確的表述,當(dāng)今更是沒有一份令大家公認(rèn)的詞表。
問題的主要難點(diǎn)在于漢語結(jié)構(gòu)與印歐體系語種差異甚大,對(duì)詞的構(gòu)成邊界很難進(jìn)行界定。比如在英語中,單詞本身就是“詞”的表達(dá),一篇英文文章的格式就是“單詞”加分隔符(空格)。
而在漢語中,詞以字為基本單位,但是一篇文章的語義表達(dá)卻仍然是以詞來劃分。因此,需要針對(duì)中文漢字,將其按照一定的方式進(jìn)行組織,分成不同的詞。
中文分詞是讓計(jì)算機(jī)自動(dòng)識(shí)別出句子中的詞,然后在詞間加入邊界標(biāo)記符。這個(gè)過程看似簡(jiǎn)單,然而實(shí)踐起來要復(fù)雜得多,主要困難在于分詞歧義。
下面以nlp分詞的經(jīng)典場(chǎng)景為例進(jìn)行說明,短語“結(jié)婚的和尚未結(jié)婚的”,應(yīng)該分詞為“結(jié)婚/的/和/尚未/結(jié)婚/的”,還是“結(jié)婚/的/和尚/未/結(jié)婚/的”呢?對(duì)于這個(gè)問題,機(jī)器很難處理。此外,像未登錄詞、分詞粒度粗細(xì)等都是影響分詞效果的重要因素。
自中文自動(dòng)分詞被提出以來,歷經(jīng)近30年的探索,先后出現(xiàn)了很多分詞方法,可主要?dú)w納為規(guī)則分詞、統(tǒng)計(jì)分詞和混合分詞(規(guī)則 統(tǒng)計(jì))這3個(gè)流派。最近這幾年又興起了以深度學(xué)習(xí)的方式進(jìn)行分詞,比如bilstm crf。
規(guī)則分詞是最早興起的方法,主要通過人工設(shè)立詞庫,按照一定方式進(jìn)行匹配切分,其實(shí)現(xiàn)簡(jiǎn)單高效,但對(duì)沒有錄入詞庫的新詞很難進(jìn)行處理。
隨后統(tǒng)計(jì)機(jī)器學(xué)習(xí)技術(shù)興起,應(yīng)用于分詞任務(wù)上就有了統(tǒng)計(jì)分詞方法。該方法能夠較好地應(yīng)對(duì)新詞發(fā)現(xiàn)等特殊場(chǎng)景。然而在實(shí)踐中,單純的統(tǒng)計(jì)分詞也有其缺陷:太過依賴語料的質(zhì)量。因此實(shí)踐中多是采用規(guī)則分詞和統(tǒng)計(jì)分詞這兩種方法的結(jié)合,即混合分詞。
2. 規(guī)則分詞
基于規(guī)則的分詞是一種機(jī)械分詞方法,需要不斷維護(hù)和更新詞典,在切分語句時(shí),將語句的每個(gè)字符串與詞表中的每個(gè)詞進(jìn)行逐一匹配,找到則切分,找不到則不予切分。
按照匹配劃分,主要有正向最大匹配、逆向最大匹配以及雙向最大匹配這3種切分方法。
1. 正向最大匹配
正向最大匹配(maximum match)通常簡(jiǎn)稱為mm法,其執(zhí)行過程如下所示。
從左向右取待切分漢語句的m個(gè)字符作為匹配字段,m為機(jī)器詞典中最長(zhǎng)詞條的字符數(shù)。 查找機(jī)器詞典并進(jìn)行匹配。若匹配成功,則將這個(gè)匹配字段作為一個(gè)詞切分出來。若匹配不成功,則將這個(gè)匹配字段的最后一個(gè)字去掉,剩下的字符串作為新的匹配字段,進(jìn)行再次匹配,重復(fù)以上過程,直到切分出所有詞為止。
比如我們現(xiàn)在有個(gè)詞典,最長(zhǎng)詞的長(zhǎng)度為5,詞典中存在“南京市長(zhǎng)”“長(zhǎng)江大橋”和“大橋”3個(gè)詞。
現(xiàn)采用正向最大匹配對(duì)句子“南京市長(zhǎng)江大橋”進(jìn)行分詞,那么首先從句子中取出前5個(gè)字“南京市長(zhǎng)江”,發(fā)現(xiàn)詞典中沒有該詞,于是縮小長(zhǎng)度,取前4個(gè)字“南京市長(zhǎng)”,詞典中存在該詞,于是該詞被確認(rèn)切分。
再將剩下的“江大橋”按照同樣方式切分,得到“江”“大橋”,最終分為“南京市長(zhǎng)”“江”“大橋”3個(gè)詞。顯然,這種結(jié)果不是我們所希望的。正向最大匹配法示例代碼如下。
classmm(object):def__init__(self):self.window_size=3defcut(self,text):result=[]index=0text_length=len(text)dic=[\\\’研究\\\’,\\\’研究生\\\’,\\\’生命\\\’,\\\’起源\\\’]whiletext_length>index:forsizeinrange(self.window_size index,index,-1):#4,0,-1piece=text[index:size]ifpieceindic:index=size-1breakindexindex=index 1result.append(piece)returnresult
分詞的結(jié)果如下所示,這個(gè)結(jié)果并不能讓人滿意。
text=\\\’研究生命的起源\\\’tokenizer=mm()print(tokenizer.cut(text))
輸出結(jié)果如下所示。
[\\\’研究生\\\’,\\\’命\\\’,\\\’的\\\’,\\\’起源\\\’]
2. 逆向最大匹配
逆向最大匹配簡(jiǎn)稱為rmm法。rmm法的基本原理與mm法大致相同,不同的是分詞切分的方向與mm法相反。
逆向最大匹配法從被處理文檔的末端開始匹配掃描,每次取最末端的m個(gè)字符(m為詞典中最長(zhǎng)詞數(shù))作為匹配字段,若匹配失敗,則去掉匹配字段最前面的一個(gè)字,繼續(xù)匹配。相應(yīng)地,它使用的分詞詞典是逆序詞典,其中的每個(gè)詞條都將按逆序方式存放。
在實(shí)際處理時(shí),先將文檔進(jìn)行倒排處理,生成逆序文檔。然后,根據(jù)逆序詞典,對(duì)逆序文檔用正向最大匹配法處理即可。
由于漢語中偏正結(jié)構(gòu)較多,若從后向前匹配,可以適當(dāng)提高精確度。所以,逆向最大匹配法比正向最大匹配法的誤差要小。
統(tǒng)計(jì)結(jié)果表明,單純使用正向最大匹配的錯(cuò)誤率為1/169,單純使用逆向最大匹配的錯(cuò)誤率為1/245。比如之前的“南京市長(zhǎng)江大橋”,按照逆向最大匹配,最終得到“南京市”“長(zhǎng)江大橋”的分詞結(jié)果。
當(dāng)然,如此切分并不代表完全正確,可能有個(gè)叫“江大橋”的“南京市長(zhǎng)”也說不定。逆向最大匹配法示例代碼如下。
classrmm(object):def__init__(self):self.window_size=3defcut(self,text):result=[]index=len(text)dic=[\\\’研究\\\’,\\\’研究生\\\’,\\\’生命\\\’,\\\’命\\\’,\\\’的\\\’,\\\’起源\\\’]whileindex>0:forsizeinrange(index-self.window_size,index):piece=text[size:index]ifpieceindic:index=size 1breakindexindex=index-1result.append(piece)result.reverse()returnresult
分詞的結(jié)果如下所示,這個(gè)結(jié)果就很準(zhǔn)確了。
text=\\\’研究生命的起源\\\’tokenizer=rmm()print(tokenizer.cut(text))
輸出結(jié)果如下所示。
[\\\’研究\\\’,\\\’生命\\\’,\\\’的\\\’,\\\’起源\\\’]
3. 雙向最大匹配
雙向最大匹配法是將正向最大匹配法得到的分詞結(jié)果和逆向最大匹配法得到的結(jié)果進(jìn)行比較,然后按照最大匹配原則,選取詞數(shù)切分最少的作為結(jié)果。
據(jù)sun m.s.和benjamin k.t.研究表明,對(duì)于中文中90.0%%u5de6右的句子,正向最大匹配和逆向最大匹配的切分結(jié)果完全重合且正確,只有大概9.0%%u7684句子采用兩種切分方法得到的結(jié)果不一樣,但其中必有一個(gè)是正確的(歧義檢測(cè)成功),只有不到1.0%%u7684句子,或者正向最大匹配和逆向最大匹配的切分結(jié)果雖重合卻都是錯(cuò)的,或者正向最大匹配和逆向最大匹配的切分結(jié)果不同但兩個(gè)都不對(duì)(歧義檢測(cè)失敗)。這正是雙向最大匹配法在實(shí)用中文信息處理系統(tǒng)中得以廣泛使用的原因所在。
前面列舉的“南京市長(zhǎng)江大橋”采用雙向最大匹配法進(jìn)行切分,中間產(chǎn)生“南京市/ 江/ 大橋”和“南京市/ 長(zhǎng)江大橋”兩種結(jié)果,最終選取詞數(shù)較少的“南京市/ 長(zhǎng)江大橋”這一結(jié)果。
雙向最大匹配的規(guī)則如下所示。
(1) 如果正反向分詞結(jié)果詞數(shù)不同,則取分詞數(shù)量較少的那個(gè)結(jié)果(上例:“南京市/江/大橋&rdqu
上一個(gè):RTT252001BTE現(xiàn)貨庫存,最新價(jià)格
下一個(gè):四級(jí)五級(jí)電力承試資質(zhì)設(shè)備在哪里選購

電伴熱中單根的施工和接線盒數(shù)量的確定
好茶是怎么煉成的之工藝稱重
快手突然發(fā)不了作品怎么辦(快手突然發(fā)不了作品了)
怎么測(cè)試小米3性能,小米3性能
LR4527-25R025FA,旺詮合金4527 25mΩ ±1% 5W
cpu怎么測(cè)體質(zhì),怎么看cpu體質(zhì)
ryzen52600相當(dāng)于酷睿多少(ryzen系列處理器)
茶樹芽枯病| 茶樹芽枯病的癥狀|茶樹芽枯病的防治
合同沒約定違約金可要求違約方賠償嗎
怎么用volte通話,電信卡怎么使用volte
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos