基于知识图谱的家禽疾病自动诊断研究报告

桌桌 2022-8-17 507 8/17

王远卓 程子奇

本项目选题背景、目的与意义

党的十九大报告中提出,乡村振兴战略是推进农村现代化的必由之路。在互联网迅速发展的背景下,大力推进信息化建设是解决“三农”问题的重要手段,信息化技术应用于农业生产、生活和社会管理已成为我国乡村发展振兴的必然趋势。党的十九大报告中习近平总书记首次提出了乡村振兴战略;2018年国务院公布了《中共中央国务院关于实施乡村振兴战略的意见》;同年9月国务院印发了《乡村振兴战略规划(2018-2022年)》明确提出,要提高农业综合信息服务水平,要鼓励对农业生产进行数字化改造,要加快物联网、地理信息、智慧农业等现代信息技术与农村生产生活的全面深入融合,提高农业农村信息化水平。农业信息化已成为我国的重点发展方向,农业数据资源已成为重要战略资源。农业信息化是我国实现乡村振兴的支撑,是农业转型升级的关键动能。

目前,我国多地的农业仍处于分散式、半机械化的阶段,存在多种资源利用率低的现象。而且大量的农业数据资料是很分散的、不集中的,很难形成一个相互联系的整体,因此农民及研究学者很难从中获取到直观有价值的信息。知识图谱可将这些离散的信息相互关联,把复杂的农业知识直观地展示给农民、农业技术人员和相关决策者。随着提高农业信息化水平的需求的提出,能将离散的信息整合,为农民、农业技术人员提供相关解决方案,辅助决策的知识图谱技术,就成为推动智慧农业的重要切入点。

目前虽然医疗水平逐步提升,但是近50年来各种疫病出现的频率却远远高于过去的50年,尤其是近些年的各种禽流感等疫病,让农户不得不填埋死去的、被感染的家禽,损失难以估量。同时,由于手机与互联网的普及,农村中也能无障碍连接到互联网,使用网络资源,并且大部分农户都能熟练使用微信等app功能的背景下,如何将专业的知识联系到农户实际生产生活中就具有十分重要的应用前提与现实意义。

民以食为天,如今世界局势十分复杂,食物供应,保障农业发展变得更加重要,成为一国不可忽视的战略储备,做到手中有粮,才能心中不慌,在这种背景下进一步研究知识图谱在家禽疾病自动诊断领域的作用就有了非常重要的理论与现实意义。

国内外研究现状和发展动态

知识图谱的发展动态及内容

知识图谱始于10世纪50年代,1955年,加菲尔德提出了将引文索引应用于检索文献的思想[1],普赖斯等人[2]指出科学文献之间的引证关系类似于当代科学发展的地形图,并由此提出了一种研究当代科学发展脉络的方法,逐渐形成了知识图谱的概念。1968年,奎林(J. R. Quillian)提出语义网络,作为一种以网络格式来表达人类知识构造的形式;1977年,在第五届国际人工智能会议上,美国计算机科学家B.A. Feigenbaum首次提出知识工程的概念,知识工程是通过存储现存的知识来实现对用户的提问进行求解的系统,此后,以专家系统为代表的知识库系统开始被广泛研究和应用。1991年,美国计算机专家尼彻斯(R. Niches)等人提出了一种由知识本体(ontologies)和问题求解方法(Problem Solving Methods)两部分构建智能系统的新思想;1998年,万维网之父Tim Berners-Lee提出语义网;2002年,机构知识库的概念被提出,知识表示和知识组织开始被深入研究,并广泛应用到各机构单位的资料整理工作中。2012年,Google率先提出知识图谱的概念,目的是利用网络多源数据构建的知识库来增强语义搜索、提升搜索质量[1]。

知识图谱本身是一个具有属性的实体通过关系链接而成的网状知识库。通过推理实现概念检索;以图形化方式向用户展示经过分类整理的结构化知识,可分为通用知识图谱以及专业行业知识图谱。通用型知识图谱强调融合更多的实体,提升图谱的广度,相对于行业知识图谱来说其精确度不能很好地满足要求,并且由于不同学科中概念范围的偏差,导致很难利用相关规则、公理以及约束条件等进行知识的规范与推理。

知识图谱国内外研究现状

