Re: php-определение языка текста

pvg72

никто не сталкивался с определением языка текста (русский/английский/немецкий/французский/испанский/итальянский и т.д.) при помощи php? Был бы очень признателен за конкретную помощь или мысли по поводу алгоритма.

Elina74

Я читал у Евгения Рошаля, как определить кодировку русского текста, но думаю, его можно применить и для определения языка.
Все основывается на том, что в каждом языке частота употребления букв различна и индивидуальна. То есть у нас чаще всего встречается в тесте буква "о", с частотой ~0.094, дальше идет буква "а", и т.д. в самом конце плетутся буквы вроде "ф", "ш", "ъ". Думаю, в инете можно найти таблицы встречаемости каждой буквы в тех языках, которые тебя интересуют.
Алгоритм, наверное такой - смотрим в тексте (достаточно длинном какой из символов встречается наиболее часто (наверное это будет пробел). Для уверенности наверное, понадобится подсчитать два-три наиболее частых. И сверить с таблицей по языкам.

EVPATIY

спасибо. но нужно определять 76 языков для строк от 100 до 10000 символов

Aleksei66

Русский - другая кодировка.
Остальные легко отличить по ключевым элементам, которые очень часто встречаются в тексте. Например, только в английском очень много слов типа of или the. В немецком тоже специфические артикли. Испанский и французкий отличаются по артиклям los и les, а также сокращениям del и du. Кроме того, в них встречаются символы не из английского алфавита. Причастия в испанском оканчиваются на -ando, -iendo, -ado, -ido. В общем, различий выше крыши.

Elina74

Мой способ формализовать легче, а 76 таблиц частот создать - дело недолгое.

EVPATIY

у русского кодировка не уникальна

Aleksei66

Для коротких текстов частота символов не поможет (может быть путаница с похожими языками). Кроме того, чтобы ее набрать нужна прорва текстов, а их может не быть столько.
Но 76 языков это через чур. Правда, любые 2 из них отличаются в очевидных моментах, скорее всего, так что это всего лишь дело времени определить в чем именно состоит отличие.

EVPATIY

а кроме общих слов?
Оставить комментарий
Имя или ник:
Комментарий: