中文NER1 之 simplify the usage of Lexicon in Chinese NER
中文NER1 之 simplify the usage of Lexicon in Chinese NER
- ACL-simplify the usage of Lexicon in Chinese NER
- 中文NER难的问题
- 通用的NER结构
- 中文NER的Lattice-LSTM
- 本论文的方法
ACL-simplify the usage of Lexicon in Chinese NER
近期有个项目跟提取地址实体有关,所以系统性的把ner相关研究重新review了一遍,顺便记录下笔,方便以后查询。
这篇论文下载https://arxiv.org/abs/1908.05969
这篇论文的启发是,利用Lexicon词汇信息去提升NER准确率,Lattice-LSTM(2018)是一个很好的例子。 该模型在中文NER benchmark表现好,但是计算效率比较低。这篇论文,就是受此启发,需要去加速。实现的方法,综述为:合并词汇信息到向量表示中,从而避免引入复杂的序列结构来表征词汇信息。工作聚焦在改变字符表征层,在四个banchmark中文NER上,试验结果都表现很好。
中文NER难的问题
NER是识别person location product orgnization实体词,在英文中这些特殊实体词都是自然的分割,比如大写或者空格。NER的任务是对文本中每个字符进行标注,所以它是一个序列标注问题。
在中文书写的规范中,是没有英文那种先天特殊词分割书写的优势,导致中文NER任务的难度增加。处理这个问题,一种通用的实践方法是先分词,再把词信息引入到序列标注任务。但是分词引入的错误,会影响下游序列标注任务的正确率。
比如:
南京市/长江大桥。
分词成:南京/市长/江大桥
这种分词会导致NER,很难把南京市识别为location实体与长江大桥识别为location实体。相反,很可能把南京识别成location,江大桥识别为person。
由于分词准确性不太理想问题,导致很多中文ner在实际使用场景都偏向于使用字而非词。但是词信息非常重要,2015和2018都有尝试去引入词信息到模型。为方式分词错的问题,最早的做法是把所有的分词情况都加入到模型,让模型去判断选那种分词。这种模型是2015年的基于LSTM-CRF的模型。结果证明Lattice-LSTM表现很好。缺点有:1.慢,2.这种结构很难转移到其他模型比如CNN或者Transformer上去。
这篇文章提出了
- 一种加速方法
- 一种编码lexicon词汇的方法
通用的NER结构
第一层,输入层(如 char+bichar 2018)
第二层,序列模型层,去获取字符之前的关系(如CNN / LSTM / Trnasformer)
第三层,推理层 (如 CRF 2001)
中文NER的Lattice-LSTM
目标:合并字符与词汇作为输入
首先,利用lexicon matching在输入文本上,换句话说就是分词才用匹配的方式。获得了词后,会增加一个从字符ci 到 字符cj的有向边(i < j) 。ci为输入字符串中的字符,允许一个字符连接了多个字符(包含同一个字符的词有多个时)。采用这种方式过后,模型的输入由句子序列就变成了图。去实现这种结构,需要修改LSTM的内部结构,对应为:修改输入、 h state、c memorryCell。在更新阶段,输入包含:当前的字、上一层的h state、上一层的c 和 对应的词。h和c都是数组。
这种设计中的不足:
- 在memory更新阶段需要额外的去增加s、 h、 c
- 设计的函数很难并行计算
本论文的方法
重新定义论文的要解决的问题(目标):
- 模型能够保留所有字可能的词
- 模型能够使用预训练词embedding
用Softword technique来构建分词,并且给每个字符有多个标签。
比如
句子s={c1,c2,c3,c4,c5}, 其中{c1,c2,c3,c4}和{c3,c4}是词。
句子转换成 segs(s) = {{B},{M},{B,M},{E},{O}} BMESO标签。
这里segs(s)1={B}表示至少一个有一个以c1开头的词
segs(s)3={B,M}表示至少有一个 以字符c3开头的词 或者 以字符c3出现在词中间的词
ExSoftword,每个字符有一个5维度的类别表示{B,M,E,S,O}。
通过分析,ExSoftword有两个缺点。
- 它不能支持预训练的word embeddings。
- 尽管它能够包催所有可能的词,但是仍然丢失了一些信息。
句子 s = {c1,c2,c3,c4} 中 {c1,c2,c3} 与 {c2,c3,c4}是词
sges(s)={ {B}, {B,M}, {M,E}, {E} }
这种形式不能,反推或者还原,或者恢复 S就包含 {c1,c2,c3} 与 {c2,c3,c4}词。因为它同样也可以解释成,包含词{c1,c2,c3,c4} 与词{c2,c3}。这种方式,存在无法恢复原始的分词的问题。
改进版本
论文中提出,要保留每个字符可能的词的类别和字的分词。
改进的方法:每个字符分配四种类别 BMES。如果一个词是空的,则以NONE字符表示。
例子如下:
s={c1,c2,c3,c4,c5}中词为{c1,c2},{c1,c2,c3},{c2,c3,c4},{c2,c3,c4,c5}
对与c2, 表示成
B(c2)={{c2,c3,c4},{c2,c3,c4,c5}},
M(c2)={{c1,c2,c3}},
E(c2)={{c1,c2}},
S(c2)={NONE}
从网上找到,一个具体具体示例
这种方式后,就满足论文的两点目标:能使用pre-trained word embedding 和 能覆盖字符的所有词。
具体input输入生成过程:
把每个字符的四种词集合,压缩进一个固定维度的向量。为了尽可能保留原始信息,这里采用concate拼接四套词的表征,然后把它加到字符表征中去。
其中,单字符的四个词集合中的每个集合,也需要映射到一个固定维度向量。使用的方法:mean-pooling与加权求和。前者效果差,后者效果好。
加权的权值是根据词的频率计算,其中一点要求:当两个词中字符有重叠时,频率不增加,比如 南京 与南京市 。 当计算 南京市长江大桥 的词频率时,南京的词频就不增加,因为 南京 与 南京市 重叠。这样做的好处是,可以避免 南京比南京市频率高。
中文NER1 之 simplify the usage of Lexicon in Chinese NER相关推荐
- Simplify the Usage of Lexicon in Chinese NER阅读笔记
基于之前Lattice LSTM的问题进行改进 Lattice LSTM虽然达到了SOTA 但是模型结构非常复杂 限制了在工业上的应用 这篇提出了一个简化且高效的模型 融合了词汇信息到字编码中 避免了 ...
- java utf8 简繁转换 类库_在Java中进行中文繁体简体转换,基于OpenCC(Open Chinese Convert)方案...
一.OpenCC介绍 OpenCC (Open Chinese Convert,开放中文转换) 是一个用于中文简繁转换的开源项目,支持词汇级别的转换.异体字转换和地区习惯用词转换(中国大陆.台湾.香港 ...
- 中文NER任务实验小结:BERT-MRC的再优化
©作者 | 邱震宇 单位 | 华泰证券算法工程师 研究方向 | NLP方向 前言 熟悉我的读者,应该看过我之前写过的一篇关于中文 NER 任务实践的文章(邱震宇:中文 NER 任务实验小结报告--深入 ...
- FLAT:中文NER屠榜之作!
文 | JayLou娄杰 编 | YY 近年来,引入词汇信息逐渐成为提升中文NER指标的重要手段.ACL2020中一篇来自复旦大学邱锡鹏老师团队的 FLAT: Chinese NER Using Fl ...
- 复旦大学李孝男博士:结合词典的中文命名实体识别
⬆⬆⬆ 点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 近年来,将词典信息加入模型被证明对中文命名实体识别任务很有效.但是结合词典的方法通常会使输入变为一个动态的结构,模型需要在运行时 ...
- 「自然语言处理(NLP)论文解读」中文命名实体识别(Lattice-LSTM模型优化)
来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-27 引言 今天主要和大家分享一篇关于中文命名实体识别的文章,本文分析Lattice-LS ...
- NLP技术中的Tokenization
©作者 | Gam Waiciu 单位 | QTrade AI研发中心 研究方向 | 自然语言处理 前言 今天我们来聊一聊 NLP 技术中的 Tokenization.之所以想要聊这个话题,是因为,一 ...
- 工业界求解NER问题的12条黄金法则
星标/置顶小屋,带你解锁 最萌最前沿的NLP.搜索与推荐技术 文 | JayLou娄杰,夕小瑶 编 | 可盐可甜兔子酱 美 | Sonata 众所周知,命名实体识别(Named Entity Rec ...
- 2020 CCF BDCI 非结构化商业文本信息中隐私信息识别TOP5方案
2020 CCF BDCI 非结构化商业文本信息中隐私信息识别TOP5方案 1 写在前面 在本次CCF BDCI的非结构化商业文本信息中隐私信息识别比赛中,我们团队水煮毛血旺在初赛A榜B榜排名第六, ...
最新文章
- wind2008中如何显示隐藏文件/夹
- VTK:可视化之FrogBrain
- vue路由跳转权限_如何在vue中实现路由跳转判断用户权限功能?
- 从bootm 命令讲起/U-boot的环境变量: bootcmd 和bootargs
- Linux下判断cpu物理个数、几核
- kafka mirror_SSL Kafka经纪人从Kafka Mirror Maker迁移到Brooklin的挑战
- 神经网络不收敛的 11 个原因及其解决办法
- java steam filter 动态条件_Filter解决全站编码问题
- 状态机 复杂逻辑问题_状态管理中的逻辑
- 菜鸟教程c语言题目,C 练习实例40
- 无锡 计算机学校排名,无锡中职学校有哪些 前20排名
- 计算机代数与数论pdf,计算机代数及数论(maple).pdf
- VS2010中文版MSDN下载地址
- Scroller类及scroll相关方法总结
- 从美国创业者的成功看行业趋势
- 谷歌浏览器安全证书不受信任_windows7系统下谷歌浏览器提示该网站的安全证书不受信任如何解决...
- JavaScript实现的转盘抽奖html页面前端源码
- PG14新特性--恢复和VACUUM的加速
- 从 OKR 工作法到 OKRs-E,落地OKR不能错过的转变
- 国防科大计算机科学与技术专业排名,国防科技大学王牌专业排名