我在运行NLP中给出的程序时遇到错误,其中包含python ..as
import nltk
from nltk.corpus import inaugural
>>> cfd = nltk.ConditionalFreqDist(
... (target,file[:4])
... for fileid in inaugural.fileids()
... for w in inaugural.words(fileid)
... for target in ['america','citizen']
... if w.lower().startswith(target))
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "/usr/local/lib/python2.7/dist-packages/nltk/probability.py", line 1729, in __init__
for (cond, sample) in cond_samples:
File "<stdin>", line 6, in <genexpr>
TypeError: 'type' object has no attribute '__getitem__'
我是python的新手,这个错误究竟意味着什么..
答案 0 :(得分:2)
此代码来自Bird,Klein和Loper的使用Python进行自然语言处理,第46页。确实,这本书中有一个拼写错误。它已在在线版本(http://www.nltk.org/book/ch02.html)中修复。
正如驼鹿建议的那样,将file[:4]
更改为fileid[:4]
。
答案 1 :(得分:0)
问题是file[:4]
。 file
是一个不支持切片([:4]
)
nltk.ConditionalFreqDist似乎采用了元组列表。最后你想写fileid
而不是file
?