1. 程式人生 > >自然語言處理(二)

自然語言處理(二)

all form 方法 clas lib port sha err model

使用python進行自然語言處理,有一些第三方庫供大家使用:

·NLTK(Python自然語言工具包)用於諸如標記化、詞形還原、詞幹化、解析、POS標註等任務。該庫具有幾乎所有NLP任務的工具。

·Spacy是NLTK的主要競爭對手。這兩個庫可用於相同的任務。

·Scikit-learn為機器學習提供了一個大型庫。此外還提供了用於文本預處理的工具。

·Gensim是一個主題和向量空間建模、文檔集合相似性的工具包。

·Pattern庫的一般任務是充當Web挖掘模塊。因此,它僅支持自然語言處理(NLP)作為輔助任務。

·Polyglot是自然語言處理(NLP)的另一個Python工具包。它不是很受歡迎,但也可以用於各種NLP任務。

先由nltk入手學習。

1. NLTK安裝

簡單來說還是跟python其他第三方庫的安裝方式一樣,直接在命令行運行:pip install nltk

2. 運行不起來?

當你安裝完成後,想要試試下面的代碼對一段英文文本進行簡單的切分:

import nltk
text=nltk.word_tokenize("PierreVinken , 59 years old , will join as a nonexecutive director on Nov. 29 .
") print(text)

運行結果, 報錯如下:

...
    raise LookupError(resource_not_found)
LookupError: 
**********************************************************************
  Resource punkt not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download(
punkt) For more information see: https://www.nltk.org/data.html Attempted to load tokenizers/punkt/english.pickle Searched in: - C:\\Users\\Administrator/nltk_data - C:\\Users\\Administrator\\Desktop\\meatwice\\venv\\nltk_data - C:\\Users\\Administrator\\Desktop\\meatwice\\venv\\share\\nltk_data - C:\\Users\\Administrator\\Desktop\\meatwice\\venv\\lib\\nltk_data - C:\\Users\\Administrator\\AppData\\Roaming\\nltk_data - C:\\nltk_data - D:\\nltk_data - E:\\nltk_data - ‘‘ **********************************************************************

3. 解決方法:

不用著急,解決方法在異常中已經給出來了

技術分享圖片

命令行進入python交互模式,運行如下:

import nltk
nltk.download()

然後會彈出一個窗口,點擊models,找到punkt,雙擊進行下載即可。

技術分享圖片

然後運行開始的那段python代碼,對文本進行切分:

import nltk
text=nltk.word_tokenize("PierreVinken , 59 years old , will join as a nonexecutive director on Nov. 29 .")
print(text)

結果如下,不會報錯:

技術分享圖片

4. nltk的簡單使用方法。

上面看了一個簡單的nltk的使用示例,下面來具體看看其使用方法。

4.1 將文本切分為語句, sent_tokenize()

from nltk.tokenize import sent_tokenize
text=" Welcome readers. I hope you find it interesting. Please do reply."
print(sent_tokenize(text))

從標點處開始切分,結果:

技術分享圖片

4.2 將句子切分為單詞, word_tokenize()

from nltk.tokenize import word_tokenize
text=" Welcome readers. I hope you find it interesting. Please do reply."
print(word_tokenize(text))

切分成單個的單詞,運行結果:

技術分享圖片

4.3.1 使用 TreebankWordTokenizer 進行切分

from nltk.tokenize import TreebankWordTokenizer
tokenizer = TreebankWordTokenizer()
print(tokenizer.tokenize("What is Love? I know this question exists in each human being‘s mind including myself. If not it is still waiting to be discovered deeply in your heart. What do I think of love? For me, I believe love is a priceless diamond, because a diamond has thousands of reflections, and each reflection represents a meaning of love."))

也是將語句切分成單詞,運行結果:

技術分享圖片

自然語言處理(二)