Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Компиляция и использование библиотеки libstemmer_c

Стеммер Портера

Этот документ переводом файла README, который является частью дистрибутива C-шной версии библиотеки "libstemmer", доступной для загрузки по следующему адресу:

http://snowball.tartarus.org/dist/libstemmer_c.tgz

Компиляция библиотеки

Для систем из семейства Unix доступен простой "makefile". В этих системах достаточно просто запустить "make", чтобы сгенерировать файл "libstemmer.o" и демонстрационную программу "stemwords".

Если это не работает в вашей системе, вы должны написать собственную систему сборки (или непосредственно вызывать компилятор). Все файлы, подлежащие компиляции находятся в директориях "libstemmer", "runtime" и "src_c", а открытый заголовочный файл находится в директории "include".

Библиотека может быть собрана в двух вариантах: только с UTF-8 либо с поддержкой UTF-8 и других кодировок. Чтобы собрать вариант с поддержкой только UTF-8, компилируйте "libstemmer_utf8.c" вместо "libstemmer.c".

Один из фрагментов мэйкфайла выделен для удобства в отдельный файл — "mkinc.mak", в котором содержится список файлов исходного кода и заголовочных файлов, используемых при компиляции стандартной версии библиотеки. Файл "mkinc_utf8.mak" содержит фрагмент мэйкфайла со списком только тех файлов исходного кода, которые соответствуют версии библиотеки с поддержкой только UTF-8.

Использование библиотеки

Библиотека предоставляет простое API на C. Для использования необходимо получить новый стеммер с помощью функции "sb_stemmer_new". Функция "sb_stemmer_stem" используется для получения основы слова, "sb_stemmer_length" возвращает длину последней полученной основы, а "sb_stemmer_delete" используется для удаления стеммера.

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

Стеммеры являются реентерабельными, но не потокобезопасными. Другими словами, если вы осуществляете доступ к одному и тому-же объекту стеммера из нескольких потоков, то должны позаботиться о том, чтобы обезопасить каждый доступ посредством блокировки или чего-то похожего.

В настоящее время libstemmer не поддерживает каких-либо механизмов для кэширования результатов операций стемминга. Такое кэширование может сильно повысить производительность стеммера в определенных ситуациях. Поэтому стоит подумать о включении в нее соответствующих патчей.

Стандартный исходный код библиотеки libstemmer содержит алгоритм для каждого из поддерживаемых языков. Этот алгоритм может быть выбран с помощью английского названия языка или с помощью 2- или 3-буквенного кода языка согласно стандарту ISO 639. Кроме того для обеспечения обратной совместимости в библиотеку включен традиционный алгоритм Портера для стемминга английского языка. Однако в новых проектах мы рекомендуем использовать вместо него стеммер "English".

(Некоторые малозначимые алгоритмы представлены на веб-сайте Snowball только в познавательных целях. Это — стеммер Ловинса, стеммер Крайжа Похлмана и т.п. Они не включены в исходный код стандартной библиотеки libstemmer. Фактически они не поддерживаются проектом Snowball, но библиотеку libstemmer можно модифицировать и скомпилировать вместе с нужными из них.)

Пример stemwords

Демонстрационная программа "stemwords" позволяет вам запускать любые стеммеры, скомпилированные с библиотекой libstemmer, для обработки списков слов. О том, как ее использовать, вы можете узнать запустив ее из командной строки с опцией "-h".

Использование библиотеки в более сложных системах

Если вы хотите включить библиотеку в систему сборки какой-то большой программы, мы рекомендуем без модификаций скопировать распакованную библиотеку в поддиректорию в дереве исходников вашей программы. Планируется, что будущие версии библиотеки будут иметь ту же самую структуру, что и текущая. Это должно, как минимум, помочь избежать работы по переходу на новую версию библиотеки.

Для дополнительного удобства список исходников и заголовочных файлов, используемых библиотекой, описан в файле "mkinc.mak", который имеет специальный формат для включения в "Makefile". Включив этот файл в свою систему сборки, вы сможете линковать систему Snowball со своей программой добавив лишь несколько дополнительных правил.

Использование библиотеки в системе с помощью GNU autotools

Библиотека "libstemmer_c" может быть интегрирована в большую систему, которая использует фреймворк "GNU autotool" (и, в частности, "automake" и "autoconf"), следующим способом:

  1. Распакуйте "libstemmer_c.tgz" в корневую директорию проекта, так что в корневой директории проекта должна появится поддиректория "libstemmer_c".
  2. Добавьте файл "Makefile.am" в папку, в которую распаковали libstemmer_c, со следующим содержимым:
    noinst_LTLIBRARIES = libstemmer.la
    include $(srcdir)/mkinc.mak
    noinst_HEADERS = $(snowball_headers)
    libstemmer_la_SOURCES = $(snowball_sources)

    (Возможно, вам понадобится добавить в него еще какие-то строки. Например, в случае, если вы используете опции компилятора, которые несовместимы с компиляцией библиотеки "libstemmer".)

  3. Добавьте "libstemmer_c" в декларацию "AC_CONFIG_FILES" в файле проекта "configure.ac".
  4. Добавьте в майкфайл верхнего уровня следующие строки (или измените существующие присваивания указанных переменных):
    AUTOMAKE_OPTIONS = subdir-objects
    AM_CPPFLAGS = -I$(top_srcdir)/libstemmer_c/include
    SUBDIRS=libstemmer_c
    <name>_LIBADD = libstemmer_c/libstemmer.la

    где <name> — это имя библиотеки или исполняемой программы, которая должна линковаться с "libstemmer".

Перевод: Дмитрий Скоробогатов, 08.08.2011


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2011-08-08 17:14:23

Метки материала: компиляция, libstemmer, c, libstemmer_c, по, программа, бесплатные программы, бесплатное по, it, софт, программирование, soft, software, программное обеспечение, информационные технологии, ит, разработка по, программное обеспечение по, программные решения

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.