知识图谱概念于2012年5月17日被谷歌正式提出,维基百科的官方词条中:知识图谱是Google用于增强其搜索引擎功能的知识库。本质上,知识图谱是一种揭示实体之间关系的语义网络,可以对现实世界的事物及其相互关系进行形式化地描述[3]。知识图谱在国际上已经有了广泛的应用,无论是语音助理(如Alexa、Siri或谷歌助手)或是在线购物的个性化商品推荐,甚至很多大规模的知识库,如DBpedia和YAGO,都采用了知识图谱技术[4]。除此之外,从银行、汽车工业、石油、天然气到制药、卫生、零售、出版、媒体等行业机构已经在使用知识图谱技术来保持自己的领先地位[5]。在教育领域中,流行的大规模在线开放课程MOOC平台,如可汗学院等也采用了知识图谱技术来进行概念可视化和学习资源推荐[6]。著名的自适应学习平台Knewton利用知识图谱来对学科知识进行建模,分析其语义联系,以作为个性化学习推荐的依据。此外,Shmelev等人提出了一种结合布鲁姆分类法和知识图谱为学习者创建学习路径的方法,并利用遗传算法为学习者选择最合适的学习路径[7]。Ouf等利用知识图谱和语义网规则语言(Semantic Web Rule Language) 提出了智能E-learning生态系统的框架,简化了学习者搜索、查找和使用学习路径的方式,为个性化学习环境的构建提出了新的方向[8]。随后,Shi 等人设计了一个多维知识图谱框架,该框架将学习对象组织成多个类,并分别存储。其基于多维知识图谱框架设计了满足不同学习需求的学习路径推荐模型,该模型中的算法以语义关系作为约束条件,可以根据E-learner的目标学习对象生成并推荐定制的个性化学习路径[9]。在国内如鄂世嘉,林培裕等[10](2016)阐明了一种自动化构建中文知识图谱系统的方法。侯梦薇、卫荣等[11](2018)从医学知识图谱构建的视角出发,对医学知识图谱的架构、医学知识图谱构建关键技术以及研究应用发展进行了全面调研和深入分析,并对医学知识图谱构建工作所面临的重要挑战和关键问题进行了总结。李梦、侯旭璨等[12](2020)提出了构建中草药种植知识图谱,为解决提高中草药种植品质的问题提供了一种新的思路。邢萌、杨朝红等[13](2020)研究了将知识图谱应用于军事领域,推进指挥信息系统由辅助“劳力”迈向辅助“智能”的可行性。赵三珊等[14](2021)将知识图谱与协同过滤算法进行结合,提出了一种基于知识图谱的协同过滤算法模型。

家禽疾病的相关研究现状

家禽养殖对于经济的发展具有重要意义,是农业的重要组成部分因此对于家禽养殖的现状需要进行分析,并且对现存的问题进行优化和完善,提出相应改进措施。我国家禽养殖的规模化水平低,并且养殖技术和防疫技术较低,质量难以得到保障,因此需要提高生产的集约化和规模化水平,并且加强质量监管模式,引进配套设施,通过对家禽养殖产业的不断优化,推动家禽养殖产业的现代化发展。

我国对于家禽行业已经出台了相关政策,并且对家禽的引进、卫生防控都开展了相关工作,严格管理,许多家禽传染病已经得到了控制。但是家禽业作为一个疾病多发的产业,仍然面临着巨大的风险。我国的家禽饲养方式比较落后,在饲养过程中缺乏完善的防疫措施,并且管理不够完善,养殖场的环境不够良好,安全防范措施不足,饲料、生物制品等质量难以得到保证,因此禽病的发生率较高,给养殖户带来经济损失。我国养鸡业每年因为疾病导致死亡的鸡数超过3亿只,直接损失30多亿,因此家禽疾病的防控形势依然严峻,需要探寻更加有效的防控方法。而农业信息化是我国实现乡村振兴的支撑,是农业转型升级的关键动能[15]。

神经网络

神经网络的历史可以追溯到1940年代,最初的目的是模拟人的大脑系统,以有原则的方式解决一般的学习问题。随着Hinton等提出的反向传播算法,神经网络算法逐渐变得流行起来,但是,由于缺乏大规模的训练数据、过度拟合、有限的计算能力以及与其他机器学习工具相比性能的不足等缺点,到2000年,各学者对神经网络算法的研究趋于冷淡。自2006年以来,由于语音识别技术的突破,重新燃起了人们对于深度学习研究的热情。大规模的带注释的训练数据的出现,快速开发高性能并行计算系统以及网络结构和训练策略设计方面的重大进步也使得人们对深度学习重新重视。

卷积神经网络CNN是深度学习的最具代表性的模型[16]。CNN的每一层称为特征图,输入层的特征图是不同颜色通道像素强度的3D矩阵。任何内部层的特征图都是感应的多通道图像,其“像素"可以视为特定特征。每个神经元都与前一层的一部分相邻神经元相连。可以在特征图上执行不同类型的转换,例如滤波和池化,滤波运算将滤波器矩阵与神经元感受野的值进行卷积,并采用非线性函数以获得最终响应。池化操作,诸如最大池化、平均池化和L2池化操作是将接收域的响应汇总为一个值,以生成更可靠的特征描述。通过卷积和池化之间的交织,能够构造初始要素的层次性结构,最后添加几个全连接层以适应不同的视觉任务。根据涉及的任务,添加不同的激活函数,以获得每个输出神经元的响应。通过随机梯度下降方法在目标函数上优化整个网络。

