当前位置:   article > 正文

NLP自然语言处理001:NLTK入门_nltk函数的使用《白鲸》使用plot函数可绘制指定的常用词累计频率图 import matplo

nltk函数的使用《白鲸》使用plot函数可绘制指定的常用词累计频率图 import matplo

准备写一个系统的nlp入门博客,就从 nltk 开始把。
NLTK:Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。

我们需要通过他里面的数据来进行学习和练习。

NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发 [1] 。
NLTK由StevenBird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。
NLTK包括图形演示和示例数据。其提供的教程解释了工具包支持的语言处理任务背后的基本概念。

直接pip install 安装即可。
在这里插入图片描述
安装完成之后,导入nltk、

nltk.download()
  • 1

使用nltk.download()可以浏览可用的软件包,我们要下载nltk图书集来下载我们学习需要的例子和练习所需要的全部数据。

在这里插入图片描述
选中book后,点击download(),大约有100mb,下载需要点时间。
在这里插入图片描述
。。。
这个装的贼慢。。
装好了就导入book
运行下看看
在这里插入图片描述
当我们需要这些文本的时候,只需要输入名字就可以了。

搜索文本:

我们通过 concordance(检索文章中的某个词)函数来看下text1《白鲸记》中的词"monstrous":
在这里插入图片描述
翻译过来:
在这里插入图片描述
使用 similar 函数可以看到与某词有相似的上下文的其他词:

print(text2.similar('monstrous')) 
  • 1

使用 common_contexts 两个或两个以上的词的共同的上下文

print(text2.common_contexts(['monstrous','very']))
  • 1

使用 dispersion_plot 可以判断词在文本中的位置;竖线代表单词,行代表文本;可以用来研究随时间推移语言使用上的变化

print(text4.dispersion_plot(['citizens','democracy','freedom','duties','America']))#美国总统就职演说词汇分布图
  • 1

在这里插入图片描述

词汇计数:

可以用 len 来统计所有的词数,包括词和标点符号。

print(len(text3)) # <创世纪>中的词汇计数,也叫标识符。

print(sorted(set(text3)))
  • 1
  • 2
  • 3

在这里插入图片描述
可以看到,一共出现了有44764个标识符,下面使用set过滤sorted排序后就出现了标点符号之类的。

我们可以简单算下,每个词平均出现的词数。

s = sorted(set(text3))
print(44764 /len(s))
  • 1
  • 2

输出结果为:16.050197203298673

下面我们来针对一个词,计算他出现的词数。计算他出现的百分比。

print(text3.count('smote'))
print('%',(text4.count('a')/len(text4))*100)
  • 1
  • 2

输入结果:
>>>5
>>> % 1.4643016433938312

smote在text3中出现了5次
‘a’ 在text4中出现的百分比是 1.46%

频率分布:

我们可以使用 FreqDist 来查找《白鲸记》中最常见的前50个词。

fdist1 = FreqDist(text1)
print(fdist1)
v = fdist1.keys()
print(list(v)[:50])
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
使用 plot 可以绘制出50个最常用词的累计频率图。

fdist1.plot(50,cumulative=True)
  • 1

在这里插入图片描述

可以使用 hapaxes()函数来查看只出现了一次的低频词。

print(fdist1.hapaxes())
  • 1

细粒度的选择词:

让我们看看文本中的长词,也许他们有更多的特征和信息量。
我们想要找出文本词汇表长度超过15个字符的词汇

则:

v = set(text1)
long_words = [i for i in v if len(i)>15]
print(sorted(long_words))
  • 1
  • 2
  • 3

输出:
在这里插入图片描述

再写一个长度大于 7 且 出现次数大于7的词:

fdist5 = FreqDist(text5)
print(sorted([i for i in set(text5) if len(i) > 7 and fdist5[i] > 7]))
  • 1
  • 2

在这里插入图片描述

另外可以通过 collocations 函数来统计频繁出现的双连词。

text4.collocations()
  • 1

NLTK频率分布类中定义的函数:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/991401
推荐阅读
相关标签
  

闽ICP备14008679号