Lingua::Identify

| Комментариев: 2

На спане есть модуль Lingua::Identify, который предназначен для определения языка, на котором написан текст.

Я опробовал его с данными из базы сайта sayperl.org, сравнивая результат с тем, что определил переводчик Гугла.

use v5.12;

use SayPerl::Datasource;
use Lingua::Identify qw(:language_identification);

my ($total, $equal);
for (@{dbh->selectall_arrayref("
    select title, description, language
    from item where language
    in ('bg', 'da', 'de', 'en', 'es', 'fi', 'fr',
    'hr', 'hu', 'id', 'it', 'la', 'nl', 'pl', 'pt',
    'ro', 'ru', 'sl', 'sq', 'sv', 'tr')")}) {
    $total++;
   
    my $text = "$$_[0] $$_[1]";
    $text =~ s{<.*?>}{ }gs;
    my $detected = langof($text);
    my $googled = $$_[2];
   
    if ($detected ne $googled) {
        say "$detected $googled $$_[0]";
        $equal++;
    }
}
say "$equal/$total";

Из таблицы выбирались записи только на языках, которые поддержвает модуль, а для определения я воспользовался самым простым вариантом — вызовом функции langof(), которая в скалярном контексте возвращает код языка.

Результат — из 5063 записей язык не совпал в 1590 случаях. Прям увы. Русские записи не определились в подавляющем большинстве случаев: 1401 из 1492 (может надо было где-то включить юникод?).

В тестах к модулю лежат всего четыре файла с текстами: de, en, pt и pt_big. В немецком — ни одного умляута, а португальские — в однобайтовой Latin-1. Перекодировка Encode::from_to из UTF-8 в CP1251 вдвое уменьшила число ошибок в русских текстах, но это уже шаманство.

Гугл ошибается, в основном, только на предельно коротких текстах. Полный лог доступен для самостоятельного изучения.

Комментариев: 2

Я добивался от него очень хороших результатов на своих корпусах. В нём все правильные алгоритмы. Но выложить нечего.

Я имею в виду, переобучал на своих корпусах.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 21.05.2010 22:13. Автор — ash.

Предыдущая запись — Perl Survey

Следующая запись — Еще один пример использования state

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.