![]() |
Re: Levenshtein-Distanz
Danke erstml für die Tipps.
Gibt es eigentlich noch andere Algorithmen mit denen man diese Aufgabe erledigen könnte? Oder ist die Levenshtein-Distanz schon das "Optimum"? |
Re: Levenshtein-Distanz
Hallo Nicolai,
Zitat:
Text-Ähnlichkeit ist ein Forschungsgebiet der KI. Die Algorithmen werden von Computer-Linguisten zur Analyse von geschriebenen Sprachen verwendet. Ein Link der jede Menge Stichwörter zum Weitersuchen bringen könnte: ![]() Grüße vom marabu |
Re: Levenshtein-Distanz
Zitat:
|
Re: Levenshtein-Distanz
Dann scheint diese Methode sinnvoll zu sein.
Müssen diese 12 Millionen mal denn "immer" d.h. regeläßig durchlaufen werden? vielleicht wäre es eine Überlegung wert, es einfach so zu lassen, falls das nur einmal der Fall wäre, und danach immer nur einmal alle^^ |
Re: Levenshtein-Distanz
Noch ein Tip, sogar ganz in der Nähe ...
![]() Das sieht doch ganz gut aus... |
Re: Levenshtein-Distanz
also ich hätte da noch eine Idee.
Ähnlichkeiten heißen ja in Deinem Fall, dass einzelne Wörter komplett gleich sind. Nur etwas anders dargestellt, einmal mit Leerzeichen einmal hinten, einmal vorne. Deshalb folgender Vorschlag. 1. den Suchstring teilst Du in einzelne Wörter auf 2. diese Worter suchst Du einzeln hintereinander in der Textdatei, und zwar auf exaktes Vorkommen. 3. Du überprüfst nur die Zeilen auf die Levenstein Distanz, wo die Wörter vorkommen. ( ich würde mit dem Wort anfangen, dass die wenigsten Vorkommen liefert und nur bis zu einer bestimmten Anzahl) der 2. Schritt klingt zunächst kompliziert, ist aber über diese Suffix Trees lösbar und schnell realisierbar. (eine Suchanfrage bei google hängt ja auch nicht von der Größe des Internets ab) |
Re: Levenshtein-Distanz
Also für eine einmalige Bereinigung der Datenbank von doubletten ist das imho nicht so performance-Kritisch.
Wichtig wäre, bei der Eingabe eines neuen Titels diesen direkt nach der Eingabe gegen die bestehende Datenbank zu prüfen. Ist es eine doublette wird der Eintrag verweigert oder der Eintrag gleich intern als Doublette markiert und kann dann vor der nächsten komplett-Bereinigung einfacher entfernt werden. Vor allem muss in diesem Fall ja nur ein einzelner Eintrag gegen die DB verglichen werden und nicht gleich alle miteinander. |
Re: Levenshtein-Distanz
Zitat:
|
Re: Levenshtein-Distanz
Zitat:
Ich denke, so würde das richtig gut funktionieren. Also nur die Zeilen zu prüfen, wo überhaupt die Wörter vorkommen. Das Wort "Lärmwirkungsforschung" kommt vielleicht nur in einer einzigen Zeile vor, also brauchst Du den aktuell durchlaufenen Eintrag nur mit dieser einzigen Zeile überprüfen, ob sie ähnlich ist, nicht mit allen Zeilen. Das war die Idee dahinter.. |
Re: Levenshtein-Distanz
Aber was wäre, wenn sich jemand bei einem längeren Wort verschreibt. Dann sind auch 2 einzelne Wörter nicht mehr exakt gleich. Daher war ich ein wenig irritiert. Vielleicht habe ich das aber auch falsch verstanden...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz