Знаете, работа с стартапе, который пытается создать что-то новое и уникальное на рынке очень захватывает. И не только открывающимися возможностями, но и часто нетривиальными задачами и вопросами, которые ставятся перед создателями и которые раньше никто не решал. Вот один из таких вопросов как раз вчера появился передо мной: дано нам произвольную строку текста, заведомо известно, что она может быть двух, а в некоторых случаях и трехъязычной, то есть там смешанный текст из нескольких языков. Необходимо прозрачно для пользователя определить язык, на котором написан текст.
На самом деле задача не такая и редкая — подобная функциональность есть и в текстовых редакторах, и в переключателе клавиатуры PuntoSwitcher, да и в системах машинного перевода такой функционал востребован, не говоря уже про системы поиска информации. Кстати, именно в контексте создания специализированного поисковика и классификатора текстов и появилась такая проблема. Необходимо было получить такую возможность в собственной программе на платформе РНР и при этом не задействовать сторонние сервисы — подобная возможность в виде веб-сервиса присутствует в Google Language API (
в своём блоге я уже исследовал этот сервис), однако она выполняется удалённо и имеет некоторые существенные для нас ограничения, в частности, процедура опознания языка выполняется с существенной задержкой и асинхронна по своей природе. Кроме этого очень хотелось иметь полный контроль над процессом и иметь возможность его гибко настраивать, чего, увы, нет в сторонних сервисах. Поэтому пришлось подумать и попробовать реализовать собственными силами, результат же представляем вашему вниманию.