Этот проект предоставляет бесплатные (даже для коммерческого использования) современные инструменты извлечения информации. Текущая версия включает инструменты для извлечения именованных сущностей и обнаружения бинарных отношений, а также инструменты для обучения пользовательских экстракторов и детекторов отношений.
MITIE построен на основе dlib, высокопроизводительной библиотеки машинного обучения[1]. MITIE использует несколько современных методов, включая использование встраивания распределенных слов[2] и машин структурных опорных векторов[3]. ]. MITIE предлагает несколько предварительно обученных моделей, обеспечивающих различные уровни поддержки для английского, испанского и немецкого языков, прошедших обучение с использованием различных лингвистических ресурсов (например, CoNLL 2003, ACE, Wikipedia, Freebase и Gigaword). Основное программное обеспечение MITIE написано на C++, но привязки для нескольких других языков программного обеспечения, включая Python, R, Java, C и MATLAB, позволяют пользователю быстро интегрировать MITIE в свои собственные приложения.
Внешние проекты создали привязки API для OCaml, .NET, .NET Core, PHP и Ruby. Также имеется интерактивный инструмент для маркировки данных и обучения MITIE.
Основной API MITIE — это API C, который описан в заголовочном файле mitie.h. Помимо этого, существует множество примеров программ, показывающих, как использовать MITIE из C, C++, Java, R или Python 2.7.
Прежде чем вы сможете запустить предоставленные примеры, вам необходимо загрузить файлы обученной модели, что вы можете сделать, запустив:
make MITIE-models
или просто загрузив файл MITIE-models-v0.2.tar.bz2 и распаковав его в папку MITIE. Обратите внимание, что испанская и немецкая модели загружаются отдельно. Итак, если вы хотите использовать испанскую модель NER, загрузите MITIE-models-v0.2-Spanish.zip и распакуйте его в папку MITIE. Аналогично для немецкой модели: MITIE-models-v0.2-Немецкий.tar.bz2
MITIE поставляется с базовым инструментом потоковой передачи NER. Таким образом, вы можете указать MITIE обрабатывать каждую строку текстового файла независимо и выводить размеченный текст с помощью команды:
cat sample_text.txt | ./ner_stream MITIE-models/english/ner_model.dat
Исполняемый файл ner_stream можно скомпилировать, запустив make
в папке MITIE верхнего уровня или перейдя в папку Tools/ner_stream и запустив make
или используя CMake для его сборки, что можно сделать с помощью следующих команд:
cd tools/ner_stream
mkdir build
cd build
cmake ..
cmake --build . --config Release
В UNIX-подобной системе это можно сделать, запустив make
в папке MITIE верхнего уровня или выполнив:
cd mitielib
make
В результате в папке mitielib создаются файлы общей и статической библиотеки. Или вы можете использовать CMake для компиляции общей библиотеки, набрав:
cd mitielib
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Любой из этих методов создаст общую библиотеку MITIE в папке mitielib.
Если вы скомпилируете MITIE с помощью cmake, он автоматически найдет и будет использовать все оптимизированные библиотеки BLAS на вашем компьютере. Однако, если вы компилируете с использованием обычного make, вам придется вручную найти библиотеки BLAS, иначе DLIB по умолчанию будет использовать встроенную, но более медленную реализацию BLAS. Поэтому, чтобы использовать OpenBLAS при компиляции без cmake, найдите libopenblas.a
и libgfortran.a
, а затем запустите make
следующим образом:
cd mitielib
make BLAS_PATH=/path/to/openblas.a LIBGFORTRAN_PATH=/path/to/libfortran.a
Обратите внимание: если ваши библиотеки BLAS не находятся в стандартных местах, cmake не сможет их найти. Однако вы можете указать ему, в какой папке искать, заменив cmake ..
на такой оператор:
cmake -DCMAKE_LIBRARY_PATH=/home/me/place/i/put/blas/lib ..
После создания общей библиотеки MITIE вы можете перейти в папку example/python и просто запустить любой из сценариев Python. Каждый сценарий представляет собой учебное пособие, объясняющее какой-либо аспект MITIE: распознавание именованных сущностей и извлечение отношений, обучение пользовательскому инструменту NER или обучение пользовательскому экстрактору отношений.
Вы также можете установить mitie
напрямую с github с помощью этой команды: pip install git+https://github.com/mit-nlp/MITIE.git
.
MITIE можно установить как пакет R. Дополнительную информацию смотрите в README.
В папке example/C находятся примеры программ на языке C. Чтобы скомпилировать их, вы просто заходите в эти папки и запускаете make
. Или используйте CMake следующим образом:
cd examples/C/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
В папке example/cpp находятся примеры программ на C++. Чтобы скомпилировать любой из них, просто зайдите в эти папки и запустите make
. Или используйте CMake следующим образом:
cd examples/cpp/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
В папке example/java находится пример Java-программы. Прежде чем вы сможете его запустить, вы должны скомпилировать Java-интерфейс MITIE, что вы можете сделать следующим образом:
cd mitielib/java
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Это поместит общую библиотеку javamitie и файл jar в папку mitielib. Получив эти два файла, вы можете запустить пример программы в файле example/java, запустив run_ner.bat, если вы используете Windows, или run_ner.sh, если вы используете систему POSIX, например Linux или OS X.
Также обратите внимание, что для компиляции интерфейса MITIE у вас должен быть установлен Swig 1.3.40 или новее, CMake 2.8.4 или новее, а также Java JDK. Наконец, обратите внимание: если вы используете 64-битную версию Java в Windows, вам нужно будет использовать такую команду:
cmake -G "Visual Studio 10 Win64" ..
вместо cmake ..
чтобы Visual Studio знала, как создать 64-битную библиотеку.
Вы можете запустить простой регрессионный тест, чтобы проверить свою сборку. Сделайте это, выполнив следующую команду из папки MITIE верхнего уровня:
make test
make test
собирает примеры программ и загружает необходимые примеры моделей. Если вам нужен нестандартный компилятор C++, измените CC
в examples/C/makefile
tools/ner_stream/makefile
.
Мы создали двоичные файлы Python 2.7, упакованные с примерами моделей для 64-битных Linux и Windows (как 32-, так и 64-битные версии Python). Вы можете скачать предварительно скомпилированный пакет здесь: Предварительно скомпилированный MITIE 0.2.
Мы создали двоичные файлы Java для 64-битной JVM, которые работают в Linux и Windows. Вы можете скачать предварительно скомпилированный пакет здесь: Предварительно скомпилированный Java MITIE 0.3. В файле находится папка example/java. Вы можете запустить пример, запустив предоставленный файл .bat или .sh.
Специально о MITIE нет никакой статьи. Однако, поскольку MITIE по сути представляет собой лишь тонкую оболочку dlib, пожалуйста, цитируйте статью dlib JMLR, если вы используете MITIE в своих исследованиях:
Davis E. King. Dlib-ml: A Machine Learning Toolkit. Journal of Machine Learning Research 10, pp. 1755-1758, 2009
@Article{dlib09,
author = {Davis E. King},
title = {Dlib-ml: A Machine Learning Toolkit},
journal = {Journal of Machine Learning Research},
year = {2009},
volume = {10},
pages = {1755-1758},
}
MITIE распространяется по лицензии Boost Software License — версия 1.0 — 17 августа 2003 г.
Настоящим бесплатно любому лицу или организации, получившим копию программного обеспечения и сопроводительную документацию, на которую распространяется данная лицензия («Программное обеспечение»), предоставляется разрешение на использование, воспроизведение, отображение, распространение, выполнение и передачу Программного обеспечения, и готовить производные работы на основе Программного обеспечения и разрешать это делать третьим лицам, которым предоставляется Программное обеспечение, при условии соблюдения следующих условий:
Уведомления об авторских правах в Программном обеспечении и все это заявление, включая вышеуказанное предоставление лицензии, это ограничение и следующий отказ от ответственности, должны быть включены во все копии Программного обеспечения, полностью или частично, а также во все производные работы Программного обеспечения, за исключением случаев, когда копии или производные работы представляют собой исключительно форму машинно-исполняемого объектного кода, созданного процессором исходного языка.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ПРАВА И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ ИЛИ ЛЮБОЕ ЛИЦО, РАСПРОСТРАНЯЮЩЕЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЙ УБЫТОК ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ ИЗ КОНТРАКТА, ПРАВОНАРУШЕНИЯ ИЛИ ДРУГОГО ОБРАЗА, ВОЗНИКАЮЩИХ ИЗ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
[1] Дэвис Э. Кинг. Dlib-ml: набор инструментов машинного обучения. Журнал исследований машинного обучения 10, стр. 1755–1758, 2009 г.
[2] Парамвир Диллон, Дин Фостер и Лайл Унгар, Eigenwords: Spectral Word Embeddings, Журнал исследований машинного обучения (JMLR), 16, 2015.
[3] Т. Йоахимс, Т. Финли, Чун-Нам Ю, Обучение структурных SVM в плоскости сечения, Машинное обучение, 77 (1): 27-59, 2009.