Wie könnte ich eine Klangähnlichkeit "Bewertung" für eine in einer Sprache geschriebene Zeichenfolge mit einer anderen Zeichenfolge in einer anderen Sprache erhalten: d. h. einen Algorithmus, der das identifiziert
" David Letterman " und " דדד טטטןן " sind Strings, die sich ähnlich anhören.
- Oh, ja, das obige ist hebräisch, du hast es erraten: "David Letterman", und es klingt fast genauso wie Englisch.
Das einzige Rohmaterial, das ich habe, sind Strings in Unicode in ihren jeweiligen Sprachen. Das heißt, ich habe nicht Phoneme oder phonetische Transkriptionen / Übersetzungen der Strings.
Ich habe bereits eine Soundex-Implementierung implementiert, die so etwas funktioniert. Ist das der richtige Weg?
Soundex ist vielleicht nicht perfekt, aber es scheint ein vernünftiger Ansatz zu sein, zumindest für Ihr spezifisches Beispiel der Übereinstimmung zwischen Englisch und Hebräisch.
Du kannst definitiv nicht die Regel verwenden, den ersten Buchstaben des Namens zu bewahren, aber ich mochte das nicht einmal für das lateinische Alphabet (weil ich sowohl unter "E" als auch "Y" nach meiner Mutter suchen müsste) Familienname). Ich empfehle nur den ersten Buchstaben wie alle anderen zu behandeln.
Dann geht es nur darum, die hebräischen Buchstaben den Soundex-Codes zuzuordnen. Sie brauchen nicht wirklich eine mittlere englische Transliteration; codiere einfach das Hebräisch → Soundex-Mapping direkt.
Da Soundex jedoch englischzentriert ist, kann es gewisse Unklarheiten in der hebräischen Aussprache nicht richtig behandeln:
Um damit umzugehen, könnten Sie mehrere Soundex-Schlüssel für eine Zeichenfolge generieren. Zum Beispiel würde "שבשב" sowohl 212 als auch 213 zuordnen.
Ähnliche Zuordnungen können für Griechisch gemacht werden:
oder Russisch:
(Beachten Sie, dass einige der 2-Werte je nach Ihrer Transliterationskonvention 32 sein können.)
Eine Ähnlichkeitsbewertung kann basierend auf einer Metrik wie längster gemeinsamer Teilsequenz Länge oder Levenshtein Entfernung zu den Soundex-Werten.
Sie können zum Beispiel die "Ähnlichkeit" zwischen zwei Strings als 2 * lcslen (A, B) / (len (A) + len (B)) definieren, um eine Punktzahl zwischen 0 und 1 zu erhalten.
Es ist unwahrscheinlich, dass Soundex im Allgemeinen angemessen ist; es ist eher grob und etwas auf Englisch abgestimmt. Insbesondere ist das erste Zeichen der Soundex-Zeichenfolge das erste Zeichen der Eingabe, daher wird Ihr Englisch / Hebräisch-Beispiel nicht in den gleichen Soundex-Code übersetzt, es sei denn, Sie transkribieren auch zuerst die hebräischen Zeichen in Englisch (Latein). Sowohl Kyrillisch als auch Chinesisch haben Transliterationen aus dem ursprünglichen Zeichensatz in Latein - aber es gibt Variationen in der Art, wie es gemacht wird.
Untersuche Metaphone ; Es ist jedoch konzeptionell ähnlich wie Soundex und hat ähnliche Einschränkungen.
Ich kenne kein sprachübergreifendes Äquivalent.
Ich weiß nicht, ob das IPA (International Phonetic Alphabet) helfen würde. Sie müßten das Englische und das Hebräische ins IPA übersetzen und dann eine Ähnlichkeitsfunktion verwenden, um verwandte Laute zuzuordnen.
Tags und Links unicode similarity match soundex phonetics