Python深度学习 |
您所在的位置:网站首页 › 分词的定义和分类 › Python深度学习 |
系列文章目录
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为例)模型经过训练后,可以测试模型效果,输出日志文件如下: 实体识别模型训练测试与序列标注类似,不多赘述,语料部分展示如下: 使用“”标注食品与诱因实体,使用“”标注时间与地点实体。
对两类实体进行标记,各标记含义如下: 标记含义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 【文末小宣传】 ----博主自己开发的小程序,希望大家点赞支持一下,谢谢!----- |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |