【频率分布】
目的:想通过找到一本书中使用最频繁的词汇,分析这本书的主题和风格。
频率分布:告诉我们每个词汇出现的频率。
分析高频词
-使用FreqDist寻找《白鲸记》中最常见的50个词
fdist1=FreqDist(text1)
vocabulary1=fdist.keys()//所有的词汇
vocabulary1[:50]//前50个出现频率最高的词汇
fdist1['whale'](906)//出现的次数
-累积频率图
fdist1.plot(50,cumulative=True)
-在高频词汇中,有很多无用的词汇,称作管道英语。
分析低频词
-只出现了一次的词(hapaxes)
fdist1.hapaxes()
-低频词汇也很多,如果不分析上下文很难才出他们的意义。高频和低频词汇都很少有帮助,要寻找其他办法分析。
【细粒度的选择词】
-找出长度大于15的词汇
v=set(text1)
long_words=[w for w in v if len(w)>15]
sorted(long_words)
-这样找到了长词。在此基础上,在分析长词出现的概率,会更有效。这样忽略的短高频词(the)和长低频词(antiphilosophists)。
-fdist5=FreqDist(text5)
-sorted([w for w in set(text5) if len(w)>7 and fdist5[w]>7])
【词语搭配和双连词(bigrams)】
-使用bigrams提取文本词汇中的词对,也就是双连词。
bigrams(['more','is','said','than','done'])
-text4.collocations()找到比我们基于单个词的频率预期得到的更频繁出现的双连词
【计数其他东西】
-查看词长的分布
[len(w) for w in text1]
fdist=FreqDist([len(w) for w in text1])
fdist.keys()
fdist.items()
fdist.max()//出现长度最多的数值
fdist[3]//3对应出现的次数
fdist.freq(3)//出现的频率
-一些常用的NLTK频率分布类中定义的函数
fdist=FreqDist(samples)创建包含给定样本的频率分布
fist.inc(sample)增加样本
fdist['monstrous']计数给定样本出现的次数
fdist.freq('monstrous')给定样本的频率
fdistN()样本总数
fdist.keys()以频率递减顺序排序的样本链表
for sample in fdist:以频率递减的顺序遍历样本
fdist.max()数值最大的样本
fdist.tabulate()绘制频率分布表
fdist.plot()绘制频率分布图
fdist.plot(cumulative=True)绘制累计频率分布图
fdist1<fdist2测试样本在fdist1中出现的概率是否小于fdist2