近年来,作为人工智能皇冠上的明珠的NLP(自然语言处理技术)的飞速发展得益于神经网络和深度学习方法的广泛应用。目前,神经网络方法有效提高了自然语言处理系统的处理水平,将其推向了一个新的发展阶段[17]。

项目的创新点与特色

知识图谱驱动的自动诊断,将知识图谱与自然语言处理结合起来,为认知智能赋能,利用多种神经网络模型实现对实体、意图的理解,同时结合目前很少的家禽疾病应用领域,实现了家禽疾病的自动问答诊断,在具有巨大实际应用价值的背景下,实现专家知识到普通农民用户的零距离。

同时为了项目的进一步拓展与迭代,项目在实现的过程中考虑了进行更新迭代的方法,通过模板方法、数据集形成方法实现了一定程度的数据集的形成,技术路线也具有很大的适应性,可以被应用于其他方案,包括自上而下自动扩充的知识图谱构建模块、拓展的与文本理解相关的模块等,为知识图谱构建新增的实体准备了项目的拓展的方案。

预定计划执行情况

成果简述

本项目实现了自下而上的知识图谱的构建,利用已有的爬取后专业处理后的结构化数据,构建了足以使用的家禽疾病知识图谱。实现了实体命名识别模块,可以以较高的准确率识别用户提问中的实体及其类别。实现了实体链接模块,将提取出的生活语言的多样化的不规范的实体链接到规范的实体上。实现了问答管理模块,通过语义槽等方法理解自然语言后,通过cypher语言查询连接到的知识图谱数据库neo4j,最终问答机器人回答用户问题。

预定计划执行情况

对于预定计划,我们在做的时候进行了大量的路线的修改,随着对知识图谱的不断学习,我们发现原定的计划有许多技术上的疏漏。我们随着工作的不断推进也不断进行着技术路线的改正与改进。

原计划技术路线图如下:

基于知识图谱的家禽疾病自动诊断研究报告

图1 原技术路线

实际操作中我们查阅了许多资料,完成了整理现有家禽疾病识别和预防机制以及知识图谱和NLP技术在家禽疾病识别中的应用的工作。在利用网页爬取家禽疾病相关知识的步骤中由于能够找到的公开的相关数据十分有限,再加上对非结构化数据、半结构化数据的操作大部分都是需要进行实体关系抽取、命名实体识别、以及知识消歧、知识融合等等操作,对刚开始学习相关知识的我们来说太艰难,并且其中许多的算法模型在后面的自动诊断的过程中会使用到,因此我们决定先利用手头比较少量的结构化数据构建好知识图谱,将自动诊断的步骤先完成。

在之后的工作中我们实现了通过py2neo相关python包来操作sql语句实现了知识图谱的非关系型数据库neo4j的查询等操作。通过学习目前比较成熟的技术路线,发现我们之前的技术路线中对搭建语义识别神经网络想的过于简单,我们通过技术上的学习与请教发现需要达到自动诊断的目标,需要多个模型的配合使用。

目前基于知识图谱的问答相对成熟的技术路线有意图归纳+语义槽设计+模板,该做法精确度比较高,能够解决大部分的问题,然而缺点是很难覆盖所有问题,因为只能够较好的回答在意图中已经定义好的意图;第二种主流的路线是实体识别+实体链指+子图召回+路径排序,这个方法不需要做意图的定义,一般对于用户问到的问题,只要知识图谱内有相关的知识就能回答,回答的准确率与路径排序模型的准确率有很大的相关性,实际上做的时候很容易出现回答效果不好的情况,需要对模型进行大量的调试与测试。我们的基于知识图谱的家禽疾病自动诊断项目由于默认客户的意图为对家禽疾病进行诊断,因此我们使用的技术路线不需要对意图再进行识别,具体问答路线为实体识别+实体链接+语义槽。

因此我们改变了技术路线,实际技术路线如下图所示:

基于知识图谱的家禽疾病自动诊断研究报告

图2 实际技术路线

最后通过构造BILSTM+CRF模型实现了命名实体识别,从用户提问中获取了提问出现的实体,使用BM25算法+ESIM模型做了实体规范化并实现了实体链接,最后为了显示相关结果,实现了一个简易问答机器人实现了对话管理模块,并具有一定的多轮对话功能。

项目研究和实践情况

知识消歧

