Apache OpenNLP
Apache OpenNLP — интегрированный пакет инструментов обработки текста, работающих на основе машинного обучения.
Пакет работает на платформе Java и содержит решения большинства основных задач обработки естественного языка, в частности средства токенизации текста, разбиения на предложения, морфологической разметки, извлечения именованных сущностей, синтаксического разбора предложения, и др. Как правило, эти задачи активно применяются при построении сложных систем обработки текста.
В состав OpenNLP включены инструменты машинного обучения на основе как методов максимальной энтропии, так и на основе перцептрона. Имеется возможность интеграции с пакетом Apache UIMA.
Содержание |
[править] Доступность
Пакет Apache OpenNLP распространяется на условиях лицензии Apache License. Исходные коды доступны на официальном сайте проекта. Существует достаточно полная документация[1] как для пользователя, так и для разработчика интегрированных решений.
[править] Установка
Для работы пакета требуется установленная среда выполнения Java (Java Runtime Environment).
[править] Unix-подобные операционные системы
Сначала нужно скачать и распаковать архив:
% cd % curl http://www.sai.msu.su/apache//incubator/opennlp/apache-opennlp-1.5.2-incubating-bin.tar.gz | tar zxv apache-opennlp-1.5.2-incubating/lib/opennlp-maxent-3.0.2-incubating.jar apache-opennlp-1.5.2-incubating/lib/opennlp-tools-1.5.2-incubating.jar ... apache-opennlp-1.5.2-incubating/docs/opennlp-uima-descriptors/DateNameFinder.xml apache-opennlp-1.5.2-incubating/docs/opennlp-uima-descriptors/PersonNameFinderTrainer.xml
Затем необходимо внести изменения в конце файла ~/.bashrc
, чтобы обращаться к OpenNLP напрямую из командной строки:
export PATH=~/apache-opennlp-1.5.2-incubating/bin:$PATH
После перезагрузки оболочки можно проверить функционирование OpenNLP:
% opennlp Usage: opennlp TOOL where TOOL is one of: Doccat learnable document categorizer DoccatTrainer trainer for the learnable document categorizer DoccatConverter DictionaryBuilder builds a new dictionary SimpleTokenizer character class tokenizer TokenizerME learnable tokenizer TokenizerTrainer trainer for the learnable tokenizer TokenizerMEEvaluator evaluator for the learnable tokenizer TokenizerCrossValidator K-fold cross validator for the learnable tokenizer TokenizerConverter DictionaryDetokenizer SentenceDetector learnable sentence detector SentenceDetectorTrainer trainer for the learnable sentence detector SentenceDetectorEvaluatorevaluator for the learnable sentence detector SentenceDetectorCrossValidator K-fold cross validator for the learnable sentence detector SentenceDetectorConverter TokenNameFinder learnable name finder TokenNameFinderTrainer trainer for the learnable name finder TokenNameFinderEvaluator TokenNameFinderCrossValidator K-fold cross validator for the learnable Name Finder TokenNameFinderConverter converts foreign data formats to native format CensusDictionaryCreator Converts 1990 US Census names into a dictionary POSTagger learnable part of speech tagger POSTaggerTrainer trains a model for the part-of-speech tagger POSTaggerEvaluator POSTaggerCrossValidator K-fold cross validator for the learnable POS tagger POSTaggerConverter ChunkerME learnable chunker ChunkerTrainerME trainer for the learnable chunker ChunkerEvaluator Measures the performance of the Chunker model with the reference data ChunkerCrossValidator K-fold cross validator for the chunker ChunkerConverter converts foreign data formats to native format Parser performs full syntactic parsing ParserTrainer trains the learnable parser BuildModelUpdater trains and updates the build model in a parser model CheckModelUpdater trains and updates the check model in a parser model TaggerModelReplacer replaces the tagger model in a parser model All tools print help when invoked with help parameter Example: opennlp SimpleTokenizer help
[править] Использование
[править] Языковая классификация
Определение языка документа выполняется с использованием обученной модели. Для получения обученной модели необходимо скачать размеченные данные из параллельного корпуса, преобразовать их в формат OpenNLP и построить классификатор.
Документация OpenNLP предлагает использовать данные из Leipzig Corpora[2].
Преобразование данных в формат OpenNLP с сохранением в файл lang.model
:
% opennlp DoccatConverter leipzig -lang en -data eng_wikipedia_2010_100K-sentences.txt >>lang.train % opennlp DoccatConverter leipzig -lang ru -data rus_wikipedia_2010_100K-sentences.txt >>lang.train
Обучение модели на основе подготовленных данных. Модель будет сохранена в файл lang.model
:
% opennlp DoccatTrainer -lang x-unspecified -encoding MacRoman -data lang.train -model lang.model
После выполнения предыдущего этапа файл lang.train
с данными для обучения можно удалить. Классификатор обучен и готов к решению исходной задачи:
% opennlp Doccat lang.model Loading Document Categorizer model ... done (0,285s) Как поспал, братишка? ru Как поспал, братишка? Scary monsters and nice sprites. en Scary monsters and nice sprites. Average: 0,3 doc/s Total: 2 doc Runtime: 6.643s
[править] Ссылки
- Сайт проекта Apache OpenNLP