named_entity_recognition
命名实体识别公司实操——详细步骤(raw数据+标注+数据集处理+crf)
项目的github地址
任务目标
从一些工厂、单位的日常检查日志中,识别出隐患设备实体和地点实体,如下表:
隐患日志 | 隐患地点 | 隐患设备 | |
---|---|---|---|
1 | 轧钢部一轧反吹压力表未校验 | 轧钢部 | 反吹压力表 |
2 | 铸管4.0施工现场多处气瓶间距不符合要求 | 铸管、4.0施工现场 | 气瓶 |
…… | …… | …… | |
121 | 煤气职业危害告知牌检测数据未更新 | 煤气职业危害告知牌 |
ps:上表的顺序仅是实例展示,不代表selected_data.xlsx中的真实情况。
实验步骤:
1、将每一句话用BIO标注方式标注
2、写dataloader
3、使用crf模型训练
下面我们介绍详细的标注工具及步骤
数据标注:
- 想要的训练数据集展示如下:
善其事而先利其器,采用YEDAA这个python开源工具包来标注,运行后界面长这样:
- 使用时几点注意:
1、操作方法是用英文写的,基本能涵盖你的使用要求,花几分钟时间建一个txt文件练练就会了;
2、目前YEDDA(2020.11)只支持Python2,我用conda创建了一个py2环境;
3、支持直接导入文件(open按钮),我使用的是txt格式;
4、支持导出形式设置,标注完成后点击Export按钮即可输出,我们会得到一个.anns文件;
5、可设置快捷键命令,一键标注光标内文本
6、荧光笔标记的标签如果挨着,一定要避免重叠,一个字符的重叠都不可以,否则会出现如下错误:
数据集处理
- 数据分析:
数据量只有121句,划分为10:1(110对train数据。11对val数据,也就是用来测试的。
- 流程:
①把121个sentence和tag对以(s,t)的形式加载到内存(load_dataset)
②用固定的随机种子打乱顺序
③划分列表,再分别存储为train.txt和val.txt
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。