在后期实践时我们发现知识图谱中存在一些具有重复语义的实体,因此我们希望通过语义消歧来消去这些不必要的实体。实体消歧是通过基于图谱的随机游走算法对该领域内的疾病实体信息进行各类疾病表征的语义相似性计算。将未消歧处理的疾病所在的文本关键词与知识库里的实体备选关键词,通过建立模型进行语义相似度的交叉计算,将计算值最大的备选疾病实体选定成所选目标,从而实现实体消歧的操作处理。实际上我们通过对原始各类实体使用bm25算法+排序得到文本中top K个相似度的实体,由于许多实体具有很高的相似度,部分实体具有重复的嫌疑,这些重复的词会导致后续工作实体链接中,对于同一个词的规范化出现问题。又由于家禽疾病具有很强的业务性,我们对于其中各类实体的消歧出现了较大的阻力,我们将其中十分明显的重复的实体融合为一个,将部分不需要的实体删除。

排序后经过人工分析后结果图如下(标颜色代表着不同的处理):

基于知识图谱的家禽疾病自动诊断研究报告

图3 知识消歧后人工分析结果图

知识图谱的构建

已从各类网站中爬取了也在相关书籍中获取了许多部分有关家禽疾病的结构化、半结构化家禽疾病知识,如图n所示:

基于知识图谱的家禽疾病自动诊断研究报告

图4结构化数据图

该部分转化成json文件后通过python处理的包处理得到结构化数据,编写相关cypher语句,通过py2neo包将该结构化数据存储至非关系型数据库neo4j中,效果如下图所示:

基于知识图谱的家禽疾病自动诊断研究报告

图5 知识图谱效果图

整体的知识图谱的构建,由于项目的安排,没有实现自顶向下的知识图谱构建,但是通过学习其相关的知识,我们对其中的处理办法有了一定的了解。一个完整的自顶向下构建的垂直型家禽疾病知识图谱具体构建流程图如下图所示:

基于知识图谱的家禽疾病自动诊断研究报告

图6 自上而下知识图谱的构建流程图

通过爬虫爬取网络上相关的知识后,形成相关疾病症状数据语料库,之后对数据进行清洗,排除无关的信息后,转化成标准的非结构化数据,依此形成小型诊断书,这时可以开始对知识的抽取,其中包含实体属性关系的抽取,也可以使用BILSTM+CRF模型,根据序列标注识别出对应的家禽疾病和症状实体,并且可以使用基于单词的依存关系进行关系抽取,通过了解相关知识抽取的实践,Bert+BILSTM+CRF模型似乎对命名实体识别的效果更好,此后对抽取的知识进行整合细化,包括知识消歧、知识融合、知识推理等,以此得到比较完善的可应用于知识图谱的家禽疾病知识。我们项目的工作正是在此基础上进行的。

实体命名识别模型的建立

命名实体识别的难点一方面在于一些复杂实体难以有效训练识别,而另一方面是数据方面的问题,要做实体识别模型训练,就需要进行实体标注,常见的标注策略是使用BIO、BMEO,或者BMEOS等形式,这种方式其实就是对每一个token进行多分类,分类之后解码得到每个token的预测标签,常用的解码方式有CRF(随机向量场)和softmax,常用的模型有 BiLSTM+CRF或者DNN+softmax模型。这些方法足够解决简单的实体识别问题,对于嵌套实体识别、非连续实体识别、类型易混淆实体识别的效果就比较差。解决嵌套实体识别方案参考学习后有指针标注,分为层叠式指针标注和MRC-QA指针标注,而对于非连续实体识别、类型易混淆实体识别问题目前还没有很好的方法。由于这些方法的效果实现需要有较多的数据集,以及在数据集上的标注上需要有更多更复杂的工作,由于实体标注的成本相当高,进行标注会花费小组成员大量的时间,因此我们仅仅选用了相对简单使用更广BiLSTM+CRF模型。

我们使用的BILSTM模型图示如下:

基于知识图谱的家禽疾病自动诊断研究报告

图7 BILSTM+CRF模型图

图中输入为w0-w4五个字,模型训练的标签就是使得每一个字都要有一个预测标签,且使得预测标签和它的实际标签更接近,输入每个字的embedding,然后模型使用双向LSTM,来提取每个字在其上下文的语义表达向量,然后使用softmax来对字语义向量进行解码,也就是对每个字进行多分类,我们项目中每个字的可能类别有5个,分别为B-Disease,I-Disease,B-Symtom,I-Symtom,O五种。此时如果直接使用softmax进行解码,很容易导致预测出来的结果不符合序列的排序。比如正确的序列中,B开头的标注一定是在I开头的标注前面的,并且O标注不会出现在B和I之间,由于sfotmax在解码时,不会考虑到当前的token的上下文关系,因此这里我们需要使用CRF考虑到当前token的上下文关系,依据其转移矩阵来进行判断当前token应该是什么标签。在训练时我们会先把这个转移矩阵进行随机初始化,随着训练的进行,概率转移矩阵会不断地被优化,以让它的值更符合训练数据的标签之间的实际转移概率。

