NLTK基礎 | 一文輕鬆使用NLTK進行NLP任務(附視頻)

NLTK作爲文本處理的一個強大的工具包,爲了幫助NLPer更深入的使用自然語言處理(NLP)方法。本公衆號開更Natural Language Toolkit(即NLTK)模塊的“ Natural Language Processing”教程系列。

NLTK在文本領域堪稱網紅屆一姐的存在,可以幫助在文本處理中減少很多的麻煩,比如從段落中拆分句子,拆分單詞,識別這些單詞的詞性,突出顯示主要的topic,甚至可以幫助機器理解文本的全部內容,在本系列中,我們將主要討論觀點挖掘和情感分析領域。

在之後學習NLTK的過程中,我們將主要學習以下內容:

  • 將文本切分成句子或者單詞

  • NLTK命名實體識別

  • NLTK文本分類

  • 如何將Scikit-learn (sklearn)和NLTK結合使用

  • 使用Twitter執行實時,流式傳輸,情感分析

  • .......

歡迎大家持續關注“AI算法之心

在學習NLTK之前,當然是NLTK的安裝。在安裝NLTK之前,首先需要安裝Python

這裏就此略過......

注意:請安裝python3的環境

接下來就是安裝NLTK3,最簡單的安裝NLTK模塊的方法是使用pip。

這裏針對Linux(Windows和Mac os應該也差不多,筆者太窮,買不起Mac,筆者就不嘗試了......)

pip install nltk

接下來,我們需要爲NLTK安裝一些組件。通過通常的方式(jupyter裏面也可以哦)打開python並輸入:

import nltk
nltk.download()

一般地,GUI會像這樣彈出,只有紅色而不是綠色:

GUI界面

選擇下載所有軟件包的“all”,然後單擊“download”。這將提供所有標記器,分塊器,其他算法以及所有語料庫。如果空間有限,可以選擇手動選擇下載所需要的內容。NLTK模塊將佔用大約7MB,整個nltk_data目錄將佔用大約1.8GB,其中包括分塊器,解析器和語料庫。

如果沒有上述界面,可以通過命令行下載

import nltk
nltk.download()
d (for download)
all (for download everything)

這樣一來,就可以下載所有內容。

安裝完成後,下面我們來簡單的瞭解一些相關知識。下面舉個例子,說明如何使用NLTK模塊,比如將一段話按照句子粒度劃分:

from nltk.tokenize import sent_tokenize, word_tokenize
EXAMPLE_TEXT = "Hello Mr. Smith, how are you doing today? The weather is great, and Python is awesome. The sky is pinkish-blue. You shouldn't eat cardboard."
print(sent_tokenize(EXAMPLE_TEXT))

最初,或許你會認爲通過單詞或句子之類的標記進行標記是一件微不足道的事情。對於很多句子來說都可以。第一步可能是做一個簡單的.split('.'),或按句點和空格分隔。然後,也許會引入一些正則表達式以"."," "和大寫字母(針對英文語料)分隔。問題是像"Mr. Smith"這樣的事情會帶來麻煩,還有許多其他事情。

另外,按單詞拆分也是一個挑戰,尤其是在考慮像我們這樣的串聯這樣的事情時。NLTK將會繼續前進,並且通過這種看似簡單但非常複雜的操作在文本處理的時候節省大量時間。

上面的代碼將輸出句子,分爲句子列表。

['Hello Mr. Smith, how are you doing today?', 'The weather is great, and Python is awesome.', 'The sky is pinkish-blue.', "You shouldn't eat cardboard."]

下面我們將這段話按照詞的劃分試試:

print(word_tokenize(EXAMPLE_TEXT))

現在我們得到的輸出是:

['Hello', 'Mr.', 'Smith', ',', 'how', 'are', 'you', 'doing', 'today', '?', 'The', 'weather', 'is', 'great', ',', 'and', 'Python', 'is', 'awesome', '.', 'The', 'sky', 'is', 'pinkish-blue', '.', 'You', 'should', "n't", 'eat', 'cardboard', '.']

這裏有幾件事要注意。首先,請注意,標點符號被視爲單獨的詞。另外,請注意將單詞“shouldn't”分爲“should”和“n't”。最後,“pinkish-blue”確實被當作它要變成的"one word"。太酷了!

現在,看看這些標記化的單詞,我們必須開始考慮下一步可能是什麼。我們開始思考如何通過看這些單詞來產生意義。我們可以清楚地想到爲許多單詞賦予價值的方法,但是我們也看到了一些基本上毫無價值的單詞。這些是停用詞(stopwords)的一種形式,我們也可以處理。下一篇我們將介紹NLTK中的stopwords,歡迎關注哦!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章