天天看點

《NLTK基礎教程——用NLTK和Python庫建構機器學習應用》——2.4 辨別化處理

本節書摘來異步社群《nltk基礎教程——用nltk和python庫建構機器學習應用》一書中的第2章,第2.4節,作者:nitin hardeniya,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

機器所要了解的最小處理機關是單詞(即分詞)。是以除了辨別化處理之外,我們不宜再對這些文本字元串做更進一步的處理。這裡所謂的辨別化,實際上就是一個将原生字元串分割成一系列有意義的分詞。辨別化處理的複雜性因具體的nlp應用而異,當然目智語言本身的複雜性也會帶來相關的變化。例如在英語中,我們可以通過正規表達式這樣簡單的方式來選取純單詞内容和數字。但在中文和日文中,這會成為一個非常複雜的任務。

在上述代碼中,我們用到了各種辨別器(tokenizer)。我們從最簡單的——python字元串類型的split()方法開始。這是一個最基本的辨別器,使用空白符來執行單詞分割。當然,split()方法本身也可以被配置成一些較為複雜的辨別化處理過程。是以在上面的例子中,我們其實很難找出s.split()與word_tokenize()這兩個方法之間的差異。

word_tokenize()方法則是一個通用的、更為強大的、可面向所有類型語料庫的辨別化處理方法。當然,word_tokenize()是nltk庫的内置方法。如果你不能通路它,那就說明在安裝nltk資料時出了些差錯。請參照第1章“自然語言處理簡介”中的内容來安裝它。

通常情況下,我們有兩個最常用的辨別器。第一種是word_tokenize(),這是我們的預設選擇,基本上能應付絕大多數的情況。另一選擇是regex_tokenize(),這是一個為使用者特定需求設計的、自定義程度更高的辨別器。其他的大部分辨別器都可以通過繼承正規表達式的辨別器來實作。我們也可以利用某種不同的模式來建構一個非常具體的辨別器。如在上述代碼的第8行,我們也可以基于正規表達式的辨別器分割出相同的字元串。你可以用w+這個正規表達式,它會從目标字元串中分隔出所有我們所需要的單詞和數字,其他語義符号也可以通過類似的分割器來進行分離,如對于上述代碼的第 10 行,我們可以使用d+這個正規表達式。這樣我們就能從目标字元串中提取出純數字内容。

現在,你能為提取大小寫單詞、數字和金錢符号建構專用的正規表達式辨別器嗎?

提示:隻需參考之前正規表達式的查詢模式來使用regex_tokenize()即可。