前言
再来简单回顾一下之前内容,上一篇《医疗健康领域的短文本解析探索(一)》我们简单的介绍了目前工业界常用的concept/phrase的自动化抽取和评估的方法,之后我们又介绍了两种结构化电子病历的方法,第一种构建MeSH语义树,对症状原子词进行拆分;第二种使用multi-view attention based denoising auto encoder(MADAE)模型进行相似度计算,关联到库中已存在主题词上。这篇文章我们一方面继续优化抽取结果,一方面讲一下上一节留下的坑,什么是已经存在的主题词,我们如何确定主题词?
开胃菜
10月份第五届中国健康信息处理会议(CHIP2019)发布了一个测评任务[1],临床术语标准化任务,和我们最后提到的标准化任务差不多,给定一手术原词,要求给出其对应的手术标准词。如下图所示:
这和我们目前做的内容契合度很高,所以就拿这个数据来练练手。对于信息检索相关的任务,一般思路都会分为召回和精排(或重排Rerank)两个阶段,这里我们仅使用过往方法验证一下召回阶段。首先分析一下数据,数据中会存在三种关系,一对一,一对多,多对一,多对多
主要先解决一对一这个问题,简单回顾一下MADAE[2]模型。
首先使用简单的Noise Function进行数据增强,三层的Multi-view Encoders,分别为音,字,词三种方式的embedding层进行输入。因为严重缺少上下文,就没办法将上下文信息做特征,所以直接用Denoising Text Embedding生成向量后的Top-1的结果只有73%。于是我们做了两个改进,首先将Noise Function替换为EDA[3]构建数据集,并且将Multi-view Encoder 层加入bert的,发现效果好了很多,结果如下表所示:
后来发现一对多和多对一的问题在测试集上出现挺多的,我对于一对多的处理方式是将origin词中带有'+'号的进行分割了,导致了最终正确率下降很多。ps:就这个单侧甲状腺切除伴他叶部分切除术
在测试集上就有80个,一定要认真的看数据集合。
简单的说一下后续优化的思路,首先来看一下计算相似度后的结果,key是原始词,target是验证集给出的结果,topK是BERT+DAE 相似度计算给出的排序结果,我们可以根据Top-3的结果构建正负样本,将图中'✓'做为正样本,图中的'x'作为负样本,再构建一个分类器模型,可以用origin 和 ^target(预测结果)的一些相似度度量的结果作为特征,比方说jaccard,Edit Distance,word2vec等等。之后分类的结果对topK进行rerank,一切有趣的玩法请自行开发。
后续看了前三名的ppt,排名第一的方法是用LCS最长公共子序列做粗筛,最后精排直接用bert构建分类器。精排过程对于最终信息检索的效果有非常重要的作用,经过精排后,前几名参赛队伍对于数据集的top1准确率可以提高到90%+。如果有兴趣可以[1]邮件联系要数据。
有趣的主菜
命名实体识别是结构化文本最重要的技术之一,可以有效的帮助我们分析用户意图并优化推荐结果,但是在实际应用中存在两个问题:
如何获取垂直领域或开放领域的高质量标注。
随着不断积累新的数据也将源源不断的产生,如何使用已有的数据,挖掘出新词并准确的对应到相应的类别。
在保证质量同时又源源不断的获取新的词汇,最简单的方式是找到这个垂直领域的专家,持续不断的对一些非结构化文本进行标注。但是这种方式的成本比较高,而且周期比较长。使用远监督的方式,根据一份质量较高的词典对非结构化文本进行"伪标注",但是在垂直领域由于泛化能力有限,我们没办法保证其命名实体识别的有效性,举个例子,苹果可以是食物,也可以是公司,那么我们在进行远监督对文本做标注时,无法有效的进行区分。
生物医学领域为解决泛化性低这一问题,提出了基于规则和统计的混合分类器模型[9]。使用前缀匹配,拼写规则,N-gram,词性标注和一些上下文相关文法作为特征,使用贝叶斯网络,决策树和朴素贝叶斯等分类器模型进行融合。准确率在该数据集上提升了1.6个点,其结果如下所示:
近日看了使用远监督进行命名实体识别一些论文,其中一篇《Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning》[10-11],作者主要用未标记数据和领域辞典进行NER方法,作者将任务表示为对正未标记(PU, Positive-Unlabeled)学习问题,因为词典不能包含句子中的所有实体单词,所以没有采用传统的BIO,BIESO标注模式,而是转化为二分类问题,将实体单词映作为正样本,非实体单词作为负样本。在AdaSampling[12]不断扩充词典数据的同时也在不断的优化PU分类器。
这种半监督方式虽然和监督学习比有一些差距,但是也达到了相对较好的结果。印象深刻的是这篇《HAMNER: Headword Amplified Multi-span Distantly Supervised Method for Domain Specific Named Entity Recognition》这篇文章应用了之前文章中提到的文本结构化方法和名词短语挖掘等技术,来为命名实体识别提供pseudo annotation。
作者提出了一个HAMNER:Headword Amplified Multi-span Named Entity Recognition远监督的方式进行标注。这篇文章旨在减小传统的监督学习方法和远监督之间的差距,文中表明,远监督方法有两个限制条件,第一个就是oov问题,挖掘到的新的名词短语,没有一个准确对应的类别,就比方说,ROSAH syndrome,像这个词如果未存在词典中时,我们可以根据它的headword syndrome来判断它实际上是一个疾病类型。另一个限制就是远监督方法很可能带来很多不确定的边界问题,举个例子,我想买一个苹果手机,苹果是Food也可以是Company,苹果手机是Mobile Phone,因此先确定mention的类型再去判断mention type,并根据其置信度给出更为准确的实体边界。
从流程图中看出,我们远监督所用到词典数据来源有两个,高质量带类别的词典和抽取的phrase(本文中为span),对训练数据生成伪标注
数据。那么问题就有了,如何获得词典之外的Noun phrase,如何解决同义词和拼写错误问题,文中提到了两个方法,其中一个用的是Auto Phrase,也就是之前的文章中我们谈过的关于名词短语挖掘的方法[4-7]。抽取到的phrase没有类别时,并使用headword和word embedding计算相似度的方式确定抽取Noun Phrase 。
输入词典D,高质量的phrase,headword 频率的阈值和headword相似度阈值,根据phrase匹配到的相似度最大值的类别进行记录,phrase很有可能存在多个类别标签,T为phrase的类别标签集合。在构建伪标签的训练数据时,根据正向最大匹配原则,不允许存在嵌套或重叠。但是允许同一个实体有多个类别。
不仅每一个实体可以有多个类别标签,在构建数据时还要对词实体的每个类别给定一个权重w,这个权重是根据Algorithm 1 中最大相似度值进行计算。像图中给出的例子一样,将包含granuloa cell tumors(phrase)的句子作为输入层,ELMo, Character Representation 和 Word Embedding做为embedding层,隐藏层为Bidirectional LSTM,将其最终结果作为Word Representation 并根据phrase的span将句子划分为三个部分,每一部分计算一个隐藏的表示,最后将三个结果进行拼接后将最终EntityType作为这phrase的类别。并且我们可以获得phrase在这个类别下的权重w。
最后一步,根据神经网络模型提供的phrase和其所有类型的概率估计,对句子进行划分,因为phrase之间位置互相不重叠且不存在嵌套,并且在句子中应该是保留一个固定类别信息,因此对于句子中存在多个phrase时,我们根据其最小的联合概率,作为最优解,其中用了动态规划做优化。
一点也不甜的甜点
其实整个方法不难理解,但是内容相对来说还是挺丰富的,首先我们需要有一个在垂直领域一定规模的自定义词典,根据auto phrase等名词短语挖掘方法,挖掘一批高质量的名词短语,并且简单的做一些标注后,根据上下文信息构建分类器模型,确定其在每个类别下的条件概率值,概率最大的作为该句子下phrase的类别,再计算最小的联合概率结果,使用动态规划,找到最优解,作为最终的伪标注训练数据。这样做的好处是,减少人工标注成本,而且在某些领域下效果近乎于专家标注结果。
这篇文章也是最近刚看到的,其中一些方法我们也在用,并正在尝试着做一些改进,原文在为抽到phrase给定类别的时候,使用headword和词向量计算相似度。但是词典中会存在oov问题,很可能没有phrase所对应的headword时,可以考虑用一些规则,或者是根据[5]中提到的对症状数据进行标准化的方法,标注一批数据,构建语义树等方式来辅助我们给定phrase最终类别。
总结
在2019CCKS看到很多医疗研究室做的标注系统,但是都存在一个问题,那就是如何确定优质标注的来源,如果说找医学领域专家进行标注,时间成本很高,而且标注过程相当枯燥,会导致标注时信息缺失或标注错误。
远程监督的方式可以帮助我们减少一定量的人工标注成本,HAMNER的方法证实了,使用领域词典和挖掘到的名词短语进行伪标注要比单纯使用领域词典的效果要好,并且其F1和Pre与人工标注结果在某些领域数据集下相差不多。
我们之后将尝试用HAMNER,语义树,知识图谱实体对齐和一些简单的人工标注等方法来解决构建训练数据问题。使用HAMNER对非结构化文本构建伪标注数据,再人工审核伪标注数据的phrase类别的词在句子中的边界和类别正确。
引用
[1] http://www.cips-chip.org.cn/evaluation
[2] [IEEE 2018] Chinese Medical Concept Normalization by Using Text and Comorbidity Network Embedding
[3] [EMNLP 2019]EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks
[4] HAMNER: Headword Amplified Multi-span Distantly Supervised Method for Domain Specific Named Entity Recognition
[5] https://zhuanlan.zhihu.com/p/69361556
[6] https://zhuanlan.zhihu.com/p/80781295
[7] [IEEE 2019]An efficient method for high quality and cohesive topical phrase mining
[8] [IEEE 2018]Automated phrase mining from massive text corpora.
[9] [IJACSA 2017]Bio-NER: Biomedical Named Entity Recognition using Rule-Based and Statistical Learners
[10] [ACL 2019] Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning
[11] https://blog.csdn.net/a609640147/article/details/91048682
[12] [IJCAI 2017]Positive unlabeled learning via wrapper-based adaptive sampling
招聘信息
丁香园大数据NLP团队招聘各类算法人才,Base杭州。NLP团队的使命是利用NLP(自然语言处理)、Knowledge Graph(知识图谱)、Deep Learning(深度学习)等技术,处理丁香园海量医学文本数据,打通电商、在线问诊、健康知识、社区讨论等各个场景数据,构建医学知识图谱,搭建通用NLP服务。团队关注NLP前沿技术,也注重落地实现,包括但不仅限于知识图谱、短文本理解、语义搜索、可解释推荐、智能问答等。加入我们,让健康更多,让生活更好!
欢迎各位朋友推荐或自荐至 yangbt@dxy.cn
本文转载自公众号丁香园大数据,作者丁香园大数据NLP
推荐阅读
AINLP年度阅读收藏清单
知识图谱构建技术综述与实践
谈谈医疗健康领域的Phrase Mining
医疗领域知识图谱构建-关系抽取和属性抽取
中文NER任务实验小结报告——深入模型实现细节
大幅减少GPU显存占用:可逆残差网络(The Reversible Residual Network)
鼠年春节,用 GPT-2 自动写对联和对对联
transformer-XL与XLNet笔记
AINLP-DBC GPU 云服务器租用平台建立,价格足够便宜
征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。