命名实体识别NER-通用序列标注-pytorch

LM_NER

简介

基于Pytorch的命名实体识别/信息抽取框架,支持LSTM+CRF、Bert+CRF、RoBerta+CRF等模型。

模型能解决flat ner问题(非嵌套命名实体识别问题)。

同时支持中英文的数据集的实体识别任务。

项目传送门:https://github.com/wzzzd/lm_ner

相关项目

若想要精度更高、推断速度更快的NER模型,可见另外一个项目:LM_SPAN

轻量级和基于预训练模型的文本分类框架,可见项目:text_classifier_pytorch

支持的模型

  • LSTM+CRF
  • Trasformer+CRF
  • Bert+CRF
  • AlBert+CRF
  • RoBerta+CRF
  • DistilBert+CRF

支持的训练模式

  • 支持中英文语料训练
    • 支持中英文的信息抽取任务
  • 混合精度训练
    • 用于提升训练过程效率,缩短训练时间
    • 配置文件arg_config.py中的变量adv_option
  • GPU多卡训练
    • 用于分布式训练,支持单机单卡、多卡训练
    • 配置文件arg_config.py中的变量visible_device用于设置可见的GPU卡号,多卡情况下用,间隔开
  • 对抗训练
    • 在模型embedding层增加扰动,使模型学习对抗扰动,提升表现,需要额外增加训练时间
    • 配置文件arg_config.py中的变量adv_option用于设置可见的对抗模式,目前支持FGM/PGD
  • 对比学习
    • 用于增强模型语义特征提取能力,待补充

