潍坊建设银行网站,宁波市建筑业管理信息网,php搭建wordpress,wordpress模板 装修分享嘉宾#xff1a;付子玉 观澜网络 算法工程师编辑整理#xff1a;孙佩霞 中国电信研究院出品平台#xff1a;DataFunTalk导读#xff1a;丁香园大数据组旨在为用户提供更优质的内容与服务#xff0c;使用知识/概念图谱、预训练模型挖掘更深层次的用户意图。本文介绍了丁…分享嘉宾付子玉 观澜网络 算法工程师编辑整理孙佩霞 中国电信研究院出品平台DataFunTalk导读丁香园大数据组旨在为用户提供更优质的内容与服务使用知识/概念图谱、预训练模型挖掘更深层次的用户意图。本文介绍了丁香园nlp组联合华师大团队发表的文章SMedBERT在医疗垂直领域下将知识图谱的医学实体和实体的结构化信息引入到预训练模型中并介绍了丁香园在业务场景下的一些应用。全文主要由四个模块组成业务场景介绍医疗图谱构建ACL|SMedBERT工业落地和思考01丁香园业务场景概述丁香园起点是打造一个专业的医学学术论坛为医生、医学生、医疗从业者等提供一个信息交流的平台。丁香园的主要用户是医疗从业人员会在论坛上发布考博、规培分数线、求助医疗文献等内容。随着业务的不断扩展发展出了丁香医生、丁香妈妈等APP为大众用户提供了一个健康信息平台。目前丁香园从早期的医生用户扩展到了大众用户实现了ToDTo DcotorToC双核心驱动业务会覆盖这两类人群的日常需求。比如对医生为主的医疗从业者来说会涉及到日常的学术问题、经验分享、疑难病例的讨论以及查阅药品说明书、诊疗指南等。对大众用户来说包括线上问诊、科普知识、健康商城等服务。在2021年丁香园C端规模达到1.2亿医生端拥有全国70%的医生作为注册用户。02医疗图谱构建首先介绍一下丁香园应用到的医疗健康图谱。医疗健康图谱构建由专业的医疗团队来维护有医学背景相关同事维护疾病、症状、手术、药品等医学概念以及60多种医学关系。同时丁香园nlp组会用一些算法去抽取和意图分类等工作利用算法与人工相结合的方式对实体、关系、实体属性进行扩充。因为丁香园业务模式较多需要考虑在图谱应用上如何做迁移、融合工作。为更好的去分析用户意图构建用户画像在实际工作中我们使用一种Taxonomy概念图谱。例如搜索十二指肠溃疡丁香医生会给出一个搜索结果:“十二指肠溃疡怎么去治疗”它是消化内科的一个疾病可以将其定义为一个消化内科的概念。在丁香园搜索规培考试给对应的规培考试内容标注相关的标签比如成绩查询、内科的标签考试答案等。概念图谱会以一个四层结构构建第一层底层是entity实体层例如规培考试、十二指肠溃疡、腹痛等。往上一层是instance层也就是文章内容。例如十二指肠溃疡怎么治疗。concept层是概念层可以根据文章的用户点击行为、搜索行为、内容聚类抽象到上层的concept概念结构比如十二指肠溃疡对应的是消化内科的一种疾病。最上面一层建立与业务强相关的topic层。利用层级关系对长短文本进行多层次、丰富主题的刻画去分析、理解用户的搜索行为。之前提到了两种知识图谱的构建接下来介绍如何使用算法去优化命名实体识别、关系抽取等。举一个命名实体识别的例子如“症状性动脉粥样硬化性椎动脉起始部狭窄的治疗”常规NER可能会把这个识别成三个实体疾病“症状性动脉粥硬化”身体部位“椎动脉”症状“狭窄”但这整个长句是属于一个完整的疾病。早期抽取的方式会充分地理解句中显式的词和词序信息。近几年采用一些格子结构做LSTM把词的表征和潜在的词信息整合到字符CRF中去。如2018年Lattice提到把每个字作为词根或者词尾加入到模型训练中。到2019年Lattice LSTM把类似的短语用Lexicon的方式把字和词构建一个graph再把graph特征融合到NER。但这种方式的复杂度非常高而且耗时长。在2020年复旦大学提到FLAT的方式引入了Transformer结构利用Transformer的self-attention解决长文本依赖问题。FLAT可以充分利用Transformer格子结构具备出色的并行化的能力效率上得到了很大的提升。图谱构建中肯定涉及关系抽取工作早期关系抽取采用pipeline的方式进行先做实体识别再做关系分类。但是pipeline的方式可能会造成实体识别错误间接会导致关系抽取也出现问题。借鉴了《A Novel Cascade Binary Tagging Framework for Relational Triple Extraction》文章联合学习的方式实现二分标注的框架。该框架对object、relation、subject 做函数映射而不像以前地方式去做离散的标签。它分为两个模块subject Tagger和 relation-specific object Taggerssubject Tagger先使用一个二分类去识别出subject的起始位置和结束位置拿到subject去做表示特征然后根据关系做一个多分类任务。每一个关系都是一个二分类识别。根据映射得到object起始位置和结束位置这样以一种联合的方式拿到实体关系三元组。构建概念图谱首先要解决两个问题第一个问题是如何抽取concept第二个问题是如何构建concept之间的层级关系这里借鉴了两篇论文分别是腾讯的《A User-Centered Concept Mining System for Query and Document Understanding at Tencent》和阿里的《AliCG: Fine-grained and Evolvable Conceptual Graph Construction for Semantic Search at Alibaba》。在实体抽取方面主要分为头部和尾部两部分。头部的instance由于头部的文章内容丰富可以用模板去识别。长尾部一直都是比较难的问题可以通过Phrase Mining或者数据标注的方式解决。如何构建概念间的层次关系可以通过用户的搜索点击行为去计算文章和概念的关联程度根据关联程度判断概念之间的层级。利用concept层次联合底层的专业医学实体和上层的业务构建一个完整的业务图谱。以贝叶斯模型为基础去判断一对一的边关系考虑全局的统计量或者文本的局部特征生成一些多边的关系。我们借鉴了王仲远老师的一些相关工作如MDL的原则等去做concept筛选。例如论坛帖子、药物、商品信息等可以通过中间的concept层与实体之间进行关联。03SMedBERT接下来介绍去年丁香园NLP组联合华师大何晓丰老师团队在ACL发表的文章《A Knowledge-Enhanced Pre-trained Language Model with Structured Semantics for Medical Text Mining》。这篇文章在医疗垂直领域下首次将知识图谱的医学实体和实体的结构化语义信息引入到预训练模型中。SMedBERT优化方向主要有两个第一个考虑实体类别和关系来丰富语义第二个是构建knowledge bridge将有一跳连接关系的邻居实体加入预训练模型中。SMedBERT对于结构信息捕捉有两个创新点首先是Mention-neighbor Hybrid Attention用来学习捕捉异构实体信息。什么是异构实体信息图谱中有一个新冠病毒节点与它相关的节点有疾病症状、治疗方案、检测方法等。将与新冠病毒节点一跳的相关实体取出根据type和节点node信息融合到encoder层。第二个创新点是Mention-neighbor Context Modeling主要是将链接实体的上下文信息做mask处理去预测。模型主要由三个模块组成T-Encoder、K-Encoder、Pre-training Tasks。首先T-Encoder可以挑选出比较重要的相邻实体使用方法是类似于PageRank的一种方式。其次K-Encoder进行mask操作self attention获得关键实体的信息对mask任务进行融合。在训练数据方面我们收集了约5G大小的中文医疗文本、30亿左右的token。在实验对比上选择了openkg、丁香园的KG、丁香园的RE在Graph Embedding上选用Trans-R在验证数据上选择了四组公开数据集如CHIP、WebMedQA等进行比较在模型方面选择了Bert、RoBert、Knowledge-Bert等进行比较。从对比效果上来看准确率有很高的提升并且在多个任务上都有明显提升效果然后对不同模型进行实体Embedding相似性能力比较。D1、D2、D3主要对不同程度的邻实体覆盖进行划分。如D2使用了高频重合的实体D3是低频实体去做比较。实验表明SMedBert对具有结构信息的捕捉能力较强。最终我们得到一个结论将相邻相似实体、相关实体的信息引入到语义信息中在下游任务上可以得到很明显的提升其中留下了我们的一些思考我们现在选择的邻居实体都是在一跳或者是两跳以内的如果有farther neighboring远端的实体关系该如何应用未来可以考虑如何更好地从长尾低频的医学实体学习语义信息。04工业落地与思考接下来介绍目前丁香园在业务场景的一些应用。先介绍我们在优化搜索上的底层架构。我们尝试把用户使用搜索的语义理解任务拆分成为五个步骤每个步骤解决实体识别准确性的问题包括文本纠错、名词短语抽取、命名实体识别、实体链接、语义理解。我们会通过结构化好的图谱对语义理解做优化例如进行意图识别时可以把graph embedding的特征拿过来也可以通过推理的方式获得相关实体还可以进行Query联想联想相关的实体词例如用户提到了某个品牌的商品它的主要功能是什么有什么类似的商品。我们利用concept结构图谱对文本结构化上做了一些提升。文本结构化对于提升搜索效果起到了非常重要的作用有了concept之后可以帮助我们从抽象的层面完成对文本打标签的工作那业界中比较好的方案就是先用TransE之类的知识表示模型把知识图谱train出Embedding然后将这些embedding融合进LDA的模型里面在模型中会用vMF分布代替原来的高斯分布去处理实体词的部分。如此以来我们就会对一篇如“麻醉不良习惯”的帖子中的讨论帖子抽出如“麻醉医学”和“麻醉的不良习惯”这样的关键词。目前Query扩展的问题主要有两类方法第一种利用query词和document词的相关性去构建一个贝叶斯模型扩展的结果是document词或document中出现的一些词组帮助在召回阶段扩大潜在用户想要的那些文本。第二种把它作为一种翻译模型思路是从query词翻译到document词。早期比较朴素的方案是用一个EM算法去找两类词的对齐关系。现在新的方案都是上神经网络去train一个生成模型来做这个工作。有了concept层之后用一些很简单的策略就能有不错的效果比如我们会直接使用相关性的方式也就是第一类方法去建模就可以把原始query向concept层上扩展。比如“哈萨克斯坦”可以扩展出“新冠疫情”或“不明肺炎”同样在电商场景下我们可以利用扩展的concept和其他的实体关系做二级扩展比如“产褥垫”可以扩展出“待产包”然后再从待产包扩展出“卫生巾”“纸尿裤”。这样的应用也带了一点推荐的意思。接下来介绍语义匹配早期语义匹配使用双塔模型Bi-Encoder实现。Bi-Encoder优势是可以将候选集向量进行离线计算线上预测只计算Context Encoder。但其中有个问题——把所有的实体信息放到一个固定的向量中去可能会导致细粒度的语义缺失无法精准地做匹配。于是出现了Cross Encoder它类似Bert预训练的方式把两个句子进行一个拼接放入Encoder中去再去打分。这种方式可以达到很好的语义学习效果但没办法实时复杂度比较高并且比较慢。前几年出现Poly Encoder将Context Encoder多个向量进行self-attention后融合这种方式比Bi-Encoder更好地保留丰富的语义信息又将candidate embedding做好离线计算再用向量索引方式去做召回和打分。我们在Poly Encoder之上做了一些改进例如把SMedBERT引入到表示层并且引入对比学习的优化比较经典的是ConSERT和SimCSE例如美团去年提到的一个对比学习的方法实际应用中在计算句子相似度的时候会有很高的打分。这样虽然可以获得想要的内容但在召回时不好控制召回的数量误差也比较大。加入对比学习后会发现可以更好地解决BERT坍缩问题。未来挑战主要有三个方面首先训练数据成本高因为医学领域数据资源比较少如何降低人工成本形成一个良性的数据闭环是我们首先要做的。第二随着业务的不断扩展当出现一个新的业务时数据量会比较少怎么提升已有图谱的复用性历史相关内容怎么去利用怎么去做高质量的图谱融合。最后对于长尾低频的用户行为如何更好地理解识别用户意图是未来的一个挑战。05QAQ1SMedBert是否有公开A1在GitHub上已经公开。Q2Token Embedding后如何与知识图谱进行融合A2通过Trans方式将知识图谱获得Graph Embedding表示向量与token Embedding进行拼接。之前提到的Poly Encoder可以把context encoder做整合进行self-attention获得更多语义信息再进行下游任务。在过程中不仅做匹配单任务也对多任务进行优化。之前提到的instance做concept聚类也可以表示学习上的多任务。Q3丁香数据来源有哪些A3医学书籍、药品说明书、科普文章等。分享嘉宾OpenKGOpenKG中文开放知识图谱旨在推动以中文为核心的知识图谱数据的开放、互联及众包并促进知识图谱算法、工具及平台的开源开放。点击阅读原文进入 OpenKG 网站。