Die beste Methode, um die Sprache einer gegebenen Zeichenkette zurückzugeben

7

Genauer gesagt versuche ich zu überprüfen, ob die angegebene Zeichenfolge (ein Satz) auf Türkisch ist.

Ich kann überprüfen, ob die Zeichenfolge türkische Zeichen wie Ç, Ş, Ü, Ö, Ğ usw. hat. Allerdings ist das nicht sehr zuverlässig, da diese in C, S, U, O, G konvertiert werden können, bevor ich die Zeichenfolge erhalte .

Eine andere Methode besteht darin, die 100 am häufigsten verwendeten Wörter türkisch zu verwenden und zu überprüfen, ob der Satz irgendwelche / einige dieser Wörter enthält. Ich kann diese beiden Methoden kombinieren und ein Punktesystem verwenden.

Was denkst du ist der effizienteste Weg, um mein Problem in Python zu lösen?

Verwandte Frage: (menschliche) Sprache eines Dokuments (Perl, Google Translation API)

    
Boolean 23.05.2017, 09:57
quelle

3 Antworten

14

Eine Option wäre die Verwendung eines Bayes-Klassifikators wie Reverend . Die Reverend-Homepage gibt diesen Vorschlag für einen naiven Sprachdetektor:

%Vor%

Das Training mit komplexeren Token-Sets würde die Ergebnisse verstärken. Weitere Informationen zur Bayes'schen Klassifikation finden Sie hier und hier .

    
Daniel Naab 21.12.2008, 01:40
quelle
10

Eine einfache statistische Methode, die ich schon einmal benutzt habe:

Erhalten Sie eine anständige Menge an Beispieltrainingstext in der Sprache, die Sie erkennen möchten. Teile es in Trigramme auf, z. B.

"Hallo Foobar" in Trigrammen ist:  'Hel', 'ell', 'llo', 'lo', 'o f', 'fo', 'foo', 'oob', 'oba', 'bar'

Zählen Sie für alle Quelldaten die Häufigkeit des Auftretens jedes Trigrams, vermutlich in einem Diktat, in dem key = trigram und value = frequency sind. Sie können dies auf die häufigsten 300 häufigsten Kombinationen mit drei Buchstaben beschränken oder etwas, wenn Sie möchten. Pickle das Diktat irgendwo weg.

Um festzustellen, ob eine neue Textprobe in derselben Sprache geschrieben wurde, wiederholen Sie die obigen Schritte für den Beispieltext. Jetzt müssen Sie nur noch eine Korrelation zwischen den Beispiel-Trigramm-Frequenzen und den Trainings-Trigramm-Frequenzen berechnen. Sie müssen ein wenig mit ihm spielen, um eine Schwellenkorrelation auszuwählen, über der Sie Eingaben als türkisch betrachten oder nicht.

Es hat sich gezeigt, dass diese Methode sehr genau ist und ausgefeiltere Methoden hervorbringt, siehe

Cavnar & amp; Trenkle (1994): "N-Gramm-basierte Textkategorisierung"

Die Verwendung von Trigrammen löst das Problem der Verwendung von Wortlisten, da es in einer gegebenen Sprache eine große Anzahl von Wörtern gibt, insbesondere bei unterschiedlichen grammatischen Permutationen. Ich habe versucht, nach gemeinsamen Wörtern zu suchen, das Problem ist, dass sie oft ein falsches Positiv für eine andere Sprache geben, oder selbst viele Permutationen haben. Die statistische Methode benötigt nicht viel Speicherplatz und erfordert kein komplexes Parsing. Übrigens funktioniert diese Methode nur für Sprachen mit einem phonetischen Schriftsystem, und funktioniert überhaupt nicht mit Sprachen, die eine ideographische Sprache verwenden (d. H. Chinesisch, japanisch, koreanisch).

Alternativ hat Wikipedia einen Abschnitt über Türkisch in seinem praktischen Spracherkennungsplan

    
ʞɔıu 21.12.2008 03:32
quelle
-1

Warum nicht einfach eine vorhandene Rechtschreibprüfungsbibliothek verwenden? Rechtschreibprüfung für mehrere Sprachen, Sprache mit niedrigster Fehleranzahl auswählen.

    
Kim Stebel 21.12.2008 14:26
quelle

Tags und Links