Lemmatizer.org

Использование из C++

Cоздаем экземпляр класса tl:lemmatizer, загружаем. Понимаем, что если загрузка не удается, то кидается exception, с полной диагностикой ошибки:

#include <turglem/lemmatizer.hpp>

// ...
    tl:lemmatizer lem;
    try
    {
        lem.load_lemmatizer("/usr/local/share/turglem/russian/dict_russian.auto",
            "/usr/local/share/turglem/russian/paradigms_russian.bin",
            "/usr/local/share/turglem/russian/prediction_russian.auto"
        );
    }
    catch (const std::exception &e)
    {
        printf("EXCEPTION: %s\n", e.what());
        return -1;
    }
// ...

Для того, чтобы лемматизировать некоторое слово s (const char *), например, заданное в кодировке UTF8, нужно вызвать единственную функцию, параметризовав её соответствующим адаптером:

    tl::lem_result lr;
    size_t sz_lem = lem.lemmatizei<russian_utf8_adapteri>(s, lr);
Слово лемматизировано. sz_lem — это сколько вариантов лемматизации получилось. Перечисляются все варианты. Например, слово «перед» может быть как существительным, там и предлогом, слово «окна» может быть словом «окно» в разных падежах.

Чаще всего нужно просто получать начальную форму слова, это делается так (в данном коде перечисляются все возможные варианты, с повторами):

    for (size_t i = 0; i < sz_lem; i++)
    {
        std::string nform = lem.get_text(lr, i, 0);
        printf("\tnormal form: '%s'\n", nform.c_str());
    }

В следующий раз я расскажу как просто получить начальные формы без повторений. А также как получать шрамматические признаки исходного слова.


© 2007, Lemmatizer Team.
Contact e-mail: lemmatizer@mail.ru
(spammers are welcome, I always order your products nowhere. :) )