Ich habe die folgende Funktion, welche alle n-Gramme (0<n<4) eines gegebenen Wortes ausgeben sollte:
Code: Alles auswählen
def trigrams(text):
unigrams, bigrams, trigrams = {}, {}, {}
for i, c in enumerate(text):
unigrams[c] = unigrams.get(c, 0) + 1
bigrams[text[i:i+2]] = unigrams.get(c, 0)
trigrams[text[i:i+3]] = unigrams.get(c, 0)
trigrams.update(bigrams)
trigrams.update(unigrams)
return trigrams
print trigrams('Kralle'){'a': 1, 'all': 1, 'le': 1, 'e': 1, 'ral': 1, 'al': 1, 'l': 2, 'Kr': 1, 'r': 1, 'ra': 1, 'K': 1, 'Kra': 1, 'll': 1, 'lle': 1}
ABER: Mit meiner Funktion erhalte ich momentan noch 2 bei 'le', obwohl 'le' nur einmal vorhanden ist.
Auch bei anderen Worten ist es immer dieses eine Bigramm, das falsch ist.
Wo steckt hier bloss der Fehler? :S
