2017-08-22 2 views
0

単語クラウドを構築する最終目標を持つ、最も一般的に使用されている10の単語のリストをtxtファイルで取得しようとしています。次のコードは、印刷時に何も生成されません。txtファイルで最も一般的に使用されている単語を数えます。

>>> import collections 
>>> from collections import Counter 
>>> file = open('/Users/Desktop/word_cloud/98-0.txt') 
>>> wordcount={} 
>>> d = collections.Counter(wordcount) 
>>> for word, count in d.most_common(10): 
    print(word, ": ", count) 
+2

'wordcount'には何もありません。テキストファイルも使用していません。 – 0decimal0

+0

あなたは 'file'を開いていますが、そのファイルからデータを読み込んでいません。 – Laszlowaty

答えて

1

実際には、Counterを引き続き使用することをおすすめします。これは本当に有用なツールですが、物事を数えていますが、それは実際に表現力豊かな構文を持っていますので、sortについて心配する必要はありません。それを使用して、あなたが行うことができます:私のinput.txt

from collections import Counter 

#opens the file. the with statement here will automatically close it afterwards. 
with open("input.txt") as input_file: 
    #build a counter from each word in the file 
    count = Counter(word for line in input_file 
         for word in line.split()) 

print(count.most_common(10)) 

を、これはメモリにファイル全体を読む必要はありませんので、私はそれを少し変更した

[('THE', 27643), ('AND', 26728), ('I', 20681), ('TO', 19198), ('OF', 18173), ('A', 14613), ('YOU', 13649), ('MY', 12480), ('THAT', 11121), ('IN', 10967)] 

の出力を持っています。私のinput.txtは、このコードがファーストであることを証明するために、シェイクスピアの作品の私の句読点のないバージョンです。私のマシンでは約0.2秒かかります。

あなたのコードは少しばかげていました。あなたはいくつかのアプローチをまとめようとしているように見えます。私のコードには説明的な機能が追加されています。うまくいけば、それは比較的簡単なはずですが、あなたがまだ何かについて混乱しているなら、私に教えてください。

1

あなたはまだ.txtファイルから何もプルしていません。テキストファイルの内部はどのように見えますか?おそらく、より効率的な方法があります(10最も一般的なを取得するために、次に

with open('path/to/file.txt', 'r') as f: 
    words = ' '.split(f.read()) 

が、これは私が見つけたものです:あなたは、スペースで区切られた文字のグループとしての単語を分類したい場合は、と単語のリストを得ることができます最初):

word_counter = {} 
for word in words: 
    if word in word_counter: 
     word_counter[word] += 1 
    else: 
     word_counter[word] = 1 

popular_words = sorted(word_counter, key = word_counter.get, reverse = True) 

print popular_words[:10] 
関連する問題