自然語(yǔ)言處理是 ai 皇冠上的明珠,而語(yǔ)料預(yù)處理是自然語(yǔ)言處理的基礎(chǔ)。
機(jī)器能跟人類交流嗎?能像人類一樣理解文本嗎?這是大家對(duì)人工智能最初的想象。如今,nlp 技術(shù)可以充當(dāng)人類和機(jī)器之間溝通的橋梁。環(huán)顧周圍的生活,我們隨時(shí)可以享受到 nlp 技術(shù)帶來(lái)的便利,語(yǔ)音識(shí)別、機(jī)器翻譯、問(wèn)答系統(tǒng)等等。
這些技術(shù)看起來(lái)高深莫測(cè),實(shí)則都有章可循。當(dāng)你了解算法的底層原理后,你可能會(huì)恍然大悟,嗨!這也不是很難理解嘛。
現(xiàn)在你可以跟隨本文,初探 nlp 技術(shù)的地基(語(yǔ)料預(yù)處理)是如何構(gòu)建起來(lái)的。在之后的文章中,我們將循序漸進(jìn)地介紹 nlp 中的特征提取以及最新算法解讀。
語(yǔ)料,顧名思義就是我們平時(shí)所說(shuō)的文本,帶有文字描述性的文本都可以歸類于語(yǔ)料。但這種原始文本無(wú)法直接用來(lái)訓(xùn)練模型,需要進(jìn)行前期預(yù)處理。
語(yǔ)料預(yù)處理方法主要包括數(shù)據(jù)清洗、分詞、詞性標(biāo)注、去停用詞等。
語(yǔ)料清洗
語(yǔ)料清洗即保留語(yǔ)料中有用的數(shù)據(jù),刪除噪音數(shù)據(jù)。常見(jiàn)的清洗方式有:人工去重、對(duì)齊、刪除、標(biāo)注等。
以下面的文本為例。該文本不僅包含中文字符,還包括數(shù)字、英文字符、標(biāo)點(diǎn)等非常規(guī)字符,這些都是無(wú)意義的信息,需要進(jìn)行清洗。
像上述情況,清洗的方法主要是通過(guò)正則表達(dá)式。可以編寫簡(jiǎn)短的 python 小腳本來(lái)解決,代碼如下:
清洗后的結(jié)果:
除了上述需要清洗的形式以外,噪音數(shù)據(jù)還包括文本重復(fù)、錯(cuò)誤、缺失、異常等。清洗的方法包括手動(dòng)處理,或者通過(guò)開(kāi)發(fā)小工具、寫個(gè)簡(jiǎn)短的小程序,這些方式都可以進(jìn)行數(shù)據(jù)清洗。
分詞
數(shù)據(jù)清洗完,就可以進(jìn)行下一步工序:文本分詞。文本分詞,即將文本分成一個(gè)一個(gè)的詞語(yǔ)。常用的分詞方法有基于規(guī)則的、基于統(tǒng)計(jì)的分詞方法,而統(tǒng)計(jì)的樣本內(nèi)容來(lái)自于一些標(biāo)準(zhǔn)的語(yǔ)料庫(kù)。
例如這個(gè)句子:「小明住在朝陽(yáng)區(qū)」,我們期望語(yǔ)料庫(kù)統(tǒng)計(jì)后分詞的結(jié)果是:「小明 / 住在 / 朝陽(yáng) / 區(qū)」,而不是「小明 / 住在 / 朝 / 陽(yáng)區(qū)」。那么如何做到這一點(diǎn)呢?
從統(tǒng)計(jì)的角度,可以通過(guò)條件概率分布來(lái)解決。對(duì)于一個(gè)新的句子,我們可以通過(guò)計(jì)算各種分詞方法對(duì)應(yīng)的聯(lián)合分布概率,找到最大概率對(duì)應(yīng)的分詞方法,即為最優(yōu)分詞。
到目前為止,研究者已經(jīng)開(kāi)發(fā)出許多分詞實(shí)用小工具,這些工具使用都很簡(jiǎn)單。如果你對(duì)分詞沒(méi)有特殊需求,你可以直接使用這些分詞工具。
多種分詞工具一覽。
詞性標(biāo)注
詞性標(biāo)注指為分詞結(jié)果中的每個(gè)詞標(biāo)注正確的詞性,即確定每個(gè)詞是名詞、動(dòng)詞、形容詞或其他詞性的過(guò)程。
詞性標(biāo)注有多個(gè)重要作用。
第一,消除歧義。一些詞在不同語(yǔ)境或不同用法時(shí)表示不同的意思。比如在這兩個(gè)句子「這只狗狗的名字叫開(kāi)心」和「我今天很開(kāi)心」中,「開(kāi)心」就代表了不同的含義。我們可以通過(guò)詞性標(biāo)注進(jìn)行區(qū)分。
第二,強(qiáng)化基于單詞的特征。還是以上句為例,如果不進(jìn)行詞性標(biāo)注,兩個(gè)「開(kāi)心」會(huì)被認(rèn)為是同義詞,詞頻為 2,這會(huì)在后續(xù)分析中引入誤差。
此外,詞性標(biāo)注還具有標(biāo)準(zhǔn)化、詞形還原,以及有效移除停用詞的作用。
常用的詞性標(biāo)注方法有基于規(guī)則的、基于統(tǒng)計(jì)的算法,比如:最大熵詞性標(biāo)注、hmm 詞性標(biāo)注等。
接下來(lái),我們看一個(gè)詞性標(biāo)注示例。大家也可以自己嘗試:http://ictclas.nlpir.org/nlpir/
去停用詞
我們?nèi)祟愒诮邮芟r(shí),都會(huì)濾除無(wú)效信息,篩選有用信息。對(duì)于自然語(yǔ)言來(lái)說(shuō),去停用詞是一種很明智的操作。
一篇文本,不管是中文還是英文,都有用來(lái)起連接作用的連詞、虛詞、語(yǔ)氣詞等無(wú)意義的詞,比如「的」、「吧」、「但是」等等。這些詞沒(méi)有具體的含義,只是起到銜接句子以及增強(qiáng)語(yǔ)氣的作用。這些詞對(duì)文本分析也沒(méi)有任何幫助,因此我們需要對(duì)分詞后的數(shù)據(jù)做停用詞處理。
但是我們應(yīng)該謹(jǐn)慎決定該去除哪類停用詞。
下圖列出了一些常用的停用詞表,你可以參照需求,選擇要去除的停用詞。
詞頻統(tǒng)計(jì)
詞頻統(tǒng)計(jì)即統(tǒng)計(jì)分詞后文本的詞頻,目的是找出對(duì)文本影響最大的詞匯,是文本挖掘的重要手段。統(tǒng)計(jì)這些詞出現(xiàn)的頻率可以幫助我們了解文章重點(diǎn)強(qiáng)調(diào)了什么,進(jìn)而方便后續(xù)構(gòu)建模型。
比如我們可以統(tǒng)計(jì)四大名著之一《紅樓夢(mèng)》中詞頻在前 28 的詞語(yǔ),結(jié)果如下:
從上圖可以看到,《紅樓夢(mèng)》中哪個(gè)人物的篇幅最多,哪個(gè)人物曹雪芹更注重。即使我們不是紅學(xué)專家,但是從統(tǒng)計(jì)詞頻中也可以分析出一些關(guān)鍵信息。
「萬(wàn)丈高樓平地起」,對(duì)于自然語(yǔ)言處理這座摩天大廈來(lái)說(shuō),了解底層的實(shí)現(xiàn)原理,或許能夠幫助你更好地理解其構(gòu)建過(guò)程。
怎么刪除不了文件-虛擬主機(jī)/數(shù)據(jù)庫(kù)問(wèn)題我的網(wǎng)站打開(kāi)很慢不知道是什么原因云服務(wù)器和vps 哪個(gè)好如何打造運(yùn)營(yíng)設(shè)計(jì)中打動(dòng)人心的情景體驗(yàn)網(wǎng)站服務(wù)器放置地-云服務(wù)器問(wèn)題實(shí)例介紹java中的Calendar類Linux 6下安裝編譯安裝Nginx的步驟關(guān)于企業(yè)網(wǎng)站進(jìn)行推廣中的代碼問(wèn)題