vergleichen kurze Strings in verschiedenen Sprachen für ähnlichen Sound - ist Soundex die Antwort?

8

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?

    
RabinDev 26.05.2011, 15:18
quelle

3 Antworten

7

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.

  • בבףפ → 1
  • גזחךכסקש → 2
  • דטדט → 3
  • ץצ → 32
  • → 4
  • םםןנ → 5
  • ר → 6
  • אאעע → ignoriert

Da Soundex jedoch englischzentriert ist, kann es gewisse Unklarheiten in der hebräischen Aussprache nicht richtig behandeln:

  • å wird in der obigen Liste auf 1 (wie Englisch V) abgebildet, aber es stellt oft O, U oder W dar, in diesem Fall sollte es in Soundex ignoriert werden.
  • ח ist schwer zu klassifizieren, da es kein englisches Äquivalent gibt. Ich schreibe es in Kategorie 2, weil dies (1) der Transliteration "ch" entspricht und (2) ך / כ die gleiche Kategorie mit oder ohne dagesh zulässt.
  • Die aschkenasische Aussprache würde zwischen den Kategorien 2 und 3 aufteilen.

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:

  • ΒΠΦ → 1
  • Ψ → 12
  • ΓΖΚΞΣΧ → 2
  • ΔΘΤ → 3
  • Λ → 4
  • ΜΝ → 5
  • Ρ → 6
  • ΑΕΗΙΟΥΩ → ignoriert

oder Russisch:

  • БВПФ → 1
  • ГЖЖКСХЧШЩ → 2
  • ÄT → 3
  • Ц → 32
  • → → 4
  • МН → 5
  • Р → 6
  • АЕЁИЙОУЪЫЬЭЮЯ → ignoriert

(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.

    
dan04 29.05.2011, 11:05
quelle
1

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.

    
Jonathan Leffler 26.05.2011 16:02
quelle
1

Ich würde vorschlagen, in Daitch-Mokotoff Soundex Code (besonders gut mit Hebräisch) zu suchen. Überprüfen Sie dies , das englische Zeichen als Eingabe verwendet und dies , das hebräische Zeichen als Eingabe verwendet

    
Amnon 24.12.2012 02:06
quelle