Skip to content

“半指针-半标注”方法的可变长实体抽取器,基于苏神的三元组抽取方法改造

Notifications You must be signed in to change notification settings

NatureGate/entity_extractor_by_binary_tagging

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Entity Extractor By Binary Tagging

公众号文章:基于首尾标注的实体抽取开源工具

“半指针-半标注”方法实体的抽取器,基于苏神的三元组抽取方法改造,这里取消了三元组抽取模型中对s的抽取,直接抽取实体并做分类(相当于直接抽取p和o)。改造后的实体抽取方法不仅可以运用于短实体的抽取,也可以运用到长句实体的抽取。

环境

  • python 3.6.7
  • transformers==3.0.2
  • torch==1.6.0

其他环境见requirements.txt

更新历史

日期 版本 描述
2020-08-23 v1.0.0 初始仓库
2020-12-05 v1.1.0 代码结构调整
2021-07-08 v2.0.0 修改成Bert微调的模型

原理

模型原理图

运行

  • 按照data中的格式整理好数据
[
    {
        "text": "XAAAXXXBBXXCCCCCCCCCCCXX",
        "a": "AAA",
        "b": "BB",
        "c": "CCCCCCCCCCC"
    },
]
  • 在system.config文件中配置好参数,其中class_name必须和json文件中的类别的key一致
class_name=[a,b,c]
  • 选择训练模式
################ Status ################
mode=train
# string: train/test/interactive_predict
  • 根据结果调高或调低decision_threshold这个超参数(sigmoid的输出大于这个参数会被判定为实体的首/尾)
decision_threshold=0.5
  • 运行main.py

结果

  • example_datasets1

example_datasets1

这里的数据模式比较简单,比较容易达到验证集拟合状态

  • example_datasets2

example_datasets2

测试

  • 选择测试模式,程序会读取训练过程中最好的模型
################ Status ################
mode=interactive_predict
# string: train/test/interactive_predict

交互测试结果如下

  • example_datasets1

img04

  • example_datasets2

img05

参考

公众号

相关问题欢迎在公众号反馈:

小贤算法屋

About

“半指针-半标注”方法的可变长实体抽取器,基于苏神的三元组抽取方法改造

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%