2017-02-08 17 views
1

からグーテンベルクテキストに、私は次のメソッドを使用していますが、それはいつも私に無効なファイル・エラーがスローされます。読むにはNLTK

import nltk 

その後、

file=open(nltk.corpus.gutenberg.words('austen-persuasion.txt'),"r").read().split().lower() 
wordcount={} 

for word in file: 
    if word not in wordcount: 
     wordcount[word] = 1 
    else: 
     wordcount[word] += 1 
print ("The frequency of each word in the text file is as follows :") 
for k,v in wordcount.items(): 
    print (k, v) 

TypeError         Traceback (most recent call last) 
<ipython-input-88-de499228f7ab> in <module>() 
    1 import nltk 
----> 2 file=open(nltk.corpus.gutenberg.words('austen-persuasion.txt'),'r').read().split() 
    3 #file = nltk.corpus.gutenberg.words('austen-persuasion.txt') 
    4 wordcount={} 
    5 

TypeError: invalid file: ['[', 'Persuasion', 'by', 'Jane', 'Austen', '1818', ...] 
+0

読み込んだファイルを分割する必要はありません.ntklの機能はそれを行います。 – patito

答えて

0
を次のようにエラーがあります

@patitoがコメントに記載したように、readを使用する必要はなく、も使用する必要はありません、nltkが単語のリストとしてそれを読んでいるので。

>>> file = nltk.corpus.gutenberg.words('austen-persuasion.txt') 
>>> file[0:10] 
[u'[', u'Persuasion', u'by', u'Jane', u'Austen', u'1818', u']', u'Chapter', u'1', u'Sir'] 

また、単語カウントで字下げを修正する必要がありますが、それ以外の場合は効果があります。

+0

インデントは完全に問題ありませんが、ファイルの.lower()を使用してすべてのテキストを小文字に変換することはできません。 –

+0

リスト内包: 'file = [word in file for word]'を使うだけです。そして、あなたが上に貼り付けた字下げはうまくいきません。ファイル内の単語のためにインデントする必要があります: – Tchotchke

+0

ありがとう、 それは完璧に正常に動作しました。申し訳ありませんが、間違ったインデントでコードを貼り付けました。 –