該專案提供免費(甚至用於商業用途)的最先進的資訊提取工具。目前版本包括用於執行命名實體提取和二元關係檢測的工具以及用於訓練自訂提取器和關係檢測器的工具。
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。