Специфика текста - адресса, т.е. проверяемый текст будет вида "440 5th Avenue North, Seattle"
Другими словами - небольшой набор слов, а не сочинения
Нашел разные варианты в нете, но всё не то.
Вот что более всего подошло - http://pear.php.net/package/Text_LanguageDetect
Но к сожалению результаты не впечатлили. Слово "Street" не определяет, что это англ язык. Как и площадь.
Примеры:
"440 5th Avenue North, Seattle"
результат
Цитата |
Array ( [french] => 0.2647619047619 [english] => 0.21619047619048 [italian] => 0.17904761904762 [portuguese] => 0.17460317460317 [slovene] => 0.14809523809524 [czech] => 0.14777777777778 [pidgin] => 0.14507936507937 [norwegian] => 0.14380952380952 [estonian] => 0.12793650793651 [albanian] => 0.12587301587302 [hawaiian] => 0.12507936507937 [slovak] => 0.11920634920635 [finnish] => 0.11920634920635 [latin] => 0.11825396825397 [romanian] => 0.1147619047619 [spanish] => 0.11396825396825 [vietnamese] => 0.11222222222222 [croatian] => 0.10666666666667 [swedish] => 0.10619047619048 [german] => 0.09031746031746 [welsh] => 0.084444444444444 [danish] => 0.079047619047619 [turkish] => 0.064444444444444 [latvian] => 0.063015873015873 [polish] => 0.061587301587302 [icelandic] => 0.048888888888889 [indonesian] => 0.046507936507936 [dutch] => 0.037619047619048 [lithuanian] => 0.02984126984127 [swahili] => 0.027301587301587 [cebuano] => 0.024761904761905 [hungarian] => 0.024285714285714 [bengali] => 0 [azeri] => 0 [somali] => 0 [mongolian] => 0 [hausa] => 0 [tagalog] => 0 ) |
Тут вроде бы в топе, но всё равно, не то
"Skate Park, Seattle, WA" (и без сиатла, просто Skate Park) Результат одинаков
результат
Цитата |
Array ( [romanian] => 0.30473684210526 [italian] => 0.29947368421053 [french] => 0.29298245614035 [german] => 0.27473684210526 [slovene] => 0.24456140350877 [estonian] => 0.23842105263158 [norwegian] => 0.23842105263158 [danish] => 0.2380701754386 [portuguese] => 0.23526315789474 [dutch] => 0.23228070175439 [albanian] => 0.23 [english] => 0.22842105263158 [spanish] => 0.21789473684211 [swahili] => 0.21456140350877 [swedish] => 0.21315789473684 [slovak] => 0.21035087719298 [polish] => 0.19614035087719 [hawaiian] => 0.17912280701754 [czech] => 0.17280701754386 [latvian] => 0.17245614035088 [indonesian] => 0.16157894736842 [latin] => 0.15175438596491 [finnish] => 0.14157894736842 [lithuanian] => 0.13701754385965 [croatian] => 0.13438596491228 [pidgin] => 0.12754385964912 [cebuano] => 0.12210526315789 [hausa] => 0.10719298245614 [turkish] => 0.078947368421053 [hungarian] => 0.077719298245614 [somali] => 0.069473684210526 [icelandic] => 0.064210526315789 [tagalog] => 0.056491228070175 [azeri] => 0.045263157894737 [vietnamese] => 0.038947368421053 [welsh] => 0.022280701754386 [mongolian] => 0 [bengali] => 0 ) |
В общем - приведёный пример был бы идеальным если бы работал так как надо
И тут вопрос - сталкивался ли кто с похожей задачей и как решали?
Абсолютно идеально подходит Гугл транслейт, выдаёт на все проверяемые тесты - правильно. Но у него ограничения и стоит после - дорого. 20 баксов за 1М символов
И что бы английские адресса не определять(львиная доля) транслейтом, хотелось бы оффлайновым детектором проверять
Для чего это надо? Для поиска
Все адресса хранятся на англ. языке. Т.е. Юзер вводит Москва, Россия, в бд уходит Moscow, Russia (эт грубый пример, что бы ясно было для чего)
А в дальнейшем вводить будет в поиске "Москва", а такого адресса нету и не найдёт. Соотв. через гугл мапс апи, будет получатся снова таки Moscow, Russia и юзер найдёт то, что ему надо
И если юзер изначально ввёл Lenina Street 15 или 440 5th Avenue North, Seattle (любой англ адресс, не итальянский, немеций и французский) - не гонять через мапс апи и сразу искать по введённому.
Проверять по буквам - смысла 0. Письменый немецкий - использует обычную латиницу(и не только немецкий). ß заменяется на ss, ну и так далее.
И если юзер введёт "Strasse Lenina 15" - необходимо через мапс апи получить Lenina Street 15
Т.е. в сухом остатке - интересует: существует ли оффлайн определитель языка, по нескольким словам, где приоритет - адресса. Т.е. слова "Площадь, улица, проспект, штат..."
_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться