该项目提供免费(甚至用于商业用途)的最先进的信息提取工具。当前版本包括用于执行命名实体提取和二元关系检测的工具以及用于训练自定义提取器和关系检测器的工具。
MITIE 建立在高性能机器学习库 dlib 之上[1],MITIE 利用了多种最先进的技术,包括使用分布式词嵌入[2] 和结构支持向量机[3] ]。 MITIE 提供了多种预训练模型,为使用各种语言资源(例如 CoNLL 2003、ACE、Wikipedia、Freebase 和 Gigaword)训练的英语、西班牙语和德语提供不同级别的支持。核心 MITIE 软件是用 C++ 编写的,但与其他几种软件语言(包括 Python、R、Java、C 和 MATLAB)的绑定允许用户快速将 MITIE 集成到他/她自己的应用程序中。
外部项目已为 OCaml、.NET、.NET Core、PHP 和 Ruby 创建了 API 绑定。还有一个用于标记数据和训练 MITIE 的交互式工具。
MITIE 的主要 API 是 C API,记录在 mitie.h 头文件中。除此之外,还有许多示例程序展示了如何在 C、C++、Java、R 或 Python 2.7 中使用 MITIE。
在运行提供的示例之前,您需要下载经过训练的模型文件,您可以通过运行以下命令来下载:
make MITIE-models
或者只需下载 MITIE-models-v0.2.tar.bz2 文件并将其解压到 MITIE 文件夹中。请注意,西班牙语和德语模型是在单独的下载中提供的。因此,如果您想使用西班牙语 NER 模型,请下载 MITIE-models-v0.2-Spanish.zip 并将其解压到您的 MITIE 文件夹中。德国模型类似:MITIE-models-v0.2-German.tar.bz2
MITIE 附带了一个基本的流式 NER 工具。因此,您可以告诉 MITIE 独立处理文本文件的每一行,并使用以下命令输出标记的文本:
cat sample_text.txt | ./ner_stream MITIE-models/english/ner_model.dat
ner_stream 可执行文件可以通过在顶级 MITIE 文件夹中运行make
来编译,或者导航到 tools/ner_stream 文件夹并运行make
或使用 CMake 来构建它,这可以通过以下命令来完成:
cd tools/ner_stream
mkdir build
cd build
cmake ..
cmake --build . --config Release
在类似 UNIX 的系统上,这可以通过在顶级 MITIE 文件夹中运行make
或运行以下命令来完成:
cd mitielib
make
这会在 mitielib 文件夹中生成共享和静态库文件。或者您可以使用 CMake 来编译共享库,方法是键入:
cd mitielib
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
这两种方法都会在 mitielib 文件夹中创建 MITIE 共享库。
如果您使用 cmake 编译 MITIE,那么它将自动查找并使用您计算机上的任何优化的 BLAS 库。但是,如果您使用常规 make 进行编译,则必须手动找到 BLAS 库,否则 DLIB 将默认为其内置但速度较慢的 BLAS 实现。因此,要在不使用 cmake 的情况下编译时使用 OpenBLAS,请找到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 共享库后,您可以转到 Examples/python 文件夹并简单地运行任何 Python 脚本。每个脚本都是一个教程,解释 MITIE 的某些方面:命名实体识别和关系提取、训练自定义 NER 工具或训练自定义关系提取器。
您还可以使用以下命令直接从 github 安装mitie
: pip install git+https://github.com/mit-nlp/MITIE.git
。
MITIE 可以作为 R 包安装。有关更多详细信息,请参阅自述文件。
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 程序。在运行它之前,您必须编译 MITIE 的 java 接口,您可以这样做:
cd mitielib/java
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
这会将 javamitie 共享库和 jar 文件放入 mitielib 文件夹中。拥有这两个文件后,您可以通过运行 run_ner.bat(如果您在 Windows 上)或 run_ner.sh(如果您在 Linux 或 OS X 等 POSIX 系统上)来运行 Examples/java 中的示例程序。
另请注意,您必须安装 Swig 1.3.40 或更高版本、CMake 2.8.4 或更高版本以及 Java JDK 才能编译 MITIE 接口。最后,请注意,如果您在 Windows 上使用 64 位 Java,则需要使用如下命令:
cmake -G "Visual Studio 10 Win64" ..
而不是cmake ..
以便 Visual Studio 知道创建 64 位库。
您可以运行简单的回归测试来验证您的构建。通过从顶级 MITIE 文件夹运行以下命令来执行此操作:
make test
make test
构建示例程序并下载所需的示例模型。如果您需要非标准 C++ 编译器,请更改examples/C/makefile
和tools/ner_stream/makefile
中的CC
。
我们已经构建了 Python 2.7 二进制文件,其中包含适用于 64 位 Linux 和 Windows(32 位和 64 位版本的 Python)的示例模型。您可以在这里下载预编译包:Precompiled MITIE 0.2
我们为 64 位 JVM 构建了可在 Linux 和 Windows 上运行的 Java 二进制文件。您可以在这里下载预编译包:Precompiled Java MITIE 0.3。该文件中有一个 Examples/java 文件夹。您可以通过执行提供的 .bat 或 .sh 文件来运行该示例。
没有任何专门关于 MITIE 的论文。然而,由于 MITIE 基本上只是 dlib 的一个薄包装,如果您在研究中使用 MITIE,请引用 dlib 的 JMLR 论文:
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 软件许可证 - 版本 1.0 - 2003 年 8 月 17 日获得许可。
特此免费授予获得本许可证所涵盖的软件和随附文档(“软件”)副本的任何个人或组织使用、复制、展示、分发、执行和传输该软件的许可,并且准备本软件的衍生作品,并允许向其提供本软件的第三方这样做,所有这些均须遵守以下规定:
软件中的版权声明和整个声明,包括上述许可授予、此限制和以下免责声明,必须全部或部分包含在软件的所有副本以及软件的所有衍生作品中,除非副本或衍生作品仅采用源语言处理器生成的机器可执行目标代码的形式。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性、所有权和不侵权的保证。在任何情况下,版权所有者或分发本软件的任何人均不对因本软件或本软件的使用或其他交易而引起的或与之相关的任何损害或其他责任(无论是合同、侵权行为还是其他责任)承担责任。
[1] 戴维斯·E·金。 Dlib-ml:机器学习工具包。机器学习研究杂志 10,第 1755-1758 页,2009 年。
[2] Paramveer Dhillon、Dean Foster 和 Lyle Ungar,特征词:谱词嵌入,机器学习研究杂志 (JMLR),16,2015。
[3] T. Joachims、T. Finley、Chun-Nam Yu,结构 SVM 的切割平面训练,机器学习,77(1):27-59, 2009。