FreeLing

Материал из NLPub
Перейти к: навигация, поиск

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

Доступность

Библиотека и её исходный код распространяется на условиях лицензии GPL, что удобно для некоммерческих проектов и академических исследований. Тем не менее, лицензия делает невозможным распространение закрытых (проприетарных) продуктов, которые используют Freeling в качестве составной части. Компании и физические лица, желающие использовать FreeLing в таких целях, могут обратиться к разработчикам и лицензировать библиотеку или её модули в индивидуальном порядке.

Компоненты

Графематический анализ

Графематический анализ выполняется модулями определения языка, разделения предложений и токенизации. Токенизация и разделение на предложения выполняются с помощью регулярных выражений.

Морфологический анализ

FreeLing имеет два метода морфологического анализа:

  1. Основанный на скрытых марковских моделях (см. http://nlp.lsi.upc.edu/freeling/doc/userman/html/node49.html#file-hmm)
  2. Relaxation Labelling (статистическая модель + ограничения (например, на последовательность определенных частей речи)) (см. http://nlp.lsi.upc.edu/freeling/doc/userman/html/node93.html)

В зависимости от конфигурации можно вывести все варианты разбора словоформы с их вероятностями либо наиболее вероятный разбор.

Описание набора тегов для русского языка приведено здесь

Синтаксический анализ

FreeLing поддерживает:

  1. синтаксический анализ в формализме грамматики зависимостей на основе правил
  2. поверхностный синтаксический анализ в формализме контекстно-свободной грамматики на основе правил

Извлечение именованных сущностей

Библиотека оснащена модулями выделения дат и именованных сущностей с их классификацией.

Разрешение анафоры

FreeLing содержит модуль, устанавливающий кореферентные связи, который использует статистическую модель и семантическую информацию из WordNet

Семантическая разметка

Библиотека имеет модули семантической разметки (подбирает синонимы на основании WordNet), разрешения лексической неоднозначности.

Установка

Можно установить как скомпилированную версию анализатора, так и исходные коды библиотеки, которые затем необходимо скомпилировать (см. описание установки)

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

Командная строка

FreeLing имеет утилиту командной строки analyze, описание которой приведено в документации. Утилита принимает строки из STDIN и выводит результат в STDOUT. При указании опций --server и --port analyze работает как сервер (см. пример)

Формат входного и выходного потоков, модели для анализа указываются в конфигурационном файле. Конфигурационный файл задается опцией -f. Пример конфигурационного файла для испанского языка и расшифровка настроек приведены в документации. Для русского языка в конфигурационном файле нужно указать модели для русского языка (по умолчанию находятся в /usr/local/share/freeling/ru).

Пример графематического и морфологического анализа для русского языка (теггер hmm, без автоматического снятия омонимии):

gisly@ubuntu:/usr/local/bin$ echo "У меня есть собака. Я хочу есть. Я вижу стол. Стол стоит посреди команты. Он лежал на солнце. Солнце ярко светит" | analyze -f /home/gisly/Freeling/rusConfig.cfg  
У у B0 0.997789
меня я E0S0000 1
есть быть VDS0FP3N0A00 0.200228 быть VDS0PP1N0A00 0.200228 быть VDS0PP2N0A00 0.200228 быть VDS0PP3N0A00 0.200228
собака собака NCNSFA0000 1
. . Fp 1

Я я ENS0000 0.996729
хочу хотеть VDS0FP1N0M00 1
есть быть VDS0FP3N0A00 0.200228 быть VDS0PP1N0A00 0.200228 быть VDS0PP2N0A00 0.200228 быть VDS0PP3N0A00 0.200228
. . Fp 1

Я я ENS0000 0.996729
вижу видеть VDS0FP1N0M00 1
стол стол NCFSMI0000 0.744893
. . Fp 1

Стол стол NCNSMI0000 0.255091
стоит стоять VDS0FP3N0A00 0.533799
посреди посреди B0 0.979742
команты команты NCNPMA0000 1
. . Fp 1

Он он E0S0000 1
лежал лежать VDSMS0N0A00 0.999898
на на B0 0.999321
солнце солнце NCOSAI0000 0.163286
. . Fp 1

Солнце солнце NCNSAI0000 0.686356
ярко яркий A0SA0S000 1
светит светить VDS0FP3N0A00 1

C/C++

FreeLing можно использовать как библиотеку для C/C++.


Ссылки

Примечания