Ich versuche, eine Liste von Wörtern (eine Token-Zeichenfolge) in jede mögliche Teilzeichenfolge zu brechen. Ich würde dann gerne eine FreqDist auf jeder Teilkette ausführen, um die häufigste Teilkette zu finden. Der erste Teil funktioniert gut. Allerdings, wenn ich den FreqDist laufen lasse, erhalte ich die Fehlermeldung:Python-Häufigkeitsverteilung (FreqDist/NLTK) Problem
TypeError: unhashable type: 'list'
Hier ist mein Code:
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
Die Ausgabe von substrings
ist in Ordnung. Hier ist es:
[['This'], ['This', 'is'], ['This', 'is', 'a'], ['This', 'is', 'a', 'sample'], ['is'], ['is', 'a'], ['is', 'a', 'sample'], ['a'], ['a', 'sample'], ['sample']]
Allerdings kann ich nicht einfach die FreqDist darauf laufen lassen. Jede Einsicht würde sehr geschätzt werden. In diesem Fall hätte jeder Teilstring nur eine FreqDist von 1, aber dieses Programm soll auf einer viel größeren Textprobe ausgeführt werden.