Dieses Projekt stellt kostenlose, hochmoderne Tools zur Informationsextraktion bereit (auch für kommerzielle Nutzung). Die aktuelle Version umfasst Tools zum Durchführen der Extraktion benannter Entitäten und der Erkennung binärer Beziehungen sowie Tools zum Trainieren benutzerdefinierter Extraktoren und Beziehungsdetektoren.
MITIE basiert auf dlib, einer leistungsstarken Bibliothek für maschinelles Lernen[1]. MITIE nutzt mehrere hochmoderne Techniken, darunter die Verwendung verteilter Worteinbettungen[2] und Structural Support Vector Machines[3]. ]. MITIE bietet mehrere vorab trainierte Modelle an, die unterschiedliche Unterstützungsstufen für Englisch, Spanisch und Deutsch bieten und mithilfe verschiedener Sprachressourcen (z. B. CoNLL 2003, ACE, Wikipedia, Freebase und Gigaword) trainiert werden. Die Kernsoftware von MITIE ist in C++ geschrieben, aber Bindungen für mehrere andere Softwaresprachen, darunter Python, R, Java, C und MATLAB, ermöglichen es einem Benutzer, MITIE schnell in seine eigenen Anwendungen zu integrieren.
Externe Projekte haben API-Bindungen für OCaml, .NET, .NET Core, PHP und Ruby erstellt. Es gibt auch ein interaktives Tool zum Kennzeichnen von Daten und zum Trainieren von MITIE.
Die primäre API von MITIE ist eine C-API, die in der Header-Datei mitie.h dokumentiert ist. Darüber hinaus gibt es viele Beispielprogramme, die die Verwendung von MITIE aus C, C++, Java, R oder Python 2.7 zeigen.
Bevor Sie die bereitgestellten Beispiele ausführen können, müssen Sie die trainierten Modelldateien herunterladen, was Sie tun können, indem Sie Folgendes ausführen:
make MITIE-models
Oder indem Sie einfach die Datei MITIE-models-v0.2.tar.bz2 herunterladen und in Ihren MITIE-Ordner extrahieren. Beachten Sie, dass die spanischen und deutschen Modelle in separaten Downloads bereitgestellt werden. Wenn Sie also das spanische NER-Modell verwenden möchten, laden Sie MITIE-models-v0.2-Spanish.zip herunter und extrahieren Sie es in Ihren MITIE-Ordner. Ähnliches gilt für das deutsche Modell: MITIE-models-v0.2-German.tar.bz2
MITIE wird mit einem einfachen Streaming-NER-Tool geliefert. So können Sie MITIE mit dem folgenden Befehl anweisen, jede Zeile einer Textdatei unabhängig zu verarbeiten und markierten Text auszugeben:
cat sample_text.txt | ./ner_stream MITIE-models/english/ner_model.dat
Die ausführbare Datei „ner_stream“ kann kompiliert werden, indem Sie make
im MITIE-Ordner der obersten Ebene ausführen oder indem Sie zum Ordner „tools/ner_stream“ navigieren und make
“ ausführen oder CMake verwenden, um sie zu erstellen. Dies kann mit den folgenden Befehlen erfolgen:
cd tools/ner_stream
mkdir build
cd build
cmake ..
cmake --build . --config Release
Auf einem UNIX-ähnlichen System kann dies durch Ausführen make
im MITIE-Ordner der obersten Ebene oder durch Ausführen von Folgendes erreicht werden:
cd mitielib
make
Dadurch werden gemeinsam genutzte und statische Bibliotheksdateien im Mitielib-Ordner erstellt. Oder Sie können CMake verwenden, um eine gemeinsam genutzte Bibliothek zu kompilieren, indem Sie Folgendes eingeben:
cd mitielib
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Mit beiden Methoden wird eine gemeinsam genutzte MITIE-Bibliothek im Mitielib-Ordner erstellt.
Wenn Sie MITIE mit cmake kompilieren, werden alle optimierten BLAS-Bibliotheken auf Ihrem Computer automatisch gefunden und verwendet. Wenn Sie jedoch mit regulärem Make kompilieren, müssen Sie Ihre BLAS-Bibliotheken manuell suchen, sonst verwendet DLIB standardmäßig die integrierte, aber langsamere BLAS-Implementierung. Um OpenBLAS beim Kompilieren ohne cmake zu verwenden, suchen Sie daher libopenblas.a
und libgfortran.a
und führen Sie dann make
wie folgt aus:
cd mitielib
make BLAS_PATH=/path/to/openblas.a LIBGFORTRAN_PATH=/path/to/libfortran.a
Beachten Sie, dass cmake Ihre BLAS-Bibliotheken nicht finden kann, wenn sie sich nicht an Standardspeicherorten befinden. Sie können ihm jedoch mitteilen, in welchem Ordner gesucht werden soll, indem Sie cmake ..
durch eine Anweisung wie die folgende ersetzen:
cmake -DCMAKE_LIBRARY_PATH=/home/me/place/i/put/blas/lib ..
Sobald Sie die gemeinsam genutzte MITIE-Bibliothek erstellt haben, können Sie zum Ordner „examples/python“ gehen und einfach eines der Python-Skripte ausführen. Bei jedem Skript handelt es sich um ein Tutorial, das einige Aspekte von MITIE erklärt: Erkennung benannter Entitäten und Beziehungsextraktion, Training eines benutzerdefinierten NER-Tools oder Training eines benutzerdefinierten Beziehungsextraktors.
Sie können mitie
auch direkt von Github mit diesem Befehl installieren: pip install git+https://github.com/mit-nlp/MITIE.git
.
MITIE kann als R-Paket installiert werden. Weitere Informationen finden Sie in der README-Datei.
Im Ordner „examples/C“ befinden sich C-Beispielprogramme. Um sie zu kompilieren, gehen Sie einfach in diese Ordner und führen Sie make
aus. Oder verwenden Sie CMake wie folgt:
cd examples/C/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Im Ordner „examples/cpp“ finden Sie C++-Beispielprogramme. Um sie zu kompilieren, gehen Sie einfach in diese Ordner und führen Sie make
aus. Oder verwenden Sie CMake wie folgt:
cd examples/cpp/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Im Ordner „examples/java“ finden Sie ein Java-Beispielprogramm. Bevor Sie es ausführen können, müssen Sie die Java-Schnittstelle von MITIE kompilieren, was Sie wie folgt tun können:
cd mitielib/java
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Dadurch werden eine gemeinsam genutzte Javamitie-Bibliothek und eine JAR-Datei im Mitielib-Ordner abgelegt. Sobald Sie diese beiden Dateien haben, können Sie das Beispielprogramm in examples/java ausführen, indem Sie run_ner.bat ausführen, wenn Sie Windows verwenden, oder run_ner.sh, wenn Sie ein POSIX-System wie Linux oder OS X verwenden.
Beachten Sie außerdem, dass Sie Swig 1.3.40 oder neuer, CMake 2.8.4 oder neuer und das Java JDK installiert haben müssen, um die MITIE-Schnittstelle zu kompilieren. Beachten Sie abschließend, dass Sie bei Verwendung von 64-Bit-Java unter Windows einen Befehl wie den folgenden verwenden müssen:
cmake -G "Visual Studio 10 Win64" ..
anstelle von cmake ..
damit Visual Studio weiß, dass es eine 64-Bit-Bibliothek erstellen muss.
Sie können einen einfachen Regressionstest durchführen, um Ihren Build zu validieren. Führen Sie dazu den folgenden Befehl im MITIE-Ordner der obersten Ebene aus:
make test
make test
erstellt sowohl die Beispielprogramme als auch die erforderlichen Beispielmodelle. Wenn Sie einen nicht standardmäßigen C++-Compiler benötigen, ändern Sie CC
in examples/C/makefile
und in tools/ner_stream/makefile
.
Wir haben Python 2.7-Binärdateien mit Beispielmodellen für 64-Bit-Linux und Windows (sowohl 32- als auch 64-Bit-Version von Python) erstellt. Sie können das vorkompilierte Paket hier herunterladen: Vorkompiliertes MITIE 0.2
Wir haben Java-Binärdateien für die 64-Bit-JVM erstellt, die unter Linux und Windows funktionieren. Sie können das vorkompilierte Paket hier herunterladen: Vorkompiliertes Java MITIE 0.3. In der Datei befindet sich ein Ordner „examples/java“. Sie können das Beispiel ausführen, indem Sie die bereitgestellte .bat- oder .sh-Datei ausführen.
Es gibt keinen Artikel speziell über MITIE. Da MITIE jedoch im Grunde nur eine dünne Hülle um dlib ist, zitieren Sie bitte den JMLR-Artikel von dlib, wenn Sie MITIE in Ihrer Forschung verwenden:
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 ist unter der Boost Software License – Version 1.0 – 17. August 2003 lizenziert.
Hiermit wird jeder Person oder Organisation, die eine Kopie der von dieser Lizenz abgedeckten Software und der zugehörigen Dokumentation (die „Software“) erhält, kostenlos die Erlaubnis erteilt, die Software zu nutzen, zu reproduzieren, anzuzeigen, zu verteilen, auszuführen und zu übertragen abgeleitete Werke der Software zu erstellen und Dritten, denen die Software zur Verfügung gestellt wird, dies zu gestatten, alles vorbehaltlich der folgenden Bedingungen:
Die Urheberrechtshinweise in der Software und in dieser gesamten Erklärung, einschließlich der oben genannten Lizenzgewährung, dieser Einschränkung und dem folgenden Haftungsausschluss, müssen in allen Kopien der Software, ganz oder teilweise, und in allen abgeleiteten Werken der Software enthalten sein, sofern dies nicht der Fall ist Kopien oder abgeleitete Werke liegen ausschließlich in Form von maschinenausführbarem Objektcode vor, der von einem Quellsprachenprozessor generiert wird.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, TITEL UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE COPYRIGHT-INHABER ODER JEMAND, DER DIE SOFTWARE VERTRIEBT, HAFTBAR FÜR SCHÄDEN ODER ANDERE HAFTUNG, SEI ES AUS VERTRAG, HANDLUNG ODER ANDERER WEISE, DIE SICH AUS, AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN MIT DER SOFTWARE ERGEBEN.
[1] Davis E. King. Dlib-ml: Ein Toolkit für maschinelles Lernen. Journal of Machine Learning Research 10, S. 1755-1758, 2009.
[2] Paramveer Dhillon, Dean Foster und Lyle Ungar, Eigenwords: Spectral Word Embeddings, Journal of Machine Learning Research (JMLR), 16, 2015.
[3] T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of Structural SVMs, Machine Learning, 77(1):27-59, 2009.