2016-09-16 10 views
2

次の例では、アナグラム辞書を作成しています。 はしかし、それはTypeError: 'LazyCorpusLoader' object is not an iteratorスロー:'LazyCorpusLoader'オブジェクトは反復可能ではありません

import nltk 
from nltk.corpus import words 

anagrams = nltk.defaultdict(list) 
for word in words: 
    key = ''.join(sorted(word)) 
    anagrams[key].append(word) 

print(anagrams['aeilnrt']) 

答えて

5

あなたはwordsコーパスオブジェクトに.words()メソッドを使用する必要があります。

具体的に:

for word in words.words(): 

for word in words: 

を変更し、それが動作するはずです。

+0

正解ですが、掲載されたOPコードはPython 2.7で動作していました。問題はPython 3以降で使用しようとしていたことです。 –

+0

@Silenus良い点、私はそれを認識していませんでした。それでも、コードをPython 3に移植する方が環境をPython 2にダウングレードするよりも良い選択だと思います。 – lenz

+0

私は同じエラーメッセージを持っている、これはあなたが助けることができる、私のコードでください:nltk.corpusインポート名から輸入NLTK nltk.download(「ストップワード」) nltk.download(「WordNetの」) 輸入警告 警告.filterwarnings( 'ignore') nltk.corpusからの読み込みストップワード defクリーニング(記事): one = "" .join([私はarticle.lower() ) two = "" .join(iが句読記号でない場合はiを1にする) three = "" .join(two.split()内のiに対してlemmatize.lemmatize(i) return three text =検索.applymap(クリーニング)['Q2'] tex t_list = [i.split()for i in text] – mkheifetz

関連する問題