绘制文本语料库中某些单词的条件频率分布时,y轴显示为计数,而不是百分比
我遵循Steven Bird,Ewan Klein和Edward Loper在“ Python自然语言处理”中概述的代码,以显示Jupyter笔记本中UDHR的不同语言的单词频率分布。
from nltk.corpus import udhr
languages = ['Chickasaw', 'English', 'German_Deutsch', 'Greenlandic_Inuktikut', 'Hungarian_Magyar', 'Ibibio_Efik']
cfd = nltk.ConditionalFreqDist((lang, len(word)) for lang in languages\
for word in udhr.words(lang + '-Latin1'))
cfd.plot(cumulative = True)
我希望y轴显示累积百分比(如本书中所示),但y轴显示累积计数。 请提供有关如何将y轴转换为累计百分比的建议。
答案 0 :(得分:1)
这里是一个解决方案,将提供您想要的输出:
inltk.download('udhr')
import pandas as pd
from nltk.corpus import udhr
languages = ['Chickasaw', 'English', 'German_Deutsch', 'Greenlandic_Inuktikut', 'Hungarian_Magyar', 'Ibibio_Efik']
cfd = nltk.ConditionalFreqDist(
(lang, len(word))
for lang in languages
for word in udhr.words(lang + '-Latin1'))
def plot_freq(lang):
max_length = max([len(word) for word in udhr.words(lang + '-Latin1')])
eng_freq_dist = {}
for i in range(max_length + 1):
eng_freq_dist[i] = cfd[lang].freq(i)
ed = pd.Series(eng_freq_dist, name=lang)
ed.cumsum().plot(legend=True, title='Cumulative Distribution of Word Lengths')
然后,我们可以使用此新功能来绘制示例中提供的所有语言:
for lang in languages:
plot_freq(lang)
在此线程中,我们将讨论摘自NLTK book第2章的示例。