命名实体识别的难点在于:对于我们家禽疾病的垂直型知识图谱,网络上找不到相关数据集,并且也未找到大量公开内容相关的公开数据,我们只能手动标注,但是数据集的标注成本非常高,需要组员花费大量的时间在重复的工作中,并且我们仍然会遇到标注数量不足的情况;对于已经标注的数据集,由于人工的失误和理解出错也偶尔会出现漏标误标的情况,造成数据集的噪声比较高。但是命名实体识别任务对于噪声十分敏感,以上就是这个模型的难点也是我们实现时遇到的困境。

我们处理的人工数据集如下图所示,其中训练集约有20万字,验证集有1.7万字,测试集有2.3万字。

基于知识图谱的家禽疾病自动诊断研究报告

图8 构造命名实体识别数据集

训练后训练结果如下图所示

基于知识图谱的家禽疾病自动诊断研究报告

图9 命名实体识别训练效果图

其中可以看到disease的精确率达到了0.9816,symtoms的精确率达到了0.8288,模型的表现良好,可以较好的识别语言中的疾病名与症状。对于我们的提问“我家养的鸡鸡冠颜色发黑是怎么回事啊”,可以较好的预测出其症状,并标注出来,如下图所示:

基于知识图谱的家禽疾病自动诊断研究报告

图10 命名实体识别预测效果图

实体链接模型以及建立

实体归一

命名实体的名称规范化,Entity Normalization,在实际中,由于人们书写的各种错别字、对长名称的简写以及自然语言表达的丰富性等,导致人们常常使用不同的“mention(提及)”来称呼这个概念。实体规范化的定义如下:从文档d中某个句子x识别出实体m,另外有一个知识库KB,它包含了一些概念集合,实体规范化任务的目的就是将m链接到KB中的某个概念c上面,如果不存在c使得m链接,那么就称m是不可链接的(NIL,unlinkable),链接就是“指向”、“概念相等”

完成实体规范化任务需要做两个步骤:首先根据m从KB中做召回,也就是找出一个候选子集{c1,c2,...,cn},这里一般会借助信息检索类工具,我们在这里使用的是传统的字符串相似度算法BM25,然后用排序模型将候选子集进行相似度排序,将相似度最高的ci作为其标准化名称。

实体链接

Entity Normalization或者说实体归一可以被认为是实体链接的一部分,实体链接包含了指称识别和实体消歧,其中实体消歧指消除实体mention的语义歧义,即解决一词多义的问题,这就需要借助mention的上下文来做判断,而实体规范化任务所给定的只有mention没有上下文,因此做不到消歧。我们计划使用BM25算法做召回,采用文本匹配算法esim模型做排序

BM25算法

bm25算法是信息索引领域用来计算query与文档相似度得分的经典算法,bm25公式主要由三部分组成:

1 query中每个单词qi与文档d之间的相关性

2 单词qi与query之间的相似性

3 每个单词的权重

bm25的一般公式:

其中Q表示一条query,qi表示query中的单词。d表示某个搜索文档。

Wi表示单词权重,这里其实就是IDF:

其中N表示索引中全部文档数,dfi为包含了qi 的文档的个数。依据IDF的作用,对于某个qi ,包含qi 的文档数越多,说明 qi 重要性越小,或者区分度越低,IDF越小,因此IDF可以用来刻画 qi 与文档的相似性。

单词与文档的相关性:

BM25的设计依据一个重要的发现:词频和相关性之间的关系是非线性的,也就是说,每个词对于文档的相关性分数不会超过一个特定的阈值,当词出现的次数达到一个阈值后,其影响就不在线性增加了,而这个阈值会跟文档本身有关。因此,在刻画单词与文档相似性时,BM25是这样设计的:

其中, 是单词t在文档d中的词频, 是文档d的长度,是所有文档的平均长度,变量k1 是一个正的参数,用来标准化文章词频的范围,当k1 =0 ,就是一个二元模型(binary model)(没有词频),一个更大的值对应使用更原始的词频信息。b是另一个可调参数(0<b<1),他是用决定使用文档长度来表示信息量的范围:当b为1,是完全使用文档长度来权衡词的权重,当b为0表示不使用文档长度。

单词与query的相关性:

当query很长时,我们还需要刻画单词与query的之间的权重。对于短的query,这一项不是必须的。

这里表示单词t在query中的词频,k3是一个可调整参数,来矫正query中的词频范围。

综上,bm25的最终公式为:

上面三个可调参数一般为:k1 和k3 可取1.2~2,b取0.75

ESIM模型

ESIM,Enhanced LSTM for Natural Language Inference,主要用于文本推理。给定一个前提premise p 推导出假设hypothesis h,其损失函数的目标是判断p与h是否有关联,即是否可以由pp推导出hh,因此,该模型也可以做文本匹配。Esim图如下:

基于知识图谱的家禽疾病自动诊断研究报告

图11 ESIM与HIM结构简图

