NeuroNER:基于神经网络的命名实体识别工具,支持多数据集与预训练模型

Named-entity recognition using neural networks. Easy-to-use and state-of-the-art results.

分支3Tags1
文件最后提交记录最后更新时间
6 年前
7 年前
7 年前
7 年前
7 年前
6 年前
7 年前
7 年前
6 年前
7 年前
6 年前

神经网络命名实体识别工具(NeuroNER)

构建状态

NeuroNER 是一个执行命名实体识别(NER)的程序。官方网站:neuroner.com

本页提供了安装和使用 NeuroNER 的逐步指导。

目录

环境要求

NeuroNER 依赖于 Python 3、TensorFlow 1.0+,并且可选依赖于 BRAT:

  • Python 3:NeuroNER 无法在 Python 2.x 上运行。在 Windows 上,必须是 Python 3.6 64 位或更高版本。
  • TensorFlow 是一个机器学习库。NeuroNER 使用它作为其命名实体识别引擎,该引擎基于神经网络。官方网站:https://www.tensorflow.org
  • BRAT(可选)是一个基于网络的注释工具。只有当你希望方便地创建注释或查看 NeuroNER 的预测结果时才需要安装。官方网站:http://brat.nlplab.org

安装

若需要 GPU 支持,必须满足 TensorFlow 的 GPU 要求。如果你的系统不满足这些要求,你应该使用 CPU 版本。要安装 neuroner:

# For CPU support (no GPU support):
pip3 install pyneuroner[cpu]

# For GPU support:
pip3 install pyneuroner[gpu]

您还需要下载一些支持性软件包。

  1. Spacy 的英语语言模块:
# Download the SpaCy English module
python -m spacy download en
  1. http://neuroner.com/data/word_vectors/glove.6B.100d.zip 下载词向量,并将其解压至 ./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/
  1. 加载示例数据集。您可以通过在 Python 解释器中调用 neuromodel.fetch_data() 函数或在命令行中使用 --fetch_data 参数来加载这些数据集。
# Load a dataset from the command line
neuroner --fetch_data=conll2003
neuroner --fetch_data=example_unannotated_texts
neuroner --fetch_data=i2b2_2014_deid

请提供需要翻译的英文文本及相应的 Markdown 格式,我将会按照您的要求进行翻译。

# 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')
  1. 载入预训练模型。您可以通过在 Python 解释器中调用 neuromodel.fetch_model() 函数或在命令行中使用 --fetch_trained_models 参数来加载模型。
# 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')

安装 BRAT(可选)

BRAT 是一款用于创建、修改或查看 BRAT 样式注释的工具。有关安装和使用说明,请参阅 BRAT 官方网站

安装 Perl(依赖平台)

Perl 是必需的,因为官方的 CoNLL-2003 评估脚本是用这种语言编写的:http://strawberryperl.com。对于 Unix 和 Mac OSX 系统,Perl 应该已经安装好了。对于 Windows 系统,您可能需要安装它。

使用 NeuroNER

NeuroNER 可以通过命令行或者 Python 解释器来运行。

在 Python 解释器中使用 NeuroNER

要从命令行使用 NeuroNER,请创建一个带有您所需参数的 neuromodel 实例,然后调用相关方法。附加参数可以通过工作目录中的 parameters.ini 文件设置。例如:

from neuroner import neuromodel
nn = neuromodel.NeuroNER(train_model=False, use_pretrained_model=True)

更多细节即将呈现。

使用命令行操作 NeuroNer

默认情况下,NeuroNER 被配置为在 CoNLL-2003 数据集上进行训练和测试。使用默认设置运行 neuroner 将开始在 CoNLL-2003 数据集上训练(测试集上的 F1 分数应在 0.90 左右,即与最先进的系统相当)。要开始训练:

# 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

如果您希望更改 NeuroNER 的任何参数,可以修改工作目录中的 parameters.ini 配置文件,或者将其作为参数指定。

例如,要减少训练周期数并且不使用任何预训练的标记嵌入:

neuroner --maximum_number_of_epochs=2 --token_pretrained_embedding_filepath=""

