私はテキストの文字列を見て、ストップワードを削除し、その文字列の中で最もよく使われる単語のトップ10をリストとして返す小さなスクリプトを書こうとしています。Python unhashable type:リスト上のスライス
これは私のコードです:
from collections import Counter as c
from nltk.corpus import stopwords
stop = set(stopwords.words('english'))
description = ("This is some place holder text for a shop that sells shoes, coats and jumpers. We sell lots of shoes but never sell t-shirts. Please come to our shop if you want some jumpers")
description = ([word for word in description.lower().split() if word not in stop])
common_list = c(description)
top_ten = (common_list[:9])
しかし、これは私にエラーメッセージunhashable type: slice
を与えます。私はこれがcommon_listが実際にリストではないかもしれないからだと思う。私は非常にPythonに新しいので、これは本当にばかげている場合は容赦してください。
'コレクションからC 'のwhhhhyyyとしてカウンターインポートあなたは今までに行うだろうこの?あなたのコードを読んで理解できる人がいらっしゃいませんか? –
そして、 'common_list'は*ではなく、' Counter'です。これは 'Counter'の代わりに' c'を使用しなかった場合にはもっと明らかです。 'Counter'オブジェクトは、' dict'とほぼ同じように動作しますが、それはカウントに特化しています。 'my_counter [:9]'を実行すると 'my_dict [:9]'と同じように*スライス*が '__getitem__'に渡されますが、' dict'オブジェクトはスライスされません。 –
そして、もちろん、カウンターアイテムには上位n個のアイテム、['most_common(n)'](https://docs.python.org/3/library/collections.html#collections.Counter.most_common)を取得するための特定のメソッドがあります。 。 –