Requirement

    python3.6
    numpy==1.19.5
    pandas==1.1.3
    torch==1.3.0
    transformers==4.6.1
    tensorboard==2.6.0
    apex==0.1 (安装方法见:https://github.com/NVIDIA/apex)

可通过以下命令安装依赖包

    pip install -r requirement.txt

Datasets

  • CNER

    • 来自:https://github.com/lonePatient/BERT-NER-Pytorch
    • 关于简历的的数据。
    • 数据分为8类标签类别,分别为:
        国家(CONT)
        民族(RACE)
        姓名(NAME)
        组织(ORG)
        地址(LOC)
        专业(PRO)
        学历(EDU)
        职称(TITLE)
    
  • CLUENER

    • 来自:https://github.com/CLUEbenchmark/CLUENER2020
    • 数据来源于Sina News RSS.
    • 数据分为10个标签类别,分别为:
        地址(address)
        书名(book)
        公司(company)
        游戏(game)
        政府(government)
        电影(movie)
        姓名(name)
        组织机构(organization)
        职位(position)
        景点(scene) 
    
  • 加入自己的数据集

    • 可使用本项目的处理方式,将数据集切分为3部分:train/valid/test,其中token和label之间用空格分割。
    • 数据使用BIO的标注方式。
    • 在 ./dataset 目录下新建一个文件夹,并把3个数据文件放置新建文件夹下。
    • 处理好数据集后,需要修改文件 arg_config.py 中的变量,英文为’en’,中文为’zh’。
        self.language = 'en'
    
  • 数据集示例

    • 以数据集CNER为栗子,文本和标签使用空格隔开,采用以下形式存储:
        2 O
        0 O
        1 O
        3 O
        年 O
        2 O
        月 O
        至 O
        今 O
        任 O
        广 B-ORG
        东 I-ORG
        X I-ORG
        X I-ORG
        X I-ORG
        X I-ORG
        X I-ORG
        X I-ORG
        股 I-ORG
        份 I-ORG
        有 I-ORG
        限 I-ORG
        公 I-ORG
        司 I-ORG
        董 B-TITLE
        事 I-TITLE
        、 O
        ...
    

Get Started

1. 训练

准备好训练数据后,终端可运行命令

    python3 run.py

2 评估

加载已训练好的模型,并使用valid set作模型测试,输出文件到 ./dataset/${your_dataset}/output.txt 目录下。

需要修改config文件中的变量值,并保存。

(本人不喜欢使用argparse等模块传入参数,尽管使用上会比较便利,但个人感觉太乱。同样想要修改其他参数,可以直接在arg_config.py中修改)

    self.mode = 'eval'

终端可运行命令

    python3 run.py

3. 预测

预测未知标签数据集,并保存为文件 ./dataset/${your_dataset}/output.txt 目录下。

需要修改config文件中的变量值,并保存。

    self.mode = 'test'

终端可运行命令

    python3 run.py

Result

模型预测结果示例如下:

指标情况
在这里插入图片描述

测试集
在这里插入图片描述

FAQ

  1. 训练过程报错 ValueError: Connection error, and we cannot find the requested files in the cached path.
    • 网络问题,原因是与huggingface服务器断开,预训练模型下载失败了,重跑一次,一次不行再来一次~

Reference

【LSTM+CRF】https://arxiv.org/pdf/1603.01360.pdf
【Bert】https://arxiv.org/pdf/1810.04805.pdf
【RoBerta】https://arxiv.org/pdf/1907.11692.pdf
【Github:BERT-NER-Pytorch】https://github.com/lonePatient/BERT-NER-Pytorch
【Github:transformers】https://github.com/huggingface/transformers

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: BERT-NER-PyTorch是一个基于PyTorch深度学习框架的BERT命名实体识别NER)模型。BERT是一种在大规模未标记文本上训练的预训练模型,它可以用于各种自然语言处理任务。 BERT-NER-PyTorch利用已经使用大量标记数据进行预训练的BERT模型的表示能力,进行命名实体识别任务。命名实体识别是指从文本中识别特定实体,如人名、地名、组织、日期等。通过使用BERT-NER-PyTorch,我们可以利用预训练的BERT模型来提高命名实体识别的性能。 BERT-NER-PyTorch的实现基于PyTorch深度学习框架,PyTorch是一个用于构建神经网络的开源框架,具有易于使用、动态计算图和高度灵活的特点。通过在PyTorch环境下使用BERT-NER-PyTorch,我们可以灵活地进行模型训练、调整和部署。 使用BERT-NER-PyTorch,我们可以通过以下步骤进行命名实体识别: 1. 预处理:将文本数据转换为适合BERT模型输入的格式,例如分词、添加特殊标记等。 2. 模型构建:使用BERT-NER-PyTorch构建NER模型,该模型包括BERT预训练模型和适当的输出层。 3. 模型训练:使用标记的命名实体识别数据对NER模型进行训练,通过最小化损失函数来优化模型参数。 4. 模型评估:使用验证集或测试集评估训练得到的NER模型的性能,例如计算准确率、召回率和F1分数等指标。 5. 模型应用:使用训练好的NER模型对新的文本数据进行命名实体识别,识别出关键实体并提供相应的标签。 总之,BERT-NER-PyTorch是一个基于PyTorch的BERT命名实体识别模型,通过利用预训练的BERT模型的表示能力,在命名实体识别任务中提供了灵活、高效和准确的解决方案。 ### 回答2: bert-ner-pytorch是一个基于PyTorch框架的BERT命名实体识别模型。BERT是一种基于Transformer架构的预训练模型,在自然语言处理任务中取得了很好的效果。NER代表命名实体识别,是一项重要的自然语言处理任务,旨在从文本中识别和标注出特定类型的命名实体,如人名、地点、组织等。 bert-ner-pytorch利用预训练的BERT模型作为输入,结合神经网络模型进行命名实体识别。它通过将输入文本转化为BERT模型能够接受的格式,并在其上进行微调训练来提高NER的性能。具体来说,该模型首先使用BERT模型对文本进行编码,将文本中的每个单词转化为其对应的向量表示。然后,这些向量通过一层或多层的神经网络模型,以预测每个单词是否属于某个命名实体类别。 利用bert-ner-pytorch模型,我们可以将其应用于各种实际场景中,如信息抽取、问题回答、智能问答系统等。通过对输入文本进行命名实体识别,我们可以更好地理解文本中所包含的实体信息,从而为后续的处理与分析提供更多的潜在价值。 需要注意的是,bert-ner-pytorch模型是一个基础的NER模型,它需要根据具体的任务和数据进行进一步的训练和优化。同时,BERT模型本身也有一些限制,如较高的计算资源要求和模型大小。因此,在实际使用时,我们可能需要结合具体需求,对模型进行调整和优化,以适应不同的场景和数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值