要使用预训练模型对一些纯文本执行命名实体识别(NER):

neuroner --train_model=False --use_pretrained_model=True --dataset_text_folder=./data/example_unannotated_texts --pretrained_model_folder=./trained_models/conll_2003_en

如果同时在配置文件 parameters.ini 和参数中指定了某个参数,则以参数为准(即忽略 parameters.ini 中的参数)。您可以使用命令行参数 --parameters_filepath 指定一个不同的配置文件。命令行参数没有默认值,除了 --parameters_filepath,其默认指向 parameters.ini

NeuroNER 有三种操作模式:

  • 训练模式(从头开始):数据集文件夹中必须有训练集和验证集。测试集和部署集是可选的。
  • 训练模式(基于预训练模型):数据集文件夹中必须有训练集和验证集。测试集和部署集是可选的。
  • 预测模式(使用预训练模型):数据集文件夹中必须有测试集或部署集。

添加新数据集

数据集可以提供为 CoNLL-2003 或 BRAT 格式。数据集的文件和文件夹应按以下方式组织并命名:

  • 训练集:train.txt 文件(CoNLL-2003 格式)或 train 文件夹(BRAT 格式)。必须包含标签。
  • 验证集:valid.txt 文件(CoNLL-2003 格式)或 valid 文件夹(BRAT 格式)。必须包含标签。
  • 测试集:test.txt 文件(CoNLL-2003 格式)或 test 文件夹(BRAT 格式)。必须包含标签。
  • 部署集:deploy.txt 文件(CoNLL-2003 格式)或 deploy 文件夹(BRAT 格式)。不应包含任何标签(如果包含,标签将被忽略)。

我们提供了几个数据集示例:

  • data/conll2003/en:使用 CoNLL-2003 格式的注释数据集,包含 3 个文件(train.txtvalid.txttest.txt)。
  • data/example_unannotated_texts:使用 BRAT 格式的未注释数据集,包含 1 个文件夹(deploy/)。请注意,没有注释的 BRAT 格式与纯文本相同。

使用预训练模型

为了使用预训练模型,必须在 parameters.ini 配置文件中的 pretrained_model_folder 参数设置为包含预训练模型的文件夹。parameters.ini 配置文件中的以下参数也必须设置为与指定 pretrained_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

分享预训练模型

我们非常鼓励您分享在自有数据集上训练的模型,以便其他用户可以在其他数据集上使用该预训练模型。我们提供了 neuroner/prepare_pretrained_model.py 脚本,以便轻松准备用于分享的预训练模型。为了使用这个脚本,用户只需在脚本中指定 output_folder_nameepoch_numbermodel_name 参数。

默认情况下,预训练模型中包含的数据集信息只有训练数据集中出现的标记列表以及从数据集中学习到的相应嵌入。

如果您希望分享预训练模型而不提供任何关于数据集的信息(包括数据集中出现的标记列表),可以在运行脚本时设置

delete_token_mappings = True

在这种情况下,强烈推荐使用一些外部预训练的标记嵌入,并在训练模型时将其冻结以获得高性能。这可以通过在训练期间指定 token_pretrained_embedding_filepath 并在 parameters.ini 配置文件中设置

freeze_token_embeddings = True

来实现。

为了分享预训练模型,请在 GitHub 仓库上 提交一个新问题

使用 TensorBoard

您可以在训练过程中或训练结束后启动 TensorBoard。为此,在 NeuroNER 文件夹中打开终端并运行:

tensorboard --logdir=output

启动了一个可以在网页浏览器中通过地址 http://127.0.0.1:6006 访问的网页服务器。

引用

如果您在出版物中使用 NeuroNER,请引用这篇 论文

@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}
}

本文介绍了 NeuroNER 所采用的神经网络架构,详细描述可在这篇文章中找到。

@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}
}

请提供需要翻译的文本内容,我将按照您的要求进行翻译。

项目介绍

使用神经网络进行命名实体识别。易用性强,效果处于业界领先水平。【此简介由AI生成】

定制我的领域
771.72 K472访问 GitHub