単語のリスト (トークン化された文字列) を可能な各部分文字列に分割しようとしています。次に、各部分文字列で FreqDist を実行して、最も一般的な部分文字列を見つけたいと思います。最初の部分は正常に動作します。ただし、FreqDist を実行すると、次のエラーが表示されます。
TypeError: unhashable type: 'list'
これが私のコードです:
import nltk
string = ['This','is','a','sample']
substrings = []
count1 = 0
count2 = 0
for word in string:
while count2 <= len(string):
if count1 != count2:
temp = string[count1:count2]
substrings.append(temp)
count2 += 1
count1 +=1
count2 = count1
print substrings
fd = nltk.FreqDist(substrings)
print fd
の出力substrings
は問題ありません。ここにあります:
[['This'], ['This', 'is'], ['This', 'is', 'a'], ['This', 'is', 'a', 'sample'], ['is'], ['is', 'a'], ['is', 'a', 'sample'], ['a'], ['a', 'sample'], ['sample']]
ただし、FreqDist を実行することはできません。どんな洞察も大歓迎です。この場合、各部分文字列の FreqDist は 1 しかありませんが、このプログラムは、はるかに大きなテキスト サンプルで実行することを意図しています。