Wie funktionieren Rechtschreibprüfungen?
Ich implementieren müssen, um eine Rechtschreibprüfung in C. im Grunde, ich brauche alle standard-Operationen... ich muss in der Lage sein, um die Rechtschreibprüfung ein block von text, stellen Sie Wortvorschläge und dynamisch neue Wörter hinzufügen, um den index.
Ich würde irgendwie gerne, dies zu schreiben, mir selbst, tho ich weiß wirklich nicht, wo man anfangen soll.
InformationsquelleAutor der Frage dicroce | 2008-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen, auf Baum Traversal. Die Grundidee ist wie folgt:
Ein wirklich kurzes Beispiel:
Wörterbuch:
Baum: (
*
kennzeichnet gültige Ende des Wortes)update: vielen Dank an Curt Sampson für den Hinweis, dass diese Daten-Struktur nennt man Patricia Baum
Dokument:
Ergebnisse:
A -> P -> P
aber die zweiteP
keineI
Kind-Knoten, so schlägt die Suche fehl.E
Knoten inA -> P -> E
nicht über das "gültig-Ende-Wort" - flag gesetzt ist.edit: weitere details auf Rechtschreibung Vorschläge, Blick in Die Levenshtein-Distanzdie Maßnahmen, die die kleinste Anzahl von änderungen, die vorgenommen werden müssen, um zu konvertieren eine Zeichenfolge in eine andere. Die besten Vorschläge würden dem Wörterbuch-Wörter mit der geringsten Levenshtein-Distanz, um das falsch geschriebene Wort.
InformationsquelleAutor der Antwort e.James
Gegeben, Sie nicht wissen, wo zu beginnen, ich würde vorschlagen, mit einer bestehenden Lösung. Siehe, zum Beispiel, aspell
(GLPL Lizenz). Wenn Sie wirklich haben, um es selbst implementieren, sagen Sie uns bitte warum.
InformationsquelleAutor der Antwort The Archetypal Paul
Sollte man schauen, Präfixe und Suffixe.
plötzlich = plötzlich + ly.
durch entfernen ly ist Sie Weg, die Speicherung von nur den Wortstamm.
Ebenfalls preallocate = pre + zuordnen.
Und liebevoll = Liebe + ing + ly
wird es ein wenig komplexer, als die englischen Regeln für ing get aufgerufen.
Gibt es auch die Möglichkeit, über irgendeine Art von Hash-Funktion zum anzeigen einer Wurzel
in einem bestimmten bit ist eine große bit-Karte, als eine Konstante Zeit, die Methode zum bestimmen, ob die Wurzel des Wortes richtig geschrieben wird.
Kann man sogar noch komplexer, indem Sie versuchen, um eine Alternative Liste der möglichen richtigen Schreibweisen ein falsch geschriebenes Wort. Sie könnten die Forschung der soundex-Algorithmus, einige Ideen zu bekommen.
Ich würde Ihnen raten prototyping mit einer kleinen Gruppe von Wörtern. Eine Menge von Tests, dann ist scale-up.
Es ist ein wunderbares pädagogisches problem.
InformationsquelleAutor der Antwort EvilTeach
Aufteilung eines Wortes in Stamm und suffix ist knonw als "Porter-Stemming-Algorithmus" es ist eine gute Möglichkeit, den Einbau einer Englisch ditionary in einem erstaunlich kleinen Speicher.
Es ist auch nützlich für die Suche so "Rechtschreibprüfung" findet auch "Rechtschreibung überprüfen" und "Rechtschreibprüfung"
InformationsquelleAutor der Antwort Martin Beckett
Ich habe dies in der Klasse
Sollten Sie überlegen, python Natural Language Toolkit NLTK die aus speziell zu handhaben.
Es ermöglicht auch die Erstellung von text-Interpreten wie chatbots
InformationsquelleAutor der Antwort Eric
Die Open Office Rechtschreibprüfung kann ein guter Ausgangspunkt. Hier ist die Homepage:
Hunspell bei Sourceforge
InformationsquelleAutor der Antwort Thomas Maierhofer
E James gibt eine große Antwort für wie zu sagen, ob ein Wort gültig ist. Es kommt wohl auf die Rechtschreibprüfung, wie Sie bestimmen, wahrscheinlich Rechtschreibfehler.
Einer solchen Methode, und die, die ich verwenden würde, ist die Levenshteinn String-Ähnlichkeit die Blicke an, wie viele Buchstaben müssen die Hinzugefügt, entfernt oder wurde ersetzt durch ein Wort, um zu machen, ein anderes Wort.
Wenn Sie sagen, Dinkel: Land Contry. Die levenshtein-ähnlichkeit von Zeichenketten wäre 1, da müssen Sie nur hinzufügen, 1 Brief an transform-contry in Land.
Könnte man dann in einer Schleife durch alle möglichen richtigen Schreibweisen der Wörter (nur 171,000 Englisch Wörter und 3000 von diesen Konto für 95% des Textes). Bestimmen Sie diejenigen mit der geringsten levenshtein-ähnlichkeit von Zeichenketten-Wert, und dann wieder die Obere X-Wörter, sind die meisten ähnlich wie das falsch geschriebene Wort.
Gibt es eine große python-Paket namens Fuzzy Wuzzydie sich um diese effizient und erzeugt eine % ähnlichkeit zwischen zwei Wörtern oder Sätzen, die basierend auf dieser Formel.
InformationsquelleAutor der Antwort TheSaint321