赞
踩
准备写一个系统的nlp入门博客,就从 nltk 开始把。
NLTK:Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。
我们需要通过他里面的数据来进行学习和练习。
NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发 [1] 。
NLTK由StevenBird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。
NLTK包括图形演示和示例数据。其提供的教程解释了工具包支持的语言处理任务背后的基本概念。
直接pip install 安装即可。
安装完成之后,导入nltk、
nltk.download()
使用nltk.download()可以浏览可用的软件包,我们要下载nltk图书集来下载我们学习需要的例子和练习所需要的全部数据。
选中book后,点击download(),大约有100mb,下载需要点时间。
。。。
这个装的贼慢。。
装好了就导入book
运行下看看
当我们需要这些文本的时候,只需要输入名字就可以了。
我们通过 concordance(检索文章中的某个词)函数来看下text1《白鲸记》中的词"monstrous":
翻译过来:
使用 similar 函数可以看到与某词有相似的上下文的其他词:
print(text2.similar('monstrous'))
使用 common_contexts 两个或两个以上的词的共同的上下文
print(text2.common_contexts(['monstrous','very']))
使用 dispersion_plot 可以判断词在文本中的位置;竖线代表单词,行代表文本;可以用来研究随时间推移语言使用上的变化
print(text4.dispersion_plot(['citizens','democracy','freedom','duties','America']))#美国总统就职演说词汇分布图
可以用 len 来统计所有的词数,包括词和标点符号。
print(len(text3)) # <创世纪>中的词汇计数,也叫标识符。
print(sorted(set(text3)))
可以看到,一共出现了有44764个标识符,下面使用set过滤sorted排序后就出现了标点符号之类的。
我们可以简单算下,每个词平均出现的词数。
s = sorted(set(text3))
print(44764 /len(s))
输出结果为:16.050197203298673
下面我们来针对一个词,计算他出现的词数。计算他出现的百分比。
print(text3.count('smote'))
print('%',(text4.count('a')/len(text4))*100)
输入结果:
>>>5
>>> % 1.4643016433938312
smote在text3中出现了5次
‘a’ 在text4中出现的百分比是 1.46%
我们可以使用 FreqDist 来查找《白鲸记》中最常见的前50个词。
fdist1 = FreqDist(text1)
print(fdist1)
v = fdist1.keys()
print(list(v)[:50])
使用 plot 可以绘制出50个最常用词的累计频率图。
fdist1.plot(50,cumulative=True)
可以使用 hapaxes()函数来查看只出现了一次的低频词。
print(fdist1.hapaxes())
让我们看看文本中的长词,也许他们有更多的特征和信息量。
我们想要找出文本词汇表长度超过15个字符的词汇
则:
v = set(text1)
long_words = [i for i in v if len(i)>15]
print(sorted(long_words))
输出:
再写一个长度大于 7 且 出现次数大于7的词:
fdist5 = FreqDist(text5)
print(sorted([i for i in set(text5) if len(i) > 7 and fdist5[i] > 7]))
另外可以通过 collocations 函数来统计频繁出现的双连词。
text4.collocations()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。