O neuroner é um programa que executa o reconhecimento de entidade nomeada (NER). Site: neuroner.com.
Esta página fornece instruções passo a passo para instalar e usar o neuroner.
O neuroner depende do Python 3, Tensorflow 1.0+ e, opcionalmente, no pirralho:
Para suporte à GPU, os requisitos da GPU para o TensorFlow devem ser atendidos. Se o seu sistema não atender a esses requisitos, você deve usar a versão da CPU. Para instalar o neuroner:
# For CPU support (no GPU support):
pip3 install pyneuroner[cpu]
# For GPU support:
pip3 install pyneuroner[gpu]
Você também precisará baixar alguns pacotes de suporte.
# Download the SpaCy English module
python -m spacy download en
./data/word_vectors # Get word embeddings
wget -P data/word_vectors http://neuroner.com/data/word_vectors/glove.6B.100d.zip
unzip data/word_vectors/glove.6B.100d.zip -d data/word_vectors/
neuromodel.fetch_data() de um intérprete Python ou com o argumento --fetch_data na linha de comando. # Load a dataset from the command line
neuroner --fetch_data=conll2003
neuroner --fetch_data=example_unannotated_texts
neuroner --fetch_data=i2b2_2014_deid
# Load a dataset from a Python interpreter
from neuroner import neuromodel
neuromodel.fetch_data('conll2003')
neuromodel.fetch_data('example_unannotated_texts')
neuromodel.fetch_data('i2b2_2014_deid')
neuromodel.fetch_model() de um intérprete Python ou com o argumento --fetch_trained_models na linha de comando. # Load a pre-trained model from the command line
neuroner --fetch_trained_model=conll_2003_en
neuroner --fetch_trained_model=i2b2_2014_glove_spacy_bioes
neuroner --fetch_trained_model=i2b2_2014_glove_stanford_bioes
neuroner --fetch_trained_model=mimic_glove_spacy_bioes
neuroner --fetch_trained_model=mimic_glove_stanford_bioes
# Load a pre-trained model from a Python interpreter
from neuroner import neuromodel
neuromodel.fetch_model('conll_2003_en')
neuromodel.fetch_model('i2b2_2014_glove_spacy_bioes')
neuromodel.fetch_model('i2b2_2014_glove_stanford_bioes')
neuromodel.fetch_model('mimic_glove_spacy_bioes')
neuromodel.fetch_model('mimic_glove_stanford_bioes')
O BRAT é uma ferramenta que pode ser usada para criar, alterar ou visualizar as anotações no estilo pirralho. Para instruções de instalação e uso, consulte o site da BRAT.
O PERL é necessário porque o script oficial de avaliação da CONLL-2003 está escrito neste idioma: http://strawberryperl.com. Para sistemas UNIX e Mac OSX, o Perl já deve ser instalado. Para sistemas Windows, pode ser necessário instalá -lo.
O neuroner pode ser executado a partir da linha de comando ou de um intérprete Python.
Para usar o neuroner da linha de comando, crie uma instância do neuromodelo com os argumentos desejados e, em seguida, chame os métodos relevantes. Parâmetros adicionais podem ser definidos a partir de um arquivo parameters.ini no diretório de trabalho. Por exemplo:
from neuroner import neuromodel
nn = neuromodel.NeuroNER(train_model=False, use_pretrained_model=True)
Mais detalhes a seguir.
Por padrão, o neuroner está configurado para treinar e testar no conjunto de dados CONLL-2003. A execução do neuroner com as configurações padrão começa a treinar no conjunto de dados CONLL-2003 (a pontuação F1 no conjunto de testes deve estar em torno de 0,90, ou seja, a par dos sistemas de última geração). Para iniciar o treinamento:
# To use the CPU if you have installed tensorflow, or use the GPU if you have installed tensorflow-gpu:
neuroner
# To use the CPU only if you have installed tensorflow-gpu:
CUDA_VISIBLE_DEVICES="" neuroner
# To use the GPU 1 only if you have installed tensorflow-gpu:
CUDA_VISIBLE_DEVICES=1 neuroner
Se você deseja alterar qualquer um dos parâmetros do neuroner, pode modificar o arquivo de configuração do parameters.ini no seu diretório de trabalho ou especificá -lo como um argumento.
Por exemplo, para reduzir o número de épocas de treinamento e não usar nenhuma incorporação de token pré-treinada:
neuroner --maximum_number_of_epochs=2 --token_pretrained_embedding_filepath=""
Para executar o NER em alguns textos simples usando um modelo pré-treinado:
neuroner --train_model=False --use_pretrained_model=True --dataset_text_folder=./data/example_unannotated_texts --pretrained_model_folder=./trained_models/conll_2003_en
Se um parâmetro for especificado no arquivo de configuração parameters.ini e como argumento, o argumento terá precedência (ou seja, o parâmetro em parameters.ini será ignorado). Você pode especificar um arquivo de configuração diferente com o argumento da linha de comando --parameters_filepath . Os argumentos da linha de comando não têm valor padrão, exceto --parameters_filepath , que aponta para parameters.ini .
O neuroner possui 3 modos de operação:
Um conjunto de dados pode ser fornecido no formato CONLL-2003 ou BRAT. Os arquivos e pastas do conjunto de dados devem ser organizados e nomeados da seguinte forma:
train.txt (formato CONLL-2003) ou pasta train (formato BRAT). Deve conter rótulos.valid.txt (formato CONLL-2003) ou pasta valid (formato BRAT). Deve conter rótulos.test.txt (formato CONLL-2003) ou pasta test (formato BRAT). Deve conter rótulos.deploy.txt (formato CONLL-2003) ou Pasta deploy (formato BRAT). Não deve conter nenhum rótulo (se o fizer, os rótulos são ignorados).Fornecemos vários exemplos de conjuntos de dados:
data/conll2003/en : conjunto de dados anotado com o formato CONLL-2003, contendo 3 arquivos ( train.txt , valid.txt e test.txt ).data/example_unannotated_texts : conjunto de dados não anotado com o formato Brat, contendo 1 pasta ( deploy/ ). Observe que o formato do pirralho sem anotação é o mesmo que textos simples. Para usar um modelo pré -terenciado, o parâmetro pretrained_model_folder no arquivo de configuração parameters.ini deve ser definido na pasta que contém o modelo pré -treinado. Os seguintes parâmetros no arquivo de configuração parameters.ini também devem ser definidos com os mesmos valores que no arquivo de configuração localizado no pretrained_model_folder especificado_model_folder:
use_character_lstm
character_embedding_dimension
character_lstm_hidden_state_dimension
token_pretrained_embedding_filepath
token_embedding_dimension
token_lstm_hidden_state_dimension
use_crf
tagging_format
tokenizer
Você é altamente incentivado a compartilhar um modelo treinado em seus próprios conjuntos de dados, para que outros usuários possam usar o modelo pré -treinado em outros conjuntos de dados. Nós fornecemos o script neuroner/prepare_pretrained_model.py para facilitar a preparação de um modelo pré -traido para compartilhar. Para usar o script, é preciso especificar apenas os parâmetros de output_folder_name , epoch_number e model_name no script.
Por padrão, as únicas informações sobre o conjunto de dados contidas no modelo pré -treinado é a lista de tokens que aparece no conjunto de dados usado para treinamento e as incorporações correspondentes aprendidas no conjunto de dados.
Se você deseja compartilhar um modelo pré -traido sem fornecer nenhuma informação sobre o conjunto de dados (incluindo a lista de tokens que aparecem no conjunto de dados), você pode fazê -lo configurando a configuração
delete_token_mappings = True
Ao executar o script. Nesse caso, é altamente recomendável usar algumas incorporações externas de token pré-treinado e congelá-las enquanto treina o modelo para obter alto desempenho. Isso pode ser feito especificando o token_pretrained_embedding_filepath e a configuração
freeze_token_embeddings = True
No arquivo de configuração parameters.ini durante o treinamento.
Para compartilhar um modelo pré -treinado, envie um novo problema no repositório do GitHub.
Você pode lançar o Tensorboard durante ou após a fase de treinamento. Para fazer isso, execute no terminal da pasta de neuroner:
tensorboard --logdir=output
Isso inicia um servidor da Web acessível em http://127.0.0.1:6006 do seu navegador da web.
Se você usar o neuroner em suas publicações, cite este artigo:
@article{2017neuroner,
title={{NeuroNER}: an easy-to-use program for named-entity recognition based on neural networks},
author={Dernoncourt, Franck and Lee, Ji Young and Szolovits, Peter},
journal={Conference on Empirical Methods on Natural Language Processing (EMNLP)},
year={2017}
}
A arquitetura de rede neural usada no neuroner é descrita neste artigo:
@article{2016deidentification,
title={De-identification of Patient Notes with Recurrent Neural Networks},
author={Dernoncourt, Franck and Lee, Ji Young and Uzuner, Ozlem and Szolovits, Peter},
journal={Journal of the American Medical Informatics Association (JAMIA)},
year={2016}
}