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