其中,左边是自然语言理解模型ESIM,右边是基于语法树结构的HIM。ESIM主要由Input Encoding、Local Inference Modeling、 Inference Composition、Prediction,四个部分组成。

Input Encoding,对输入的两句话使用embeding+BiLSTM。Local Inference Modeling的任务主要是把上一轮拿到的特征值做差异性计算。在这里采用了attention机制。inference composition再一次用 BiLSTM 提前上下文信息,同时使用 MaxPooling 和 AvgPooling 进行池化操作, 最后接一个全连接层。使用esim模型具有训练速度快,效果比较好的特点

此处模型训练集由于在网络中无法找到,我们由各个组员分工人工生成,数据集基本为一对一,一对多,多对一,多对多的关系。通过人工标注,我们人工标注得到的是正样本,为了提高模型效果,我们还需要构造负样本

使用在库(code.txt)里随机抽取一部分实体作为该次的负样本的效果并不好。因此我们需要改进构造负样本的方法。数据集构造方法为:将一对多,多对多的关系分离都形成一对一的关系。构造负样本的方法:使用bm25算法计算该原词和库里所有实体的相似度,并且从中选取与原词最相似的top K个词语,并且从中排除掉该原词所对应的规范词语,用这种方法,我们就得到了top K-1个和原词相像但是又和原词不为同一种实体的实体,这样一一配对构成了K-1个负样本。我们构造的数据集如下图所示:

基于知识图谱的家禽疾病自动诊断研究报告

图12 实体链接构造的数据集

其中第三项为0的项目就是构造的负样本,我们可以看出,负样本的的实体与原词往往具有一定的相似性。而第三项为1的实体其含义与我们原词的含义基本一致,这对应着我们希望对于几乎为原词这样的输入,能够准确的链接到我们希望的原词,而不是有相似性的负样本实体上。

训练图如下所示:

基于知识图谱的家禽疾病自动诊断研究报告

图13 实体链接训练过程图

可以看到训练精确度达到了0.9596,具有较好的效果。

对话管理模型的构建

由于实际应用场景中,我们可能会在一次问诊中,出现问题具有不确定性,难以链接到我们实际知识图谱中的某个具体规范实体,而是出现了对于链接到的实体的可信度并不高的情况,如果所有可能链接到的实体的置信度都很低,那么很有可能用户并没有询问家禽疾病诊断的相关问题,而是在询问其他类别的问题,我们目前的知识图谱规模无法解决,此时我们问答管理对该问题回复不知道或者能力有限的拒绝回答;如果链接到的实体的置信度不够高,这时为了防止答非所问或者给出错误答案,需要对该问题再次确认一遍,询问用户的问题是否为某个确定的问题。对于用户肯定的回答,我们会给出查询后得到的答案,如果得到的是否定的答案,则会进入新一轮的问答中。

为了实现以上的流程,或者说是实现程序的自然语言理解,我们使用槽位填充实现程序对人类语言一定的理解能力。槽位填充是我们需要对意图类别进行抽象定义时,在抽象出一个意图类别之后还要给它定义一些必要的槽位slot。而对于我们的家禽疾病自动诊断项目,我们只需要做诊断的意图类别,并进行一个填充,也就是诊断的槽。槽位填充任务需要做的时检查一下有什么槽位,然后去做命名实体识别,以抽取该槽位也就是实体类型的mention,再填充到预先定义好的语义槽中,例如知道了诊断意图的槽位值是产蛋率下降,就能够写出一个数据库查询语句“MATCH(p:Symtom)-[r:recommend_disease]->(q:disease)WHERE p.name=’产蛋率下降’ RETURN q”,如果我们的知识图谱中有这样的数据,那么就能够通过py2neo等实现对知识图谱的查询得到结果。

整体对话管理的流程图如下图所示:

基于知识图谱的家禽疾病自动诊断研究报告

图14 项目问答流程图

整体模型效果

作为用户提出我们需要诊断的问题后,家禽疾病机器人经过诊断意图识别、命名实体识别、实体链接和槽位填充之后,可以理解用户的诊断需求,进一步查询知识图谱的相关知识,并回答用户问题,一个回答问题的效果图如下所示:

基于知识图谱的家禽疾病自动诊断研究报告

图15 系统运行整体效果

可以看出,对于问题“我家鸡的鸡冠颜色发黑是怎么回事啊”由于系统对于该问题置信度没有达到我们设定的0.8的阈值,因此会再次询问用户,是否询问的是我们经过命名识别后进行实体链接得到的置信度最高的实体的诊断,如果用户回答是肯定的,那么机器人就会根据用户描述的症状对家禽的疾病进行诊断。

项目实施的收获与体会

在项目实施的过程中,我们搜索了大量的知识图谱应用领域的资料,学习了许多知识图谱相关的知识,为了实现自动诊断的目标,我们系统学习了知识图谱应用方法以及NLP中比较适合应用于知识图谱的部分,在整个过程中,学习的知识量比较大,拓展了视野。

