Este proyecto proporciona herramientas de extracción de información de última generación gratuitas (incluso para uso comercial). La versión actual incluye herramientas para realizar extracción de entidades con nombre y detección de relaciones binarias, así como herramientas para entrenar extractores personalizados y detectores de relaciones.
MITIE está construido sobre dlib, una biblioteca de aprendizaje automático de alto rendimiento[1], MITIE hace uso de varias técnicas de última generación, incluido el uso de incrustaciones de palabras distributivas[2] y máquinas de vectores de soporte estructural[3] ]. MITIE ofrece varios modelos previamente entrenados que brindan distintos niveles de soporte para inglés, español y alemán, entrenados utilizando una variedad de recursos lingüísticos (por ejemplo, CoNLL 2003, ACE, Wikipedia, Freebase y Gigaword). El software principal de MITIE está escrito en C++, pero los enlaces para varios otros lenguajes de software, incluidos Python, R, Java, C y MATLAB, permiten al usuario integrar rápidamente MITIE en sus propias aplicaciones.
Proyectos externos han creado enlaces API para OCaml, .NET, .NET Core, PHP y Ruby. También existe una herramienta interactiva para etiquetar datos y capacitar al MITIE.
La API principal de MITIE es una API C que está documentada en el archivo de encabezado mitie.h. Más allá de esto, hay muchos programas de ejemplo que muestran cómo usar MITIE desde C, C++, Java, R o Python 2.7.
Antes de poder ejecutar los ejemplos proporcionados, deberá descargar los archivos del modelo entrenado, lo cual puede hacer ejecutando:
make MITIE-models
o simplemente descargando el archivo MITIE-models-v0.2.tar.bz2 y extrayéndolo en su carpeta MITIE. Tenga en cuenta que los modelos español y alemán se suministran en descargas independientes. Entonces, si desea utilizar el modelo NER en español, descargue MITIE-models-v0.2-Spanish.zip y extráigalo en su carpeta MITIE. Lo mismo ocurre con el modelo alemán: MITIE-models-v0.2-German.tar.bz2
MITIE viene con una herramienta NER de transmisión básica. Por lo tanto, puede decirle a MITIE que procese cada línea de un archivo de texto de forma independiente y genere texto marcado con el comando:
cat sample_text.txt | ./ner_stream MITIE-models/english/ner_model.dat
El ejecutable ner_stream se puede compilar ejecutando make
en la carpeta MITIE de nivel superior o navegando a la carpeta tools/ner_stream y ejecutando make
o usando CMake para compilarlo, lo que se puede hacer con los siguientes comandos:
cd tools/ner_stream
mkdir build
cd build
cmake ..
cmake --build . --config Release
En un sistema tipo UNIX, esto se puede lograr ejecutando make
en la carpeta MITIE de nivel superior o ejecutando:
cd mitielib
make
Esto produce archivos de biblioteca compartidos y estáticos en la carpeta mitielib. O puedes usar CMake para compilar una biblioteca compartida escribiendo:
cd mitielib
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Cualquiera de estos métodos creará una biblioteca compartida MITIE en la carpeta mitielib.
Si compila MITIE usando cmake, automáticamente encontrará y utilizará cualquier biblioteca BLAS optimizada en su máquina. Sin embargo, si compila usando make normal, entonces tendrá que ubicar manualmente sus bibliotecas BLAS o DLIB usará de manera predeterminada su implementación BLAS incorporada, pero más lenta. Por lo tanto, para usar OpenBLAS al compilar sin cmake, ubique libopenblas.a
y libgfortran.a
, luego ejecute make
de la siguiente manera:
cd mitielib
make BLAS_PATH=/path/to/openblas.a LIBGFORTRAN_PATH=/path/to/libfortran.a
Tenga en cuenta que si sus bibliotecas BLAS no están en ubicaciones estándar, cmake no podrá encontrarlas. Sin embargo, puede indicarle en qué carpeta buscar reemplazando cmake ..
con una declaración como:
cmake -DCMAKE_LIBRARY_PATH=/home/me/place/i/put/blas/lib ..
Una vez que haya creado la biblioteca compartida MITIE, puede ir a la carpeta ejemplos/python y simplemente ejecutar cualquiera de los scripts de Python. Cada script es un tutorial que explica algún aspecto de MITIE: reconocimiento de entidades nombradas y extracción de relaciones, entrenamiento de una herramienta NER personalizada o entrenamiento de un extractor de relaciones personalizado.
También puedes instalar mitie
directamente desde github con este comando: pip install git+https://github.com/mit-nlp/MITIE.git
.
MITIE se puede instalar como un paquete R. Consulte el archivo LÉAME para obtener más detalles.
Hay programas C de ejemplo en la carpeta ejemplos/C. Para compilarlos, simplemente vaya a esas carpetas y ejecute make
. O use CMake así:
cd examples/C/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Hay programas de ejemplo en C++ en la carpeta ejemplos/cpp. Para compilar cualquiera de ellos, simplemente vaya a esas carpetas y ejecute make
. O use CMake así:
cd examples/cpp/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Hay un programa Java de ejemplo en la carpeta ejemplos/java. Antes de poder ejecutarlo, debes compilar la interfaz java de MITIE, lo cual puedes hacer así:
cd mitielib/java
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Eso colocará una biblioteca compartida javamitie y un archivo jar en la carpeta mitielib. Una vez que tenga esos dos archivos, puede ejecutar el programa de ejemplo en ejemplos/java ejecutando run_ner.bat si está en Windows o run_ner.sh si está en un sistema POSIX como Linux u OS X.
También tenga en cuenta que debe tener Swig 1.3.40 o posterior, CMake 2.8.4 o posterior y Java JDK instalado para compilar la interfaz MITIE. Finalmente, tenga en cuenta que si está utilizando Java de 64 bits en Windows, necesitará utilizar un comando como:
cmake -G "Visual Studio 10 Win64" ..
en lugar de cmake ..
para que Visual Studio sepa cómo crear una biblioteca de 64 bits.
Puede ejecutar una prueba de regresión simple para validar su compilación. Haga esto ejecutando el siguiente comando desde la carpeta MITIE de nivel superior:
make test
make test
compila tanto los programas de ejemplo como las descargas de los modelos de ejemplo requeridos. Si necesita un compilador de C++ no estándar, cambie CC
en examples/C/makefile
y en tools/ner_stream/makefile
.
Hemos creado archivos binarios de Python 2.7 empaquetados con modelos de muestra para Linux y Windows de 64 bits (versiones de Python de 32 y 64 bits). Puede descargar el paquete precompilado aquí: MITIE 0.2 precompilado
Hemos creado binarios de Java para JVM de 64 bits que funcionan en Linux y Windows. Puede descargar el paquete precompilado aquí: Java precompilado MITIE 0.3. En el archivo hay una carpeta de ejemplos/java. Puede ejecutar el ejemplo ejecutando el archivo .bat o .sh proporcionado.
No existe ningún artículo específicamente sobre MITIE. Sin embargo, dado que MITIE es básicamente una envoltura delgada alrededor de dlib, cite el artículo JMLR de dlib si usa MITIE en su investigación:
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 tiene la licencia de software Boost - Versión 1.0 - 17 de agosto de 2003.
Por el presente se otorga permiso, sin cargo, a cualquier persona u organización que obtenga una copia del software y la documentación adjunta cubierta por esta licencia (el "Software") para usar, reproducir, mostrar, distribuir, ejecutar y transmitir el Software, y preparar trabajos derivados del Software y permitir que los terceros a quienes se les proporciona el Software lo hagan, todo ello sujeto a lo siguiente:
Los avisos de derechos de autor en el Software y esta declaración completa, incluida la concesión de licencia anterior, esta restricción y la siguiente exención de responsabilidad, deben incluirse en todas las copias del Software, en su totalidad o en parte, y en todos los trabajos derivados del Software, a menos que tales Las copias u trabajos derivados se presentan únicamente en forma de código objeto ejecutable por máquina generado por un procesador de lenguaje fuente.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR, TÍTULO Y NO INFRACCIÓN. EN NINGÚN CASO LOS TITULARES DE LOS DERECHOS DE AUTOR O CUALQUIER PERSONA QUE DISTRIBUYA EL SOFTWARE SERÁN RESPONSABLES DE NINGÚN DAÑO U OTRA RESPONSABILIDAD, YA SEA POR CONTRATO, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.
[1] Davis E. Rey. Dlib-ml: un conjunto de herramientas de aprendizaje automático. Revista de investigación de aprendizaje automático 10, págs. 1755-1758, 2009.
[2] Paramveer Dhillon, Dean Foster y Lyle Ungar, Eigenwords: Spectral Word Embeddings, Journal of Machine Learning Research (JMLR), 16, 2015.
[3] T. Joachims, T. Finley, Chun-Nam Yu, Entrenamiento en plano de corte de SVM estructurales, Aprendizaje automático, 77(1):27-59, 2009.