本節書摘來異步社群《nltk基礎教程——用nltk和python庫建構機器學習應用》一書中的第2章,第2.7節,作者:nitin hardeniya,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
停用詞移除(stop word removal)是在不同的nlp應用中最常會用到的預處理步驟之一。該步驟的思路就是想要簡單地移除語料庫中的在所有文檔中都會出現的單詞。通常情況下,冠詞和代詞都會被列為停用詞。這些單詞在一些npl任務(如說關于資訊的檢索和分類的任務)中是毫無意義的,這意味着這些單詞通常不會産生很大的歧義。恰恰相反的是,在某些npl應用中,停用詞被移除之後所産生的影響實際上是非常小的。在大多數時候,給定語言的停用詞清單都是一份通過人工制定的、跨語料庫的、針對最常見單詞的停用詞清單。雖然大多數語言的停用詞清單都可以在相關網站上被找到,但也有一些停用詞清單是基于給定語料庫來自動生成的。有一種非常簡單的方式就是基于相關單詞在文檔中出現的頻率(即該單詞在文檔中出現的次數)來建構一個停用詞清單,出現在這些語料庫中的單詞都會被當作停用詞。經過這樣的充分研究,我們就會得到針對某些特定語料庫的最佳停用詞清單。nltk庫中就内置了涵蓋22種語言的停用詞清單。
下面就來具體實作一下停用詞移除的整個過程,這是一段用nltk來處理停用詞的代碼。當然,你也可以像第1章“自然語言處理簡介”中那樣建立一個字典,然後通過查找的方法來解決這個問題。
在上述代碼片段中,我們所做的是和第1章“自然語言處理簡介”中一樣的停用詞移除操作,但這裡部署的是一個更為簡潔的版本。之前,我們是基于查表法來做的。即使在目前情況下,nltk内部所采用的仍然是一個非常類似的方法。這裡建議使用nltk的停用詞清單,因為這是一個更為标準化的清單,相比其他所有的實作都更為健全。而且,我們可以通過向該庫的停用詞構造器傳遞一個語言名稱參數,來實作針對其他語言的類似方法。
在移除停用詞的操作中,背後的數學運算是什麼?
在停用詞被移除之後,我們就可以執行哪些nlp操作了?