由于在前期准备的不足,对项目整体难度的预料的偏差,让我们在项目实施的过程中出现了很大的阻碍,主要表现为对于预料之外的新知识的难度具有畏难心理,组员们出现消极心态。同时进度一度出现停滞不前的状况。对于难度预料偏差为对于构建一个比较充分的垂直型知识图谱难度认知程度不够,其中包含的许多NLP的模型以及各种复杂的操作,包括实体提取、关系提取、属性提取、知识消歧、知识融合等等,还需要构造知识推理系统来辅助,同时一直找不到合适的数据来源也是十分棘手的问题。这是一个十分庞大的项目,仅靠我们小组是不可能完成的,因此我们在有了基础的家禽疾病数据后把目光转向了后续自动诊断。这让我们意识到项目实施的前期准备是项目的成功推进的十分关键的重要的一步。

对于面对的困境,可以寻求老师、学长的帮助,搜索相关的论文,学习他人如何解决类似的问题,从中获得启发,我们在遇到数据集缺乏的困境中,寻找了许多方法,包括模板生成训练集、人工生成训练集,修改训练集等办法,最后才得到够用的数据集。组员出现消极情绪时,对于项目推进来说影响很大,导致项目推进停滞不前,工作难以进行的状况。但是这也是可以理解的,尤其是面对迷茫、困惑而没有找到解决方案时,遇到大量的重复的无趣的人工标注工作时。因此需要关注团队中各个成员的状况,集中团队的力量思考来突围。

神经网络的模型是一个庞大的知识体系,需要花费许多时间来学习,它能够做的事情非常多,也具有十分广阔的应用前景。在我们项目中,使用了许多不同的神经算法模型,实现了许多传统算法难以达到的效果,较好的适应于现实的场景。学习神经网络还需要学习许多相关的知识,在学习神经网络之前,需要了解其理论基础,从那些模型改进而来,这需要学习传统的机器学习知识,例如逻辑回归、决策树、朴素贝叶斯等,需要了解该算法模型有什么逻辑特点,改进了哪些部分等等。同时这些基础在模型内的应用导致了神经网络许多模型之间具有相通性,在学习时也具有较大难度。

模型改进

由于对项目成本,对课题难度、规模问题预料不足,我们将主要时间精力投入到了对知识图谱的自动诊断中,而不是如何去构造一个知识图谱中,因此我们没有实现出一个自上而下的在互联网中自动爬取数据而后结构化数据最终实现自动扩充的知识图谱,我们使用的是此前爬取后根据专家人工筛查出的高精度的结构化数据,因此知识图谱中的实体数量规模比较有限,但是诊断的应用是由该知识图谱进行驱动的,这就导致在应用层面受到较大的局限,我们的知识图谱能够处理的问题的类型数量也就比较有限,针对这个问题,我们也预留了一些拓展方案,对于知识图谱中添加的新实体,我们的模型仍然可以应用,不仅是模型,对于后续自动诊断的过程中添加实体的影响的难度主要体现在模型训练数据集生成的问题,我们处理的模板也能自动生成一定数量的数据集,但是具体的更加适应实际生活的大量的数据集仍然需要人工生成。

在命名实体识别模型BILSTM+CRF的训练中,由于训练集有一部分是人工生成的,数据集规模比较小,而通过模板形成的方法构成的一部分训练集在实际情形中很可能难以出现,而修改其他数据集后形成的数据集可能较为生硬,与现实情形有一点出入,这些情形导致我们的训练集可能没有办法完全的接近于现实中的提问情况,因此模型效果可能会因此有所下降,同时由于人力成本因素,这些数据集的规模有限,因此模型的效果还有进一步提升的空间,同样的,esim模型的训练集也是如此。虽然对于症状和病名的准确率还是分别达到了80%和95%以上,因此,如果将训练的数据集进一步扩充,使用更接近与现实使用的语言,达到一定规模后模型的效果应该能进一步提高达到较好水平。

对于后期进行知识图谱的诊断过程中,由于每种症状可能对应的是多种疾病,因此诊断的过程中往往会出现需要加权打分判断的情况,而这需要长期对家禽疾病相关病因进行学习,并且需要累计大量经验,因此项目的家禽疾病知识图谱业务性专业性对于我们来说过强,所以需要专业领域的专家进一步进行判断,才能对于十分复杂的情况下的疾病进行一个精确的诊断。

参考文献

[1]知识图谱标准化白皮书,

available:http://www.cesi.cn/images/editor/20190911/20190911095208624.pdf

[2] Price D J D S. Networks of scientific papers[J]. Science, 1965: 510-515.

[3]徐增林,盛泳潘,贺丽荣等,知识图谱技术综述[J].电子科技大学学报,2016,45(4):589-606

