这里有两个示例,一个有效且源自https://www.nltk.org/book/ch02.html另一个没有。第一个示例绘制了单个单词的频率,此处为['america', 'citizen']
。第二个是修改后的版本(显然是错误地),它试图绘制二元组['america citizen']
的频率。我想绘制ngram频率,例如['america citizen']
之类的双字母。
Plot Example 1Plot Example 2 - failed
import nltk
from nltk.book import *
import matplotlib.pyplot as plt
from nltk.corpus import inaugural
inaugural.fileids()
plt.ion() # turns interactive mode on
[fileid[:4] for fileid in inaugural.fileids()]
############- this works ####
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))
ax = plt.axes()
cfd.plot()
############- this does not work ####
cfd = nltk.ConditionalFreqDist(
(target, fileid[:4])
for fileid in inaugural.fileids()
for w in inaugural.words(fileid)
for target in ['american citizen']
if w.lower().startswith(target))
ax = plt.axes()
cfd.plot()
这里有两个示例,一个有效,并且源自https://www.nltk.org/book/ch02.html,另一个无效。第一个示例绘制单个单词的频率,此处['america','...
在我看来,您试图找到'american citizen'
,这是一个由2个单词组成的搭配,其中每个单词都位于其中。这注定会失败。您将需要检查成对的连续单词中是否存在这样的双字母,并且需要压缩单词列表,将第二个单词移动1个单词。