![]() |
Ähnliche strings finden (wie z.B. google Suche)
Hallo,
Vielleicht kannmir da ja irgendwer weiterhelfen…. Gibt es eine Weg oder eine Komponente, wo ich ähnliche strings finden kann? Also allgmein umz.B. Schreibfehler beseitigen bzw ähnliche schreibweisen zu finden (nicht per Rechtschribung). |
AW: Ähnliche strings finden (wie z.B. google Suche)
Meinst du etwas wie
![]() ![]() |
AW: Ähnliche strings finden (wie z.B. google Suche)
Suche mal nach Levenshtein-Distanzwerte und dann lies das hier
![]() Viuelleicht hilft das? |
AW: Ähnliche strings finden (wie z.B. google Suche)
Levenshtein und soundex sind nicht ganz so gut für deutsch. Kälner Phonetik bringt dich hier weiter.
|
AW: Ähnliche strings finden (wie z.B. google Suche)
Warum sollte Levenshtein nicht gut sein für die deutsche Sprache? Das Verfahren ist doch komplett unabhängig von der Sprache, und zählt einfach die minmale Anzahl von Ersetzungen/Einfügen/Entfernen-Operationen auf Zeichenebene. Ob ich da deutsche oder englische Wörter oder ein Stück DNA-Code reinschmeiße, ist völlig egal.
Wenn man also ähnliche Strings finden möchte, ist das unabhängig von der Sprache gut geeignet. Für ähnlich klingende Worte (Meier, Mayer etc.) dann tatsächlich nicht unbedingt, und dafür sind dann sprachabhängige Algorithmen sinnvoll. Die Frage ist dann aber, inwiefern diese lautbasierten Verfahren Buchstabendreher erkennen können, oder wie diese mit anderen Zeichen (Klammern, Satzzeichen, ...) umgehen. Kommt halt auf den Anwendungsfall an. Für die Titelsuche in meinem mp3-Player fahre ich mit Levenshtein (das ist ja in meinen oben verlinkten ApproxStrUtils implementiert) ganz gut - und da habe ich ja auch Fälle wie "Pink" und "P!nk" und ähnliche Scherze. ;-) Edit: @TigerLilly: danke für den Link. Die Ergänzung mit "Verdreher als eine Operation zählen" muss ich mir mal genauer anschauen. Das scheint mir eine sinnvolle Ergänzung zu sein. |
AW: Ähnliche strings finden (wie z.B. google Suche)
Zitat:
Edit: Beispiel Maier und Meyr haben eine Distanz von 3, bei Kölner Phonetik sind beide identisch |
AW: Ähnliche strings finden (wie z.B. google Suche)
Zitat:
Zitat:
|
AW: Ähnliche strings finden (wie z.B. google Suche)
Das stimmt schon, aber dann ist die eigentliche Aussage ja, dass Levenshtein nicht gut geeignet ist für Sprache.
Levenshtein und SoundEx (und verwandte Verfahren) sind halt völlig verschiedene Ansätze - einmal reine Betrachtung der Zeichenketten, und dann die (sprachabhängige) Umsetzung dieser Zeichenketten in akkustische Signale. Was sinnvoller ist, hängt vom Anwendungsfall ab. Nebenbei, semi-OT: Was macht eigentlich Soundex bei englischen Inkonsistenzen wie "tough" und "though"? :gruebel: Oder anders: Sollen diese beiden Worte als ähnlich gelten (sehr ähnliche Zeichenketten), oder als grundverschieden (völlig andere Aussprache)? |
AW: Ähnliche strings finden (wie z.B. google Suche)
Zitat:
![]() |
AW: Ähnliche strings finden (wie z.B. google Suche)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Ähnliche strings finden (wie z.B. google Suche)
|
AW: Ähnliche strings finden (wie z.B. google Suche)
Noch eine Option - aber auch das hängt vom Anwendungsfall ab - wäre via API ChatGPT (oder andere) zu fragen, ob zwei Worte ähnlich sind.
Zitat:
Zitat:
|
AW: Ähnliche strings finden (wie z.B. google Suche)
Code:
text = ["Meier", "Maier", "Mayer"]
test = embedding_model.encode(text) print(f"{text[0]} {text[1]} ", cosine_similarity(test[0], test[1])) text = ["tough", "though"] test = embedding_model.encode(text) print(f"{text[0]} {text[1]} ", cosine_similarity(test[0], test[1])) text = ["Baum", "Tanne"] test = embedding_model.encode(text) print(f"{text[0]} {text[1]} ", cosine_similarity(test[0], test[1])) text = ["Nadelbaum", "Laubbaum"] test = embedding_model.encode(text) print(f"{text[0]} {text[1]} ", cosine_similarity(test[0], test[1])) text = ["Hamster", "Goldfisch", "Schäferhund", "Dackel"] test = embedding_model.encode(text) print(f"{text[0]} {text[1]} ", cosine_similarity(test[0], test[1])) print(f"{text[2]} {text[3]} ", cosine_similarity(test[2], test[3])) text = ["Mann", "Frau", "Junge", "Bube", "Auto", "Haus"] test = embedding_model.encode(text) print(f"{text[0]} {text[1]} ", cosine_similarity(test[0], test[1])) print(f"{text[2]} {text[3]} ", cosine_similarity(test[2], test[3])) print(f"{text[4]} {text[5]} ", cosine_similarity(test[4], test[5]))
Code:
Ehrlich gesagt, hätte ich die Hunde in der Ähnlichkeit höher erwartet, als die anderen Tiere.
intfloat/multilingual-e5-large
Meier Maier 0.93333364 tough though 0.86950207 Baum Tanne 0.79528135 Nadelbaum Laubbaum 0.8690178 Hamster Goldfisch 0.80143225 Schäferhund Dackel 0.786349 Mann Frau 0.86286455 Junge Bube 0.83770347 Auto Haus 0.8216029 OK, passt doch
Code:
Alignment-Lab-AI/e5-mistral-7b-instruct
Meier Maier 0.93829346 tough though 0.7688065 Baum Tanne 0.90267164 Nadelbaum Laubbaum 0.88353676 Hamster Goldfisch 0.78831625 Schäferhund Dackel 0.844885 Mann Frau 0.84775054 Junge Bube 0.8940252 Auto Haus 0.67513704 Achtung, Alignment-Lab-AI/e5-mistral-7b-instruct benötigt 32 GB RAM. :lol: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 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 by Thomas Breitkreuz