テキストドキュメントの最も頻度の高い10個の単語(各単語は2文字以上)を印刷する小さなPythonスクリプトがあり、ドキュメント内の最も頻度の低い10個の単語も印刷するようにスクリプトを続行する必要があります。私は比較的機能しているスクリプトを持っていますが、それが出力する最もまれな10の単語は、単語であるはずの数字(整数とフローター)です。単語のみを繰り返し、数字を除外するにはどうすればよいですか?これが私の完全なスクリプトです:
# Most Frequent Words:
from string import punctuation
from collections import defaultdict
number = 10
words = {}
with open("charactermask.txt") as txt_file:
words = [x.strip(punctuation).lower() for x in txt_file.read().split()]
counter = defaultdict(int)
for word in words:
if len(word) >= 2:
counter[word] += 1
top_words = sorted(counter.iteritems(),
key=lambda(word, count): (-count, word))[:number]
for word, frequency in top_words:
print "%s: %d" % (word, frequency)
# Least Frequent Words:
least_words = sorted(counter.iteritems(),
key=lambda (word, count): (count, word))[:number]
for word, frequency in least_words:
print "%s: %d" % (word, frequency)
編集:ドキュメントの終わり(# Least Frequent Words
コメントの下の部分)は、修正が必要な部分です。