Ce projet fournit des outils gratuits (même pour un usage commercial) d'extraction d'informations de pointe. La version actuelle comprend des outils permettant d'effectuer l'extraction d'entités nommées et la détection de relations binaires, ainsi que des outils de formation d'extracteurs personnalisés et de détecteurs de relations.
MITIE est construit sur dlib, une bibliothèque d'apprentissage automatique haute performance[1], MITIE utilise plusieurs techniques de pointe, notamment l'utilisation d'intégrations de mots distributionnelles[2] et de machines à vecteurs de support structurel[3 ]. Le MITIE propose plusieurs modèles pré-entraînés offrant différents niveaux de prise en charge de l'anglais, de l'espagnol et de l'allemand formés à l'aide d'une variété de ressources linguistiques (par exemple, CoNLL 2003, ACE, Wikipedia, Freebase et Gigaword). Le logiciel de base du MITIE est écrit en C++, mais les liaisons avec plusieurs autres langages logiciels, notamment Python, R, Java, C et MATLAB, permettent à un utilisateur d'intégrer rapidement le MITIE dans ses propres applications.
Des projets externes ont créé des liaisons API pour OCaml, .NET, .NET Core, PHP et Ruby. Il existe également un outil interactif d'étiquetage des données et de formation du MITIE.
L'API principale du MITIE est une API C qui est documentée dans le fichier d'en-tête mitie.h. Au-delà de cela, il existe de nombreux exemples de programmes montrant comment utiliser MITIE à partir de C, C++, Java, R ou Python 2.7.
Avant de pouvoir exécuter les exemples fournis, vous devrez télécharger les fichiers de modèle entraînés, ce que vous pouvez faire en exécutant :
make MITIE-models
ou en téléchargeant simplement le fichier MITIE-models-v0.2.tar.bz2 et en l'extrayant dans votre dossier MITIE. Notez que les modèles espagnol et allemand sont fournis en téléchargements séparés. Donc, si vous souhaitez utiliser le modèle espagnol NER, téléchargez MITIE-models-v0.2-Spanish.zip et extrayez-le dans votre dossier MITIE. De même pour le modèle allemand : MITIE-models-v0.2-German.tar.bz2
MITIE est livré avec un outil de streaming NER de base. Vous pouvez donc demander à MITIE de traiter chaque ligne d'un fichier texte indépendamment et d'afficher du texte balisé avec la commande :
cat sample_text.txt | ./ner_stream MITIE-models/english/ner_model.dat
L'exécutable ner_stream peut être compilé en exécutant make
dans le dossier MITIE de niveau supérieur ou en accédant au dossier tools/ner_stream et en exécutant make
ou en utilisant CMake pour le construire, ce qui peut être fait avec les commandes suivantes :
cd tools/ner_stream
mkdir build
cd build
cmake ..
cmake --build . --config Release
Sur un système de type UNIX, cela peut être accompli en exécutant make
dans le dossier MITIE de niveau supérieur ou en exécutant :
cd mitielib
make
Cela produit des fichiers de bibliothèque partagés et statiques dans le dossier mitielib. Ou vous pouvez utiliser CMake pour compiler une bibliothèque partagée en tapant :
cd mitielib
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
L'une ou l'autre de ces méthodes créera une bibliothèque partagée MITIE dans le dossier mitielib.
Si vous compilez MITIE à l'aide de cmake, il trouvera et utilisera automatiquement toutes les bibliothèques BLAS optimisées sur votre machine. Cependant, si vous compilez en utilisant make normal, vous devez localiser manuellement vos bibliothèques BLAS ou DLIB utilisera par défaut son implémentation BLAS intégrée, mais plus lente. Par conséquent, pour utiliser OpenBLAS lors d'une compilation sans cmake, localisez libopenblas.a
et libgfortran.a
, puis exécutez make
comme suit :
cd mitielib
make BLAS_PATH=/path/to/openblas.a LIBGFORTRAN_PATH=/path/to/libfortran.a
Notez que si vos bibliothèques BLAS ne se trouvent pas dans des emplacements standard, cmake ne parviendra pas à les trouver. Cependant, vous pouvez lui indiquer dans quel dossier rechercher en remplaçant cmake ..
par une instruction telle que :
cmake -DCMAKE_LIBRARY_PATH=/home/me/place/i/put/blas/lib ..
Une fois que vous avez construit la bibliothèque partagée MITIE, vous pouvez accéder au dossier examples/python et simplement exécuter l'un des scripts Python. Chaque script est un didacticiel expliquant certains aspects du MITIE : reconnaissance d'entités nommées et extraction de relations, formation d'un outil NER personnalisé ou formation d'un extracteur de relations personnalisé.
Vous pouvez également installer mitie
directement depuis github avec cette commande : pip install git+https://github.com/mit-nlp/MITIE.git
.
MITIE peut être installé en tant que package R. Voir le README pour plus de détails.
Il existe des exemples de programmes C dans le dossier examples/C. Pour les compiler, allez simplement dans ces dossiers et exécutez make
. Ou utilisez CMake comme ceci :
cd examples/C/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Il existe des exemples de programmes C++ dans le dossier examples/cpp. Pour compiler l’un d’entre eux, allez simplement dans ces dossiers et exécutez make
. Ou utilisez CMake comme ceci :
cd examples/cpp/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Il existe un exemple de programme Java dans le dossier examples/java. Avant de pouvoir l'exécuter, vous devez compiler l'interface Java du MITIE, ce que vous pouvez faire ainsi :
cd mitielib/java
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Cela placera une bibliothèque partagée javamitie et un fichier jar dans le dossier mitielib. Une fois que vous avez ces deux fichiers, vous pouvez exécuter l'exemple de programme dans examples/java en exécutant run_ner.bat si vous êtes sous Windows ou run_ner.sh si vous êtes sur un système POSIX comme Linux ou OS X.
Notez également que vous devez avoir Swig 1.3.40 ou plus récent, CMake 2.8.4 ou plus récent et le Java JDK installé pour compiler l'interface MITIE. Enfin, notez que si vous utilisez Java 64 bits sous Windows alors vous devrez utiliser une commande telle que :
cmake -G "Visual Studio 10 Win64" ..
au lieu de cmake ..
pour que Visual Studio sache créer une bibliothèque 64 bits.
Vous pouvez exécuter un simple test de régression pour valider votre build. Pour ce faire, exécutez la commande suivante à partir du dossier MITIE de niveau supérieur :
make test
make test
construit à la fois les exemples de programmes et télécharge les exemples de modèles requis. Si vous avez besoin d'un compilateur C++ non standard, modifiez CC
dans examples/C/makefile
et dans tools/ner_stream/makefile
.
Nous avons créé des binaires Python 2.7 fournis avec des exemples de modèles pour Linux et Windows 64 bits (versions 32 et 64 bits de Python). Vous pouvez télécharger le package précompilé ici : Précompilé MITIE 0.2
Nous avons construit des binaires Java pour la JVM 64 bits qui fonctionnent sous Linux et Windows. Vous pouvez télécharger le package précompilé ici : Java MITIE 0.3 précompilé. Dans le fichier se trouve un dossier examples/java. Vous pouvez exécuter l'exemple en exécutant le fichier .bat ou .sh fourni.
Il n'existe aucun article spécifiquement sur le MITIE. Cependant, puisque MITIE n'est fondamentalement qu'un mince emballage autour de dlib, veuillez citer l'article JMLR de dlib si vous utilisez MITIE dans votre recherche :
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 est sous licence Boost Software License - Version 1.0 - 17 août 2003.
L'autorisation est accordée par la présente, gratuitement, à toute personne ou organisation obtenant une copie du logiciel et de la documentation l'accompagnant couverte par cette licence (le « Logiciel ») pour utiliser, reproduire, afficher, distribuer, exécuter et transmettre le Logiciel, et préparer des œuvres dérivées du Logiciel et permettre aux tiers à qui le Logiciel est fourni de le faire, le tout sous réserve de ce qui suit :
Les avis de droits d'auteur contenus dans le Logiciel et l'intégralité de cette déclaration, y compris l'octroi de licence ci-dessus, cette restriction et la clause de non-responsabilité suivante, doivent être inclus dans toutes les copies du Logiciel, en totalité ou en partie, et dans toutes les œuvres dérivées du Logiciel, à moins que cela ne soit le cas. les copies ou œuvres dérivées se présentent uniquement sous la forme de code objet exécutable par machine généré par un processeur de langage source.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER, DE TITRE ET DE NON-VIOLATION. EN AUCUN CAS LES TITULAIRES DES DROITS D'AUTEUR OU TOUTE PERSONNE DISTRIBUANT LE LOGICIEL NE SERONT RESPONSABLES DE TOUT DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT PAR CONTRAT, DÉLIT OU AUTRE, DÉCOULANT DE, HORS OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES AFFAIRES DANS LE LOGICIEL.
[1] Davis E. King. Dlib-ml : une boîte à outils d'apprentissage automatique. Journal de recherche sur l'apprentissage automatique 10, pages 1755-1758, 2009.
[2] Paramveer Dhillon, Dean Foster et Lyle Ungar, Eigenwords : Spectral Word Embeddings, Journal of Machine Learning Research (JMLR), 16, 2015.
[3] T. Joachims, T. Finley, Chun-Nam Yu, Formation au plan de coupe des SVM structurels, Machine Learning, 77(1):27-59, 2009.