Python NLTK就职文本公司需要动手解决方案



我正在学习NLTK Python课程,该课程在"Text Corpora"上有一个实际操作问题(在Katacoda上(,它不接受我下面提到的解决方案。我在这个问题上纠缠了很久。需要在课程中完成这个动手进行的前言。

问题定义:

导入就职演说语料库每个就职演说文本在语料库中可用,执行以下操作。将所有单词转换为小写。然后确定以"美国"开头的单词数或公民。

提示:计算条件频率分布,其中条件是发表就职演说的年份,事件是要么是美国人,要么是公民。存储条件频率变量ac_cfd中的分布

打印单词【美国】、【公民】在年份【1841,1993年]。

提示:使用与条件频率分布相关的制表方法

为此,我写了以下解决方案:

ac_cfd = nltk.ConditionalFreqDist((target, fileid[:4]) 
for fileid in inaugural.fileids() 
for w in inaugural.words(fileid) 
for target in ['america', 'citizen'] 
if w.lower().startswith(target))
ac_cfd.tabulate(conditions=['america', 'citizen'], samples=['1841', '1993'])

输出:

1841 1993 
american     7   14  
citizen     38    2

我在不同的论坛上都能找到同样的问题,尽管我确实发现了一个类似的问题,想要绘制条件频率分布,他们的解决方案和我的一样,只是有一个不同,而不是将他们绘制的线制表。(https://www.nltk.org/book/ch02.html)但Katacoda不接受这个解决方案,我无法在课程中继续前进,因为完成实践是强制性的。请帮助

使用以下代码。它在Katacoda上对我有效。有问题的是,它要求单词以美国和公民开头,因此我将单词切成7个字符。

import nltk
from nltk.corpus import inaugural
ac_cfd = nltk.ConditionalFreqDist([(fileid[:4],word.lower()[:7]) 
for fileid in inaugural.fileids() 
for word in inaugural.words(fileid)
])
print(ac_cfd.tabulate(conditions =['1841', '1993'],  samples=['america', 'citizen'] ))

america citizen 
1841       7      38    
1993      33       2 
ac_cfd = nltk.ConditionalFreqDist(
[(fileid[:4], target) for fileid in inaugural.fileids() for w in inaugural.words(fileid) for target in
['america', 'citizen'] if w.lower().startswith(target)])
ac_cfd.tabulate(conditions=['1841', '1993'], samples=['america', 'citizen'])

问题是在18411993年印刷单词["america","citizen"]的频率,但你在哪里做相反的事情,因此它不被接受。

相关内容

最新更新