Python深度学习-NLP实战:命名实体识别(NER)之分词与序列标注、实体识别任务简介
系列文章目录
Python深度学习-NLP实战:深度学习系列培训教程
- Linux服务器软件的简单使用
- Linux命令的简单使用
- 训练集、测试集、验证集的介绍及制作
- 字向量的训练与生成
- 文本分类之SVM模型的简单使用
- 文本分类之FASTTEXT实现中文文本分类
- 命名实体识别(NER)之分词与序列标注、实体识别任务简介
前言
命名实体识别(Named Entity Recognition, NER)是信息抽取和信息检索中的一项重要任务,其目的是识别出文本中表示命名实体的成分,并对其进行分类。[1]而命名实体主要指文档中的人名、地名、机构名、时间等名词实体。
[1] 刘浏,王东波.命名实体识别研究综述[J].情报学报,2018,37(03):329-340.
分词与序列标注
任务简介
我们先从了解什么是分词和序列标注开始。
分词就是找到字符串中每个词语的开头与结尾。
序列标注就是输入一段字符串,输出字符串中每个字符对应的序列。
通过序列标注完成分词, 即把一个字符,是词的开头、结尾、还是中间部分给标出来。
例如,我一定要当上海贼王,如果分词分为 我/一定要/当/上海/贼王(举个栗子)
对应的序列就应该是(以字为单位,下文将该格式称为token格式):
我 S
一 B
定 I
要 E
当 S
上 B
海 E
贼 B
王 E
序列标注的标记集可以任意命名,这里我们选择的标记集是 {B, I, E, S}。
其中,B代表词语开头, I代表词语中间, E代表词语结尾,S代表单字。
后期涉及到实体标注时,也可以在标记中添加后缀用来区分不同实体,如:
{B-FD,I-FD,E-FD,S-FD,B-OT,I-OT,E-OT,S-OT,O}
其中,FD和OT代表两类不同的实体,O表示非实体。
我们想实现的就是将一段字符串输入模型中,模型会将每个字符的标记以token格式的文件输出,这样我们就知道怎么分词了(当然还要看模型的效果)。
比如: 输入“我一定要当上海贼王”,模型输出标记顺序为 “SBESBEBIE ”,我们就可以得知,这个字符串应该分词为“我/一定/要/当上/海贼王”。
训练集与测试集
接下来要学习使用的模型的训练集和测试集都需要处理成token格式,如下:
(模型训练格式是自己定义的,这里的规定是我们实验室用的代码里规定的)
制作语料注意:
① 以句末符号(句号、问号、感叹号、省略号等)作为切分标志,并随机打乱句子顺序。
② token格式中每句话间换一行,保证输入模型的单个长度不会过长引起崩坏!
③ 要保证语料中的每句话内都要以“单字\t标记\n”
的形式,不能有一个为空值!
模型测试结果(以CRF为例)
模型经过训练后,可以测试模型效果,输出日志文件如下:
我们以前一列为标准,如果后一列和前一列标的完全一样,那么机器序列标注的正确率就是100%,如果有不一样的地方,则代表正确率下降。
实体识别
实体识别模型训练测试与序列标注类似,不多赘述,语料部分展示如下:
使用“<fd></fd>
”标注食品与诱因实体,使用“<ot></ot>
”标注时间与地点实体。
个人建议:为制作token语料方便,可以编写程序将标签换成符号如“【】”和“{}”。
为了将语料转化为可供模型训练的token格式,我们定义了9 位标记集:
{B-FD,I-FD,E-FD,S-FD,B-OT,I-OT,E-OT,S-OT,O}
对两类实体进行标记,各标记含义如下:
标记 | 含义 |
---|---|
B-FD | 食品与诱因实体起始字 |
I-FD | 食品与诱因实体中间字 |
E-FD | 食品与诱因实体结束字 |
S-FD | 食品与诱因实体单字 |
B-OT | 时间与地点实体起始字 |
I-OT | 时间与地点实体中间字 |
E-OT | 时间与地点实体结束字 |
S-OT | 时间与地点实体单字 |
O | 非实体字 |
例如:
食品与诱因实体中的“地沟油”,标记为:
地 B-FD
沟 I-FD
油 E-FD
由单字构成的实体“锶”,标记为:
锶 S-FD
时间与地点实体中的“北京”,标记为:
北 B-OT
京 E-OT
写在最后
【学习交流】
WX:WL1498544910
【文末小宣传】
----博主自己开发的小程序,希望大家点赞支持一下,谢谢!-----
Python深度学习-NLP实战:命名实体识别(NER)之分词与序列标注、实体识别任务简介相关推荐
- Python深度学习-NLP实战:字向量的训练与生成
系列文章目录 Python深度学习-NLP实战:深度学习系列培训教程 Linux服务器软件的简单使用 Linux命令的简单使用 训练集.测试集.验证集的介绍及制作 字向量的训练与生成 文本分类之SVM ...
- Python深度学习企业实战之TensorFlow的底层原理及安装
(一)TensorFlow 的底层原理 TensorFlow 是一个用于训练深度学习模型的强大开源软件库,由 Google Brain 小组推出. 基本原理是定义一个用来计算的图(可以简称为计算图), ...
- 深度学习(三十八)初识DL在自然语言序列标注中的应用-未完待续
初识DL在自然语言中的应用 原文地址: 作者: 一.自然语言序列标注 虽然之前自己对于HMM.CRF.Word2vec.Attention机制.Encode-Decode等,在自然语言领域的应用已经比 ...
- Python深度学习之循环神经网络的高级用法
Deep Learning with Python 这篇文章是我学习<Deep Learning with Python>(第二版,François Chollet 著) 时写的系列笔记之 ...
- 【论文笔记】《基于深度学习的中文命名实体识别研究》阅读笔记
作者及其单位:北京邮电大学,张俊遥,2019年6月,硕士论文 摘要 实验数据:来源于网络公开的新闻文本数据:用随机欠采样和过采样的方法解决分类不均衡问题:使用BIO格式的标签识别5类命名实体,标注11 ...
- 【重磅干货】Python、机器学习、深度学习算法实战和应用必备书籍
[导读]首先祝大家中秋佳节快乐,乘此良辰美景,今天就给大家发一波福利干货!本文给大家分享机器学习.深度学习算法实战和应用必备的4本"宝藏"书.具体书籍展示如下:(文末提供下载方式! ...
- 深度学习项目实战(一):猫狗识别
深度学习项目实战(一):猫狗识别 文章目录 深度学习项目实战(一):猫狗识别 项目背景: 数据读取: 网络架构 卷积神经网络训练 项目背景: 猫狗识别是卷积神经网络的入门实战案例,目的在于计算机可以识 ...
- Python深度学习实战:声呐返回值分类
Python深度学习实战:声呐返回值分类 声呐物体分类数据 简单的神经网络 预处理数据以增加性能 调整模型的拓扑和神经元 缩小网络 扩大网络 总结 本章我们使用Keras开发一个二分类网络.本章包括: ...
- Python深度学习实战:多类花朵分类
Python深度学习实战:多类花朵分类 鸢尾花分类数据集 导入库和函数 指定随机数种子 导入数据 输出变量编码 设计神经网络 用K折交叉检验测试模型 总结 本章我们使用Keras为多类分类开发并验证一 ...
最新文章
- C# WINFORM 打包数据库
- 用户操作计算机系统的基本工具是什么,在Windows支持下,用户操作计算机系统的基本工具是______。...
- 让理科生沉默,让文科生落泪的文史综合题
- C#与数据库访问技术总结(十七)
- Python2.x 和 Python3.x,如何选择?
- 都是写需求,高手和菜鸟为何差别这么大?
- 在LINQPad中征服ASP.NET Boilerplate查询性能
- [Python] L1-022. 奇偶分家-PAT团体程序设计天梯赛GPLT
- android传感器_Android传感器
- springMVC简易学习笔记三(文件上传与异常处理)
- 悬镜安全在RSAC2022上斩获Global InfoSec Awards四项大奖
- 在FTP服务器上搜索指定文件
- Spring的事务传播机制
- git commit后回退方法
- Excel画的图复制到Word中变形的解决办法
- 计算机应届生理论知识面试,计算机应届生面试技巧
- 从0开始学c语言-总结01-c语言的粗略认识和快捷键
- ExoPlayer官方中文使用文档
- Flask-Login 让实现登录功能变简单
- Freeline的快速集成
热门文章
- GIS当中使用uDig打开shp图层,并查看数据结果
- w计算机二级word单选题,2017全国计算机二级MS-Office选择题题库大全.pdf
- TXT杀手最终标题版本下载
- 同一个项目能否有相同类名的类注入JavaBean里面?
- POI 实现分页 Excel 表格的基本逻辑
- matlab分数怎么表示,matlab如何将分数和人名写入excel的某一列中
- 基于 java 使用 POI 操作 excel 导出限制某些单元格可编辑和单元格下拉列表有效性
- 基于opencv的家居智能安防机器视觉系统
- 华为C8650刷回官方ROM
- Layui日期选择器+两个日期之间天数计算