AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Levenshtein-Distanz

Ein Thema von Nicolai1234 · begonnen am 10. Dez 2005 · letzter Beitrag vom 14. Dez 2005
Antwort Antwort
Seite 3 von 4     123 4      
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#21

Re: Levenshtein-Distanz

  Alt 12. Dez 2005, 16:26
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"?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#22

Re: Levenshtein-Distanz

  Alt 12. Dez 2005, 18:00
Hallo Nicolai,

Zitat von Nicolai1605:
Gibt es eigentlich noch andere Algorithmen mit denen man diese Aufgabe erledigen könnte? Oder ist die Levenshtein-Distanz schon das "Optimum"?
die Levenshtein-Distanz (LevD) ist die Edit-Distanz-Metrik schlechthin. Die Frage ist nur, ob es das ist, was du brauchst. Um das zu entscheiden ist deine Problembeschreibung noch zu dürftig. Werden da Schreibfehler gesucht? Sind die Texte ein OCR-Produkt? Kurz, wie enstehen die Daten? LevD liefert dir Gleichheit durch Ähnlichkeit bei frei wählbarer Schranke. Welche Aktionen sollen dadurch begründet werden?

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: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#23

Re: Levenshtein-Distanz

  Alt 12. Dez 2005, 18:15
Zitat von marabu:
Werden da Schreibfehler gesucht? Sind die Texte ein OCR-Produkt? Kurz, wie enstehen die Daten? LevD liefert dir Gleichheit durch Ähnlichkeit bei frei wählbarer Schranke. Welche Aktionen sollen dadurch begründet werden?
Die Daten werden von Menschen manuell eingegeben. In diesem Fall sind es die Autoren selber, die ihre Buchtitel etc. eingeben. Das Programm hat dann die Aufgabe doppelte Einträge zu finden, falls ein Autor sein Buch zweimal (in ähnlicher Schreibweise) eingegeben hat oder falls 2 Autoren den selben Titel eingeben. (es ist durchaus so, dass diese Menschen versuchen, das System bewusst zu betrügen. Klingt seltsam, ist aber wahr) Also kann man nicht auf das bessere Verhalten bei den Eingaben hoffen^^
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#24

Re: Levenshtein-Distanz

  Alt 12. Dez 2005, 18:19
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^^
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#25

Re: Levenshtein-Distanz

  Alt 12. Dez 2005, 18:37
Noch ein Tip, sogar ganz in der Nähe ...
http://www.delphipraxis.net/internal...ct.php?t=51913
Das sieht doch ganz gut aus...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#26

Re: Levenshtein-Distanz

  Alt 12. Dez 2005, 21:34
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)
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#27

Re: Levenshtein-Distanz

  Alt 13. Dez 2005, 09:16
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: Levenshtein-Distanz

  Alt 13. Dez 2005, 13:24
Zitat von Phoenix:
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.
Das ist leider aus diversen Gründen nicht möglich. Die Eingaben müssen alle auf einmal überprüft werden.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#29

Re: Levenshtein-Distanz

  Alt 13. Dez 2005, 13:37
Zitat von Nicolai1605:
Das ist leider aus diversen Gründen nicht möglich. Die Eingaben müssen alle auf einmal überprüft werden.
von meiner Idee hälst Du wohl nix ? durchdenke das nochmal !
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..
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#30

Re: Levenshtein-Distanz

  Alt 13. Dez 2005, 13:40
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz