Python3自然语言处理(1)——语言处理与Python
注:转载请联系博主,或关注微信公众号"引文空间",后台提出转载申请,等待回复。否则将举报抄袭!
《Python自然语言处理》是美国斯坦福大学Steven Bird,Edward Loper和Ewan Klein编著的NLP实用书籍,该书条理清晰,内容详尽,适合各种技术水平的读者,非常值得推荐,但是书中所用的Python版本为Python2,而目前Python使用和学习的主流为Python3,这给学习NLP的读者们可能造成困扰,因为Python3并不向下兼容Python2。
笔者通过对该书的学习,并尝试利用Python3来实现书中的功能,将自己的学习心得发表在公众号"引文空间"上,为了使更多人能够看到,转载到了该平台,内容将不断更新。由于本人水平有限,有一些功能可能在用Python3操作时考虑不周,或者方法不够简易,恳请读者谅解,若读者对内容有新见解或新方法,欢迎提出探讨。
第一章 语言处理与Python
首先要安装NLTK,可以从http://www.nltk.org上下载,也可以通过pip下载,即:
pip install nltk
安装完成后,启动Python解释器,输入如下代码:
import nltk
nltk.download()
选择book标记所在行,下载数据。数据下载完成后可将模块导入Python:
from nltk.book import *
回车后,编辑器显示如下:
*** Introductory Examples for the NLTK Book ***
Loading text1, ..., text9 and sent1, ..., sent9
Type the name of the text or sentence to view it.
Type: 'texts()' or 'sents()' to list the materials.
text1: Moby Dick by Herman Melville 1851
text2: Sense and Sensibility by Jane Austen 1811
text3: The Book of Genesis
text4: Inaugural Address Corpus
text5: Chat Corpus
text6: Monty Python and the Holy Grail
text7: Wall Street Journal
text8: Personals Corpus
text9: The Man Who Was Thursday by G . K . Chesterton 1908
需要找这些文本的时候,只要输入名字(如text1)即可:
>>>text1
<Text: Moby Dick by Herman Melville 1851>
后面的一些部分都是Python的一些基础功能,在此不再赘述,在“频率分布”部分,Python3的操作与Python2有所差别。书上的例子为利用FreqDist寻找《白鲸记》中出现的的前50个高频词,原代码如下:
fdist1=FreqDist(text1)
vocabulary1=fdist1.keys()
vocabulary1[:50]
在Python3中运行此代码,会如此报错:
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
vocabulary1[:50]
TypeError: 'dict_keys' object is not subscriptable
解决这个问题我们可以把字典的键放到列表里,