Intersult Automaton ist ein Tool zum Auffinden von Wörtern in Zeichenketten bzw. Sequenzen in Daten.
Hintergrund#
Das Auffinden von Wörtern in Zeichenketten findet im einfachsten Fall dadurch statt, indem an jeder Stelle nach dem Wort gesucht wird. Wird gleichzeitig nach vielen Wörtern gesucht, steigt der Aufwand enorm.
Intersult Automaton löst das Problem effizient, das heißt nahezu linear zur Länge der zu durchsuchenden Zeichenkette.
Anwendung#
Ein neu erzeugter Automat wird zunächst mit den gesuchten Zeichenketten bestückt, ähnlich einer Map. Anschließend kann der Automat unterschiedliche Operationen durchführen:
- Ersetzen von Zeichenketten: Die Methode replace ersetzt effizient alle gefundenen Keys durch entsprechende Values.
- Prefix finden: Findet als Prefix enthaltene Keys.
- Suffix finden: Findet als Suffix enthaltene Keys.
- Scanner: Manuelles Scannen von Zeichenfolgen. Damit können beliebige Logiken implementiert werden. Dem Scanner werden die Zeichen der Reihe nach präsentiert und er liefert als Antwort, ob an dieser Stelle eine passende Zeichenkette vorliegt.
Beispiele#
Suchen und Ersetzen#
CharAutomaton<String> automaton = new CharAutomaton<String>();
automaton.add("eins", "s1");
automaton.add("zwei", "s2");
automaton.add("drei", "s3");
CharSequence result = automaton.replace(SOURCE);
Details#
Es handelt sich um einen Zustandsautomat, der mit dem Algorithmus von Aho und Corasick erstellt wurde. Der Automat enthält zum Beispiel für 340 deutsche Wörter 2100 Zustände mit entsprechenden Zustandsübergängen.