nltk中就职语料库中的错误

时间:2014-08-10 05:40:25

标签: python nltk

我在运行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的新手,这个错误究竟意味着什么..

2 个答案:

答案 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