Ich versuche eine Rechtschreibprüfung zu schreiben, die mit einem ziemlich großen Wörterbuch funktionieren sollte. Ich möchte wirklich, dass meine Wörterbuchdaten auf effiziente Weise indexiert werden, um anhand einer Damerau-Levenshtein- Distanz zu bestimmen, welche Wörter dem falsch geschriebenen Wort am nächsten kommen.
Ich suche eine Datenstruktur, die mir den besten Kompromiss zwischen Speicherplatzkomplexität und Laufzeitkomplexität bietet.
Basierend auf dem, was ich im Internet gefunden habe, habe ich einige Hinweise dazu, welche Art von Datenstruktur zu verwenden ist:
Trie
Dies ist mein erster Gedanke und sieht ziemlich einfach zu implementieren aus und sollte ein schnelles Nachschlagen / Einfügen ermöglichen. Die ungefähre Suche mit Damerau-Levenshtein sollte auch hier einfach zu implementieren sein. In Bezug auf die Speicherkomplexität sieht es jedoch nicht sehr effizient aus, da der Speicherplatz für Zeiger höchstwahrscheinlich einen hohen Overhead aufweist.
Patricia Trie
Dies scheint weniger Platz in Anspruch zu nehmen als ein normaler Trie, da Sie im Grunde die Kosten für das Speichern der Zeiger vermeiden, aber ich mache mir ein bisschen Sorgen über die Datenfragmentierung bei sehr großen Wörterbüchern wie dem, was ich habe.
Suffix-Baum
Ich bin mir nicht sicher, wie es scheint, finden es einige Leute beim Text-Mining nützlich, aber ich bin mir nicht sicher, was es in Bezug auf die Leistung für eine Rechtschreibprüfung bedeuten würde.
Ternärer Suchbaum
Diese sehen hübsch aus und sollten in Bezug auf Komplexität Patricia Tries nahe sein (besser?), Aber ich bin mir nicht sicher, ob es in Bezug auf Fragmentierung besser oder schlechter wäre als Patricia Tries.
Baum platzen
Dies scheint eine Art Hybrid zu sein und ich bin mir nicht sicher, welchen Vorteil es gegenüber Tries und dergleichen haben würde, aber ich habe mehrmals gelesen, dass es für das Text-Mining sehr effizient ist.
Ich würde gerne ein Feedback bekommen, welche Datenstruktur in diesem Zusammenhang am besten geeignet ist und was sie besser macht als die anderen. Wenn mir Datenstrukturen fehlen, die für eine Rechtschreibprüfung noch besser geeignet wären, bin ich auch sehr interessiert.