- しないでください
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すぐに合格できます。
このトリックは、最初のケース (合計数のみが必要な場合) にも役立ちます。このfiltered corpora の長さを返すだけです ( len(filtered_corpora))。