python 英语分词_NLTK(一):英文分词分句
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。
一、NLTK 的安裝
如果是python 2.x 的環(huán)境,安裝命令如下:
sudo pip install nltk
如果是python 3.x 的環(huán)境,安裝命令如下:
sudo pip3 install nltk
成功地執(zhí)行了上述命令后,NLTK 的安裝還沒有徹底地完成,還需要在 python 中執(zhí)行如下的代碼:
import nltk
nltk.download()
代碼執(zhí)行后,會(huì)彈出如下的界面:
NLTKInstall.png
點(diǎn)擊 “all” 這一行,然后點(diǎn)擊 “Download” 按鈕進(jìn)行下載?!癉ownload Directory” 一開始可以先隨便設(shè)置,但文件夾的名字必須是 nltk_data,下載完成后可以先執(zhí)行一段分詞的代碼(隨后將會(huì)提到這段代碼),代碼會(huì)報(bào)錯(cuò),錯(cuò)誤提示說找不到相應(yīng)的資源文件,并在這段錯(cuò)誤提示中告訴我們應(yīng)該把剛才下載下來的資源放到哪里。你可能會(huì)疑惑:為什么不在下載之前將 “Download Directory” 設(shè)置正確呢?這是因?yàn)槲覀円婚_始也不知道正確的 “Download Directory” 是什么,所以先隨便設(shè)置了一個(gè),然后通過錯(cuò)誤提示再將下載好的資源放到正確的路徑下面。
資源下載過程中可能會(huì)多次出現(xiàn)下載異常的情況,每次遇到這種情況后,關(guān)掉正在執(zhí)行的代碼,然后重新執(zhí)行代碼進(jìn)行下載即可。
二、分詞
1、分詞方式
分詞使用的方法是 word_tokenize(),分詞的代碼如下:
from nltk.tokenize import word_tokenize
data = "All work and no play makes jack a dull boy, all work and no play"
print(word_tokenize(data))
代碼執(zhí)行結(jié)果如下:
['All', 'work', 'and', 'no', 'play', 'makes', 'jack', 'a', 'dull', 'boy', ',', 'all', 'work', 'and', 'no', 'play']
注意:上述結(jié)果集中有一個(gè) “逗號(hào)”,也被當(dāng)做了一個(gè)詞。
2、停用詞
英文中的停用詞如 “the”,“is”,“are” 等等。在自然語言處理(NLP)中沒有通用的停用詞列表,然而這里,在 NLTK 模塊有其自帶的停用詞列表。
去停用詞的代碼如下:
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
data = "All work and no play makes jack dull boy. All work and no play makes jack a dull boy."
stopWords = set(stopwords.words('english'))
words = word_tokenize(data)
wordsFiltered = []
for w in words:
if w not in stopWords:
wordsFiltered.append(w)
print(wordsFiltered)
提示:
1、如果我們想要修改 NLTK 的停用詞列表,可以去我們一開始提到的下載的資源中去修改。具體位置是在 nltk_data --> corpora --> stopwords 文件夾中,進(jìn)入這個(gè)文件夾后,我們會(huì)發(fā)現(xiàn)很多種語言的停用詞列表,然后按照自己的需要進(jìn)行修改即可。
2、NLTK 不支持對中文的分詞,如果想要對中文進(jìn)行分詞,可以考慮使用結(jié)巴(jieba)分詞,這里不再做過多闡述。
三、分句
分句使用的方法是 sent_tokenize(),分句的代碼如下:
from nltk.tokenize import sent_tokenize
data = "All work and no play makes jack dull boy. All work and no play makes jack a dull boy."
print(sent_tokenize(data))
代碼執(zhí)行結(jié)果如下:
['All work and no play makes jack dull boy.', 'All work and no play makes jack a dull boy.']
提示:和分詞一樣,NLTK 同樣不支持對中文的分句。具體支持哪些語言的分句,可以參考 nltk_data --> tokenizers --> punkt,進(jìn)入這個(gè)文件夾后就一目了然了。
多說一點(diǎn):
NLTK 支持的分句方式不止這一種類型,但無論哪種類型,都是相對簡單的。如果直接應(yīng)用到工業(yè)中一般都會(huì)多少出現(xiàn)一些這樣或那樣的問題。因?yàn)樵诂F(xiàn)實(shí)當(dāng)中存在很多習(xí)慣性的非正式的縮寫,同時(shí)一個(gè)詞里面可能包含某些特殊符號(hào)等,這些因素都會(huì)導(dǎo)致分詞的錯(cuò)誤。目前的解決方案主要是通過自定義詞典來彌補(bǔ)上述的不足。
相關(guān)文檔
總結(jié)
以上是生活随笔為你收集整理的python 英语分词_NLTK(一):英文分词分句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA查看maven依赖关系的方法
- 下一篇: 【深度学习实战04】——SSD tens