(человеческий) язык документа


Существует ли способ (программа, библиотека) приблизительно знать, на каком языке написан документ?

У меня есть куча текстовых документов (~500K) на смешанных языках для импорта в CMS с поддержкой i18n (Drupal)..

Мне не нужны идеальные совпадения, только некоторые догадки.

5 4

5 ответов:

Существует довольно простой способ сделать это, учитывая, что у вас есть корпусные данные на всех различных языках, которые вам нужно будет идентифицировать. Это называется N-граммных моделей. Я думаю, что Lingua:: Identify уже делает это, так что это ваш лучший выбор, а не реализация вашего собственного.

Я бы сказал, что лучше всего искать ключевые слова-статьи и тому подобное-которые уникальны для языков, которые вы ищете. Например, "Un "будет отображаться как на испанском, так и на французском языках, но" une "является идентифицируемым французским, тогда как" unos", например, является идентифицируемым испанским. Диакритика тоже полезна - вы увидите " - "на испанском и, возможно, португальском языках," - " на французском и некоторые другие... такого рода вещи.

Edit-решение пола, вероятно, лучшее; похоже, оно использует методы, подобные тем, что я описал, плюс несколько дополнительных.

Запустив поиск в Google для " Определить язык документа" я нашел много различных сайтов, которые помогут вам. Третья ссылка на первой странице в конечном итоге привела меня к функции в Google Code API, которая именно то, что вам нужно.

Google Translation API-это круто,и имеет интерфейс REST. Но мне нужно отправить ему много больших документов (да, я мог бы использовать отрывок), и даже если Google-это Google, я не думаю, что это справедливый.

Документы также не мои, и я спрашиваю своего клиента, можно ли отправить их третьей стороне (даже если вскоре или позже G получит их ;)).

Я думаю, что пойду по пути Perl...

Для этого, кажется, есть модуль Perl: Lingua:: Identify

Пол.