Hallo zusammen,
ich möchte feststellen, ob es sich beim Inhalt eines Strings um ein englisches Wort handelt. Nach einer Google-Suche bin ich dabei auf das NLTK gestoßen.
Nun kriege ich es leider nicht hin, NLTK richtig zur Worterkennung einzusetzen. Mir ist die Semantik des Wortes dabei nicht wichtig, ich möchte nur feststellen, ob es sich beim String-Inhalt um ein Wort handelt.
Irgendwelche Ideen? Es muss auch nicht zwingend NLTK sein, wenn es bessere Alternativen gibt.
Vielen Dank für eure Hilfe, und viele Grüße,
Dante
Wort-Erkennung mit NLTK
Hallo,
ich möchte feststellen, ob es sich bei dem String um ein englisches Wort handelt.
Beispiel:
text = "birthday"
# Diese Funktion suche ich...
if nltk.checkIfEnglishWord(text):
print text + " is a real word!"
else:
print text + " is NOT a real word!"
Die Funktion, welche ich benötige, ist dieses checkIfEnglishWord. Wenn es sich um ein englisches Wort handelt, dann soll sie true ausgeben, sonst false. Also für "birthday" true, für "brithday" false. Auch für alle Zahlwörter etc. true, soweit das möglich ist.
ich möchte feststellen, ob es sich bei dem String um ein englisches Wort handelt.
Beispiel:
text = "birthday"
# Diese Funktion suche ich...
if nltk.checkIfEnglishWord(text):
print text + " is a real word!"
else:
print text + " is NOT a real word!"
Die Funktion, welche ich benötige, ist dieses checkIfEnglishWord. Wenn es sich um ein englisches Wort handelt, dann soll sie true ausgeben, sonst false. Also für "birthday" true, für "brithday" false. Auch für alle Zahlwörter etc. true, soweit das möglich ist.
Schon mal nach einem frei zugänglichen Wörterbuch (= z.B. als Datenbank) gesucht? Letztlich läuft es ja auf einen trivialen Vergleich mit einem Katalog zulässiger Wörter hinaus. Ohne mcih jetzt näher mit nltk beschäftigt zu haben, denke ich doch, daß es schlicht overkill ist.
Wäre schön, wenn du für Leute mit ähnlichem Problem, die über diesen Thread stolpern, deinen Code(-Ausschnitt) zeigen könntest.dante hat geschrieben:Hallo,
ich habe das ganze jetzt über WordNet und NLTK gelöst. Funktioniert wunderbar, allerdings bin ich überrascht, was alles zur englischen Sprache gehören soll.
Danke für die Hilfe!
Größeren Code kannst du z.B. auf http://paste.pocoo.org auslagern.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/
Ja klar, gerne.Wäre schön, wenn du für Leute mit ähnlichem Problem, die über diesen Thread stolpern, deinen Code(-Ausschnitt) zeigen könntest.
Das folgende Progrämmchen erzeugt zufällige Buchstabenkombinationen aus den Buchstaben eines gegebenen Textes mit mindestens der über einen Parameter definierten Länge. Dann prüft es, ob es sich bei der erzeugten Buchstabenkombination um ein englisches Wort handelt.
Code: Alles auswählen
import sys
import random
from nltk.corpus import wordnet as wn
minWordSize = int(sys.argv[1])
originalText = "EIMYMNELNSDAAI"
finished = False
rounds = 0
while not finished:
rounds = rounds + 1
text = originalText
result = ""
size = random.randrange(minWordSize,len(originalText))
for i in range(size):
index = random.randrange(len(text))
char = text[index]
text = text[:index] + text[index+1:]
result = result + char
if rounds%100 == 0:
print rounds
synsets = wn.synsets(result)
print(result + " (" + str(len(synsets)) + ")\n")
if len(synsets) > 0:
print "Found a word!!\nWord is", result
finished = True
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
IMHO ist es, wie oben auch schon vorgeschlagen, einfacher, gegen ein fertiges Wörterbuch zu testen, z.B. aspell oder hunspell.
Dazu drei schnell gegogglete Links:
http://code.activestate.com/recipes/117 ... -checking/
http://pypi.python.org/pypi/spell4py/0.6.9
http://pypi.python.org/pypi/hunspell/0.1
Der 1. Link ist IMHO eine recht einfacher und überschaubare Lösung...
Gruß, noisefloor
IMHO ist es, wie oben auch schon vorgeschlagen, einfacher, gegen ein fertiges Wörterbuch zu testen, z.B. aspell oder hunspell.
Dazu drei schnell gegogglete Links:
http://code.activestate.com/recipes/117 ... -checking/
http://pypi.python.org/pypi/spell4py/0.6.9
http://pypi.python.org/pypi/hunspell/0.1
Der 1. Link ist IMHO eine recht einfacher und überschaubare Lösung...
Gruß, noisefloor