关于命名实体识别(Named Entity Recognition)的一些问题梳理,便于了解该领域的各种问题和处理思路:
什么是命名实体识别?
Q: 第一个问题:什么是命名实体识别?
A: 命名实体识别是将文本中的元素分成预先定义的类,如人名、地名、 机构名、时间、货币等等。作为自然语言的承载信息单位,命名实体识别 属于文本信息处理的基础的研究领域,是信息抽取、信息检索、机器翻译、 问答系统等多种自然语言处理技术中必不可少的组成部分。
Q: 实体预先定义?
A: 我记得传统的 NER 任务主要是对七大类的识别,现在应该不局限了吧。
Q: 未定义怎么办,实体怎么定义?
A: 其他类?
A: 现在比较难识别的就是机构名称。
Q: 时间是实体吗?七大类是哪些?
A: 命名实体识别主要分类,一般包括 3 大类(实体类、时间类和数字类)和 7 小类(人名、地名、组织名、机构名、时间、日期、货币和百分比)。但随着 NLP 任务的不断扩充,在特定领域中会出现特定的类别,比如医药领域中,药名、疾病等类别。
A: 应该加上迁移学习和强化学习,来自动对未定义进行定义或扩充。
A: slot filling 算是广义的 NER。
Q: 开放领域有哪些通用的 slot 比较有意义?
A: 150 类的细粒度。
Q: 有 paper 讲这个颗粒度吗?
A: 这个类,感觉和知识图谱中的 type 还是有些不一样的。
A: 类别估计的确有很多吧。但是细分不细分肯定是按照不同的 task 来分的,可能有的数据集只是分 7 类。
A: 一般作细粒度实体识别的 paper 里面会给出划分的类别数和每个类别具体是什么。
Q: NER 会分限定域和开放域么??
A: NER 会针对具体 domain 区分,开放域的话应该就是指传统的三大类和七小类了。
A: 例如对话的 slot,比如说,特定领域:音乐领域,歌手,歌曲,曲风这些 slot。
A: 估计大家在实际用到 NER 的时候,这些类别都是根据自己的领域来定的吧。
A: Context-Dependent Fine-Grained Entity Type Tagging,https:// arxiv.org/abs/1412.1820,这篇文章提到一些细分的类别。
A: 谈论中提到 wikipedia 中对 NER 类别在垂直领域的情况介绍:
https://en.wikipedia.org/wiki/Named-entity_recognition
➋
命名实体识别的应用场景?
Q: 第二个问题是 NER 的应用场景, 以及可能遇到的问题(换成 slot 抽取的应用场景吧)
A: 知识图谱,文本理解,对话意图理解,舆情分析,对话 NLU 任务。
A: QA 任务, QA 本身的语言理解也需要 slot 抽取。
A: 指代消解,Chatbot,实体链接,知识抽取,关系抽取。
A: Domain knowledge,concept map for education。
A: NMT,但是非常少。
Q: 对,这些都是用到 NER 的一些 task,大家在工业中通常都会在哪些领域用到呢?
Q: 舆情分析做 NER 一些组织机构名的简称各位是怎么处理的?
Q: 怎么标注 NER 的?
A: 比如新闻推荐里,你关注哪个小公司,关注哪个小明星,这些都要识别出来。
A: 定义需要标注的实体,然后标注,但是标注总有些错误。我们之前是一部分从全称用规则生成了,另外一部分是网上找的相关资源。
Q: 怎么在源头有好的方法,标注高质量的数据?这部分成本很高。
A: bootrap 种子迭代,类似于爬虫。
A: QA 里说个地方,人名,也要有识别 。
A: 是的,当用户提出一个问题,要理解 query 的意图,NER 也是必须的。
A: 是人标的就会出错,对于一些细分领域,一般人还标不来。
A: 现在工业界基本上都是看天吃饭,一个分词库里有,一个句法分析。
Q: 句法分析怎么用
A: bootstrap 是不是可以适当减少人工量,相当于半自动化。
A: 哈工大 ltp 会识别一些。
A: 迭代的学习模式,根据句法分析的结果,加一点规则是不是可以标出一批比较高质量的数据?
A: 前提是句法分析的结果要准。
Q: 目前 parser 的效果如何?如果开放 yu 句法分析结果准,基本实验人工智能了吧。
A: 我没有实际做过,之前有想过,就是先人工标一点,在那机器跑一批未标注的语料,然后将标注好的继续训练,反复迭代,各位大神是不是这样呢?
A: 中间过程会增加种子集,那部分种子也需高质量。
A: 首先选一部分的高质量种子学习模式,然后用学习到的模式去训练未标注数据,再获得一批高质量的种子,加入到原来的种子集,作为新的种子集再训练模式,依此迭代。
A: 标注语料是开展 NER 工作最大的难题,目前我也正在尝试的方法就如上所述,因为针对特定领域,类别属于自定义,所以需要从零开始构建标注语料,不过最终的效果如何还在进行尝试中。
➌
目前做 NER 的主流方法是什么?
Q: 看来标注语料一直是个比较大的问题,不过回到 NER 的话题上,我们接下来先讨论一下目前做 NER 的主流方法吧。
A: 这个是之前一个人回答的,大概谈了NER 中模型发展的历史:有一些,大致如下:MLP->LSTM->LSTM/CNN+CRF->BiLSTM+CRF- >BiLSTM+CNN+CRF。
A: 提到技术,是不是大家都是用的 CRF,除了目前最新的深度学习。
A: 句法分析规则加概率方法最好。
A: 以前的话,做 NER 主要是最大熵马尔可夫或者 CRF,现在应该都和深度学习结合了。
A: 最好是有记忆加规则加概率。
Q: 大家有不用 CRF 效果超过用 CRF 的吗?
A: 感觉 CRF 在 NER 里面的作用还是很大的。
A: CRF 只能反应部分条件关系。
A: 所以现在最好的模型是 BiLSTM+CNN+CRF 么?
A: 融入词典特征会有明显提高
A: 神经网络处理序列问题不佳,可以发明可以描述序列关系的因果网络。
A: GCNN 和 DBLSTM 差不多貌似,语料好的话,貌似用几层全连接网络效果就不错,对于两三层网络而言。
A: 是不是现在的深度学习都要很多层?
A: 要看你句子长度,我是 100word,所以是 20x5 之类的, 10x10 也试过。
Q: 我想问个简单的问题,目前用 DL 框架做 NER 是不是都要先做 word2vec?
A: 用字向量,会避免分词的错误。
A: 对认为一个字是个词,跑 word2vec。
A: GCNN 原文貌似也是有残差?
Q: GCNN 算比较新的工作,目前有出来用 GCNN 来做 NER 的工作么?
A: multi task 这块 memory 需要针对任务设计比较好的读写机制。
A: 先做 word2vec 可以提供一定的泛化能力。
A: gated CNN,之前 Facebook 出来那个工作,Gated CNN 做语言模型有论文,可以参考。
Q: 问个问题,模型的词嵌入层一般是用的 word2vec 吗?还是有其它的设定?
A: 一般都是的吧,或者 glove。
A: 字向量之外,我看还有 position embedding 之说。
Q: NER 可以识别汽车品牌吗?比如奥迪 A3,奔驰 GLK。
Q: 不分词识别机构名这种长的实体效果怎么样?
A: position embedding 一般是在关系抽取中比较重要。
Q: 那对于最开始的输入向量使用 one-hot 好点还是用一些现有的 word2vec 模型得道最初的初始输入向量好一点呢?
A: 字的 embedding 是 character embedding,微软做阅读理解的任务有用。
A: lstm 本来就不需要 position,cnn 用。
A: word2vec 的结果的基础上做聚类,相近的词距离比较近,用欧式距离。
A: position embedding,就是引入时序信息。
Q: GCNN 需要用 position embedding 吗?
A: CNN 需要 position。
Q: character embedding 说的是一个一个字母吗还是?
A: 英语环境下是字母,中文就是字了。
A: 举个例子:用 CNN 来做关系抽取,这时候 ner1 ner2 之间的 position,就是一个非常强的特征,需要加进来。
A: 所以现在做 NER 主流还是基于深度学习,也主要用 RNN,由于 GCNN 是一个比较新的工作,所以在 NER 上可能也有进步,欢迎大家深入研究了。
A: 对,很想听大家分享 GCNN 的经验,是不是层数深会有效果,毕竟有人做出效果了,虽然是据说。
A: CNN 的主要优势应该是速度够快吧,效果和 RNN 没有明显差距。
➍
目前 NER 能达到的效果,取决于什么?
Q: 目前 NER 能达到什么样的效果,取决于什么?
Q: 论文中,NER 一般能做到多高的准确率?工业界一般又是多少呢?
A: 好像 MSRA 的一个 NER 数据是目前最难做的开放 NER 任务?
Q: 现在的简单三类别的 NER 在特定领域效果很好?
A: 用 Stanford NLP 工具感觉效果还不错。
Q: ccks 好像也有 NER 的任务是吧?
Q: 还有哪些开放任务评测?
Q: NER 是不是一般准确率都可以做到 0.9?
Q: 我要听赵雷的成都, 成都算地名吗?怎么抽不出来?
A: 算啊,地名和歌曲都算。
Q: 实体关系挖掘方法有哪些?
Q: 一般中英文分别用什么数据集来做实验?
A: MSRA 的我看了个 14 年的 paper 貌似 f 只有 80 多。
A: 但是我之前写小论文的时候,做了个实验,发现句子长度对 NER 影响还是很大的。
A: 主要是那些不常见的实体识别效果。
Q: 句子长度越长,越难抽么?context 信息不是多了比较好么?
A: 分词后抽实体名词的,效果蛮好的。
A: 看模型,Standford 的那个工具好像里面加入了 crf 和 lstm 吧。
Q: 请教个弱智问题:训练字向量的话,英文和数字怎么处理呢?比如 “华为 P10”。
A: 短实体,其实用字挺好。
➎
NER 常用的数据集、工具、评测任务有哪些?
Q: 聊一聊 NER 的现成工具吧,大家平时会用工具来做 NER 么,会用哪些工具?
A: NLTK 工具也挺好。
A: snownlp
A: Spacy 也有 NER 功能,不过貌似支持英语和德语。
A: 总结来看,常用的用 Stanford、NLTK、snownlp,另外也可使用哈工大 LTP 云和 bosonnlp api,虽然不见得效果就一定准确,但利用多种方式进行处理毕竟是方便些。
➏
目前主流 NER 方法有哪些缺陷,进一步研究可从哪些方面入手?
Q: 目前主流的 NER 方法有哪些缺陷?进一步研究可以从哪些方面着手?
A: 实体关系挖掘。
A: 时间、地点、人名方面。
A: 实体和关系联合提取会不会加大实体识别的精确度。
A: 联合提取还没尝试,不知道实际工作中操作难度大吗?
A: 结合 KB 不是觉得效果好,就是效果好,lexical 的特征,效果提升明显。
A: blstm + (CNN) + crf + lexical 特征。
A: 我国学者在 ACL 2017 发表的实体和关系联合提取论文:
http://ir. ia.ac.cn/bitstream/173211/14344/1/%5B17-ACL%5D%20Joint%20Extraction%20of%20Entities%20and%20Relations%20Based%20on%20a%20Novel%20Tagging% 20Scheme.pdf
Q: kb 的知识清洗,有没有研究?
A: 将实体关系抽取转换为序列标注任务, 实体关系全部加标签。
A: 貌似好多问题都可以规约到序列标注问题。
A: 是的,像 pos tagging,分词这些基本任务都可以。
A: NER,CHUNK 和 SRL 也都是序列标注问题。
A: 其实 NER —> slot 抽取—> 序列标注。
A: 也可以规约到分类问题。
A: 关于方法,还是推荐 +lexical 特征。
Q: 在 bilstm crf 框架下, 中文有些什么 lexical 特征?
A: 偏旁部首这种么?
A: 就是他们刚刚说的 KB,说得高端点加 KB,其实就是词典。
A: 这算是结合外部知识了,其实是为了丰富 context。
A: 然后再转换为向量。
A: 推荐一篇结合 KB 的无监督方法:2016 Lifu Huang Building a Fine-Grained Entity Typing System Overnight for a New X (X = Language, Domain, Genre)
A: 另一篇文章基于 KB:
http://dl.acm.org/citation.cfm?id=3052708
A: +lexical 特征论文:Training Deep Neural Networks on Noisy Labels with Bootstrapping,https://arxiv.org/abs/1412.6596
A: +lexical 论文:Named Entity Recognition with Bidirectional LSTM- CNNs,https://arxiv.org/abs/1511.08308
A: 超大规模训练数据,加 crf 不现实,我一般就不加了直接基于 token 的。
A: 造数据主要是注意两点,一个是噪音,一个是要有足够的泛化能力。
A: 可以认为 baike anchor 是天然的标注,百度百科矛文本。
❼
如何从自然文本中生成用于训练 NER 模型的数据集?
Q: 大家是不是都是自己人工标注的呀?
A: 还是猪八戒网之类的找众包,还是直接用公开的语料集。
A: 亚马逊还专门搞了一个数据标注平台。
A: 还有个百度众包平台。
A: 数据集本身也可以发文章,比如这个会:
The International Con- ference on Language Resources and Evaluation,http://www.lrec-conf. org/
A: 从讨论内容来看分为两种情况,研究性用途可能会基于一些公开数据集或者手工标注少量数据,但实际生产中会选择众包和从其他数据源利用规则策略两种方式构造标注数据集。