- しないでください
dict = {}
。dict
組み込み関数であり、それをシャドーイングしています。これは重要ではありません。後で必要になった場合に使用することはできません。
- 辞書はキー→値のマッピングです。まるで本物の辞書(単語→訳)。あなたがしたこと
('believe', …)
は、タプルであるvalue が'word'
辞書のキーに対応していると言われています。次に、dict.values()
これを使用して、辞書に格納されているすべての値のシーケンスを取得します。この場合、このシーケンスは正確に1つのアイテムで構成され、このアイテムはタプルです。あなたのif
条件は決してTrue
:word
は文字列であり、文字列dict.values()
の単一のタプルで構成されるシーケンスです。
- なぜ辞書を使っているのかよくわかりません。あなたにとって重要な一連の単語を持っているようで、スキャンして
corpora
それらの単語の出現回数を数えています。ここでのキーワードはsetです。辞書は必要ありませんset
。
- あなたが何を数えているのかは明らかではありません。
i
に追加するものは何counter
ですか? 1ずつインクリメントcounter
するつもりなら、それはcounter = counter + 1
またはである必要がありますcounter += 1
。
なぜリセットするのcounter
ですか?
counter = 0
未知の単語を見つけたときにカウンターをリセットしたいとは思わない. 未知の単語でカウンターを変更するべきではないようです。
- ノート。変数名に大文字を使用しないようにしてください (これ
Result = []
は悪いことです)。また、他の人が言及したように、 の後にコロンがありませんelse
。
それでは、すべてをまとめてみましょう。最初に行うことは、関心のある一連の単語を作成することです。
words = {'believe', 'tried', 'trust', 'experience'}
次に、コーパス内の単語を繰り返し処理して、どの単語がセットに含まれているかを確認できます。
for word in corpora:
if word in words:
# do something
コードが正確に何をすべきかは明らかではありませんが、セット内のすべての単語がコーパス内で何回見つかったかを知ることが目標である場合は、そのcounter
中に 1 を追加するだけですif
。
セットの各単語がコーパスに何回出現するかを知りたい場合は、セット内のすべての単語に対して個別のカウンターを維持する必要があります (辞書が役立つ場合があります)。これは (特別な辞書) を使用して簡単に実現できcollections.Counter
ます。コーパスをフィルター処理して、興味のある単語だけを残す必要がありifilter
ます。
filtered_corpora = itertools.ifilter(lambda w: w in words, corpora)
—これはあなたのコーパスであり、見つからないすべての単語がwords
削除されます。Counter
すぐに合格できます。
このトリックは、最初のケース (合計数のみが必要な場合) にも役立ちます。このfilter
ed corpora の長さを返すだけです ( len(filtered_corpora)
)。