Este projeto fornece ferramentas gratuitas (mesmo para uso comercial) de extração de informações de última geração. A versão atual inclui ferramentas para realizar extração de entidades nomeadas e detecção de relações binárias, bem como ferramentas para treinar extratores personalizados e detectores de relações.
O MITIE é construído sobre dlib, uma biblioteca de aprendizado de máquina de alto desempenho[1], o MITIE faz uso de várias técnicas de última geração, incluindo o uso de embeddings de palavras de distribuição[2] e máquinas de vetores de suporte estrutural[3 ]. O MITIE oferece vários modelos pré-treinados, fornecendo níveis variados de suporte para alunos treinados em inglês, espanhol e alemão, usando uma variedade de recursos linguísticos (por exemplo, CoNLL 2003, ACE, Wikipedia, Freebase e Gigaword). O software principal do MITIE é escrito em C++, mas ligações para várias outras linguagens de software, incluindo Python, R, Java, C e MATLAB, permitem que um usuário integre rapidamente o MITIE em seus próprios aplicativos.
Projetos externos criaram ligações de API para OCaml, .NET, .NET Core, PHP e Ruby. Existe também uma ferramenta interativa para rotulagem de dados e treinamento do MITIE.
A API principal do MITIE é uma API C documentada no arquivo de cabeçalho mitie.h. Além disso, existem muitos programas de exemplo que mostram como usar o MITIE em C, C++, Java, R ou Python 2.7.
Antes de executar os exemplos fornecidos, você precisará baixar os arquivos do modelo treinado, o que pode ser feito executando:
make MITIE-models
ou simplesmente baixando o arquivo MITIE-models-v0.2.tar.bz2 e extraindo-o em sua pasta MITIE. Observe que os modelos espanhol e alemão são fornecidos em downloads separados. Portanto, se você quiser usar o modelo NER espanhol, baixe MITIE-models-v0.2-Spanish.zip e extraia-o para sua pasta MITIE. Da mesma forma para o modelo alemão: MITIE-models-v0.2-German.tar.bz2
O MITIE vem com uma ferramenta NER básica de streaming. Portanto, você pode dizer ao MITIE para processar cada linha de um arquivo de texto de forma independente e gerar texto marcado com o comando:
cat sample_text.txt | ./ner_stream MITIE-models/english/ner_model.dat
O executável ner_stream pode ser compilado executando make
na pasta MITIE de nível superior ou navegando até a pasta tools/ner_stream e executando make
ou usando CMake para construí-lo, o que pode ser feito com os seguintes comandos:
cd tools/ner_stream
mkdir build
cd build
cmake ..
cmake --build . --config Release
Em um sistema do tipo UNIX, isso pode ser feito executando make
na pasta MITIE de nível superior ou executando:
cd mitielib
make
Isso produz arquivos de biblioteca estáticos e compartilhados na pasta mitielib. Ou você pode usar o CMake para compilar uma biblioteca compartilhada digitando:
cd mitielib
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Qualquer um desses métodos criará uma biblioteca compartilhada do MITIE na pasta mitielib.
Se você compilar o MITIE usando cmake, ele encontrará e usará automaticamente qualquer biblioteca BLAS otimizada em sua máquina. No entanto, se você compilar usando make regular, terá que localizar manualmente suas bibliotecas BLAS ou o DLIB será padronizado para sua implementação BLAS integrada, mas mais lenta. Portanto, para usar OpenBLAS ao compilar sem cmake, localize libopenblas.a
e libgfortran.a
e execute make
da seguinte maneira:
cd mitielib
make BLAS_PATH=/path/to/openblas.a LIBGFORTRAN_PATH=/path/to/libfortran.a
Observe que se suas bibliotecas BLAS não estiverem em locais padrão, o cmake não conseguirá encontrá-las. No entanto, você pode dizer em qual pasta procurar substituindo cmake ..
por uma declaração como:
cmake -DCMAKE_LIBRARY_PATH=/home/me/place/i/put/blas/lib ..
Depois de construir a biblioteca compartilhada do MITIE, você pode ir para a pasta exemplos/python e simplesmente executar qualquer um dos scripts Python. Cada script é um tutorial que explica algum aspecto do MITIE: reconhecimento de entidade nomeada e extração de relação, treinamento de uma ferramenta NER customizada ou treinamento de um extrator de relação customizado.
Você também pode instalar mitie
diretamente do github com este comando: pip install git+https://github.com/mit-nlp/MITIE.git
.
O MITIE pode ser instalado como um pacote R. Consulte o README para obter mais detalhes.
Existem exemplos de programas C na pasta samples/C. Para compilá-los, basta entrar nessas pastas e executar make
. Ou use o CMake assim:
cd examples/C/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Existem exemplos de programas C++ na pasta samples/cpp. Para compilar qualquer um deles basta entrar nessas pastas e executar make
. Ou use o CMake assim:
cd examples/cpp/ner
mkdir build
cd build
cmake ..
cmake --build . --config Release
Há um exemplo de programa Java na pasta samples/java. Antes de executá-lo, você deve compilar a interface java do MITIE, que pode ser feita da seguinte forma:
cd mitielib/java
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install
Isso colocará uma biblioteca compartilhada javamitie e um arquivo jar na pasta mitielib. Depois de ter esses dois arquivos, você pode executar o programa de exemplo em samples/java executando run_ner.bat se estiver no Windows ou run_ner.sh se estiver em um sistema POSIX como Linux ou OS X.
Observe também que você deve ter o Swig 1.3.40 ou mais recente, o CMake 2.8.4 ou mais recente e o Java JDK instalado para compilar a interface do MITIE. Por fim, observe que se estiver usando Java de 64 bits no Windows, você precisará usar um comando como:
cmake -G "Visual Studio 10 Win64" ..
em vez de cmake ..
para que o Visual Studio saiba como criar uma biblioteca de 64 bits.
Você pode executar um teste de regressão simples para validar sua construção. Faça isso executando o seguinte comando na pasta MITIE de nível superior:
make test
make test
constrói os programas de exemplo e baixa os modelos de exemplo necessários. Se você precisar de um compilador C++ não padrão, altere CC
em examples/C/makefile
e em tools/ner_stream/makefile
.
Construímos binários Python 2.7 empacotados com modelos de amostra para Linux e Windows de 64 bits (versão de 32 e 64 bits do Python). Você pode baixar o pacote pré-compilado aqui: Pré-compilado MITIE 0.2
Construímos binários Java para JVM de 64 bits que funcionam em Linux e Windows. Você pode baixar o pacote pré-compilado aqui: Pré-compilado Java MITIE 0.3. No arquivo há uma pasta exemplos/java. Você pode executar o exemplo executando o arquivo .bat ou .sh fornecido.
Não há nenhum artigo específico sobre o MITIE. No entanto, como o MITIE é basicamente apenas um invólucro fino em torno do dlib, cite o artigo JMLR do dlib se você usar o MITIE em sua pesquisa:
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},
}
O MITIE está licenciado sob a Licença de Software Boost - Versão 1.0 - 17 de agosto de 2003.
É concedida permissão, gratuitamente, a qualquer pessoa ou organização que obtenha uma cópia do software e da documentação que o acompanha coberta por esta licença (o "Software") para usar, reproduzir, exibir, distribuir, executar e transmitir o Software, e preparar trabalhos derivados do Software e permitir que terceiros a quem o Software seja fornecido o façam, tudo sujeito ao seguinte:
Os avisos de direitos autorais do Software e toda esta declaração, incluindo a concessão de licença acima, esta restrição e a seguinte isenção de responsabilidade, devem ser incluídos em todas as cópias do Software, no todo ou em parte, e em todos os trabalhos derivados do Software, a menos que tal cópias ou trabalhos derivados estão exclusivamente na forma de código-objeto executável por máquina, gerado por um processador de linguagem de origem.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM, TÍTULO E NÃO VIOLAÇÃO. EM NENHUM CASO OS DETENTORES DOS DIREITOS AUTORAIS OU QUALQUER PESSOA QUE DISTRIBUA O SOFTWARE SERÃO RESPONSÁVEIS POR QUAISQUER DANOS OU OUTRAS RESPONSABILIDADES, SEJA POR CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTES DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.
[1]Davis E. King. Dlib-ml: um kit de ferramentas de aprendizado de máquina. Journal of Machine Learning Research 10, pp.
[2] Paramveer Dhillon, Dean Foster e Lyle Ungar, Eigenwords: Spectral Word Embeddings, Journal of Machine Learning Research (JMLR), 16, 2015.
[3] T. Joachims, T. Finley, Chun-Nam Yu, Treinamento de Plano de Corte de SVMs Estruturais, Aprendizado de Máquina, 77(1):27-59, 2009.