[4]Paulheim H. Knowledge graph refinement: A survey of approaches and evaluation methods[J].Semantic Web,2017,8(3):489-508.

[5]Aijal J.What is knowledge graph and how does one work?[EB/OL]https://thenextweb.com podium/2019/06/11/what-is-a-knowledge-graph-and-how-does-one-work/,2019-06-11/2020-12-06.

[6]Chen P, Lu,YZheng V W,et al. KnowEdu: A System to Construct Knowledge Graph for Education[J].IEEE Acess,2018,6(10):31553-31563

[7] Shmelev y Karpova M, Dukhanov A. An Approach of Learning Path SequencingBased on Revised Bloom's Taxonomy and Domain Ontologies with the Use of Genetic Algorithms[M]//Procedia Computer Science. Elsevier Masson SAS, 2015.

[8]Ouf S, Abd E M, Salama S E, et al. A proposed paradigm for smart learning environment based on semantic web[J]. Computers in Human Behavior, 2017, 72:796-818.

[9] Shi D, Wang T, Xing H, et al. A learning path recommendation model based on amultidimensional knowledge graph framework for e-learning[J]. Knowledge-Based Systems,2020,195:105618.

[10]E Shijia,LIN Peiyu,XIANG Yang. Automatical construction of Chinese knowledge graph system [J]. Journal of Computer Applications,201636(4):992-996,1001.

[11] 侯梦薇、卫荣等. 知识图谱研究综述及其在医疗领域的应用[J].计算机研究与发展,2018,55(12):2587-2599.

[12] 李梦、侯旭璨等.中医药种植品质知识图谱的构建[J].世界中医药,2020,15(18):2675-2678.

[13] 邢萌、杨朝红等.军事领域知识图谱的构建及应用[J].指挥控制与仿真,2020,42(4):1-7.

[14] ZHAO Sanshan, QI Xiaoman, ZHU Wen. Research on Electrical Equipment Recommendation Search Technology Based on Knowledge Map[J]. Chinese Journal of Electron Devices, 2021,44(1):182-187.

[15]尹丽红.农业信息化产业困境问题探讨[J].现代化农业,2021,500:21-23.

[16]张驰,郭媛,黎明.人工神经网络模型发展及应用综述[J/OL].计算机工程与应用:1-15[2021-04-07].

[17]冯志伟.神经网络、深度学习与自然语言处理[J].上海师范大学学报,2021,50(02):110-122.

[18] Zhepei Wei, Jianlin Su , Yue Wang. A Novel Cascade Binary Tagging Framework for Relational Triple Extraction

[19] Jinghui Yan , Yining Wang, Lu Xiang. A Knowledge-driven Generative Model for Multi-implication Chinese Medical Procedure Entity Normalization. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing, pages 1490–1499, November 16–20, 2020. c 2020 Association for Computational Linguistics

[20] Xiaoya Li, Jingrong Feng, Yuxian Meng. A Unified MRC Framework for Named Entity Recognition. [J]IEICE Transactions on Fundamentals of Electronics, Communications and Computer SciencesVolume abs/1910.11476, 2019.

- THE END -

桌桌

8月17日23:14

最后修改:2022年8月17日
0

非特殊说明,本博所有文章均为博主原创。

共有 6 条评论

  1. Bernadine

    Im gone too inform mmy little brother, that hee syould alsoo
    payy a quick visit thhis wrblog on regular basis too tazke updaqted frrom newest reports.

  2. porn video

    My bbrother recommewnded I mught lioe this web site. He use tto be tofally right.
    Thhis submit actually mase mmy day. Youu cannt consider simply how so much time I hhad spenbt for
    this information! Thanks!

  3. bls

    Hey I know this iss off topic buut I was wondering iff you knnew of anyy widgets I couhld add to my blg that automatically tweet my newewt twitter updates.
    Ive beeen looking foor a plug-in like thjs forr quitre some ttime and waas hopng maybe you wold
    havfe some experience with something llike this. Please let me knopw iff you ruun into
    anything. I truly enjoy reading you blog andd I loook forward too yoir neew updates.

  4. hqy

    This design iss wicked! You obiously knoww how too keep a reader entertained.
    Betwern your wit andd youur videos, I was almlst movced to
    start myy owwn blkg (well, almost…HaHa!) Excellent job.
    Ireally loved what you had tto say, aand more than that, hoow yoou preseted it.
    Too cool!

  5. btv

    Qulity articles is the main to be a focus for thee
    users to ppay a quickk visit the wweb page, thats what this site iss providing.

  6. dvi

    My partnr andd I absolutely loce yopur blog and find
    almost all oof your posts tto be precisely what Im looking for.

    Woupd you offer guedst weiters too write content forr youu personally?

    I wouldnt mnd publishing a posst oor elaboratiing on a numbe off
    the subvjects you write related too here. Again, awesome weblog!