NLTK语言处理与文本
----语言处理与文本----
从NLTK中导入文本
from nltk.book import *
texts()
help(Text)
文本操作
1. 文本检索
接受一个单词字符串,打印出输入单词在文本中出现的上下文,查看单词的上下文可以帮助我们了解单词的词性。可指定窗口大小
text1.concordance('have',30,10)
text1.concordance('have')
2. 根据上下文寻找
打印出和输入单词具有相同上下文的其他单词,也就是说找到用法、意义与该单词相似的词。第二个参数为显示目标个数,默认为20
text1.similar('have',5)
text1.similar('time')
运行结果:
had be see was say
whale ship sea boat way man hand night deck world whales crew it one side water head moment pequod day
找到两个或多个特定单词上下文中的公共词汇即共同的上下文
text1.common_contexts(['have','time'])
text2.common_contexts(['monstrous','very'])
s_a s_that
am_glad a_pretty a_lucky is_pretty be_glad
3.找搭配词
经常一起出现的双连词text4.collocations()
4.词汇分布图的绘制
生成散点图
text4.dispersion_plot(["citizens","democracy","freedom","duties","American"])
5.文本词汇计数与排序
len(text3) //text3文章词汇个数
len(set(text3)) //去重后的词汇个数
sorted(set(text3)) //去重后排序
练习:文本词汇计数与排序
1.统计text4文本单词总数;
2.统计text4文本中不重复的单词个数;
3. 打印text4文本中前100个单词;
4. 打印text4去重后文本中的前100个单词;
5. 对text4去重后,并排序,然后打印前20个单词。
print(len(text4))
print(len(set(text4)))
print(text4[:100])
a = list(set(text4))
print(a[:100])
b = list(sorted(set(text4)))
print(b[:20])
注意:set不可切片,转换成list再进行切片即可
6.文本词汇丰富度度量
平均每个词在文本中被使用的次数len(x)/len(set(x))
统计某个词在文本中出现次数x.count("y")
其占据百分比100*x.count("y")/len(x)
def lexical_diversity(text):
return len(text) / len(set(text)); # 建立函数测算某个文本中所有单词出现的平均次数
def percentage(count, total):
return 100 * count / total; # 建立函数测算某个单词在某个文本中所占的百分比
文本简单统计
1.频率分布
用FreqDist进行频率分布统计,注意得到的是字典型数据结构,需要转换成list才能进行切片处理。
fdist1 = FreqDist(text1)
FreqDist({’,’: 18713, ‘the’: 13721, ‘.’: 6862, ‘of’: 6536, ‘and’: 6024, ‘a’: 4569, ‘to’: 4542, ‘;’: 4072, ‘in’: 3916, ‘that’: 2982, …})
vocabulary1=list(fdist1.keys())
vocabulary1