Prosta metoda statystyczna, że użyłem wcześniej:
uzyskać przyzwoitą ilość tekstu szkolenia próbki w języku chcesz wykryć. Podziel go na trygramy, np.
"Hello foobar" w trygramach to: "Hel", "ell", "llo", "lo", "o f", "fo", "foo", "oob", "oba", 'bar'
Dla wszystkich danych źródłowych zliczaj częstotliwość występowania każdego trygramu, prawdopodobnie w dyktacie gdzie klucz = trygam i wartość = częstotliwość. Możesz ograniczyć to do 300 najczęściej używanych 3-literowych kombinacji lub czegoś, jeśli chcesz. Zdejmij gdzieś dyktando.
Aby sprawdzić, czy nowa próbka tekstu jest napisana w tym samym języku, powtórz powyższe kroki dla przykładowego tekstu. Teraz wszystko, co musisz zrobić, to obliczyć korelację między częstotliwościami trygramowymi próbek i częstotliwościami trygramowymi treningu. Będziesz musiał się z nim trochę pogodzić, aby wybrać korelację progową, powyżej której chcesz uznać dane wejście za turecki lub nie.
Sposób ten okazał się być bardzo dokładne, pokonując bardziej wyrafinowane metody, patrz
Cavnar & Trenkle (1994): "N-Gram-Based Text Categorization"
Korzystanie trygramy rozwiązuje problem za pomocą listy słów, ponieważ istnieje ogromna liczba słów w dowolny dany język, zwłaszcza biorąc pod uwagę różne permutacje gramatyczne. Próbowałem szukać wspólnych słów, problem polega na tym, że często dają fałszywy pozytyw dla jakiegoś innego języka, lub sami mają wiele permutacji. Metoda statystyczna nie wymaga dużej przestrzeni dyskowej i nie wymaga złożonego analizowania. Przy okazji ta metoda działa tylko w przypadku języków z fonetycznym systemem zapisu, działa słabo, jeśli w ogóle w językach, które używają języka ideograficznego (tj. Chiński, japoński, koreański).
Alternatywnie wikipedia ma sekcję na tureckie w its handy language recognition chart.
Duplikat: http://stackoverflow.com/questions/257125/human-language-of-a-document –
@ S.Lott: Dodałem link do pytania. – jfs