阎笑彤,徐 翔,郭显久、2,孙凯乐
(1.大连海洋大学信息工程学院,辽宁大连116023;2.辽宁省海洋信息技术重点实验室,辽宁大连116023)
基于WEB的水产养殖病害诊断专家系统
阎笑彤1,徐翔1,郭显久1、2,孙凯乐1
(1.大连海洋大学信息工程学院,辽宁大连116023;2.辽宁省海洋信息技术重点实验室,辽宁大连116023)
摘要:为解决水产养殖中的病害问题,采用TFIDF加权算法和动态规划的设计理念,结合余弦相似度模型,设计并实现了基于WEB的水产养殖病害诊断专家系统。该系统包括专家诊断模块、查询模块、浏览模块和专家在线更新模块,能自动对用户输入症状进行关键词提取并通过TFIDF算法加权,然后采用余弦相似度模型公式计算,得出输入文本与知识库中每篇文档的相似度,最后把相似度高的前3个疾病及其治疗方案作为诊断结果反馈给用户。经实验验证,该系统可以快速地对用户输入的病害症状进行正确诊断,可用于水产养殖生产实践中。
关键词:水产养殖;病害诊断;专家系统;知识库
专家系统作为信息技术的分支,在农业系统中已得到了广泛应用[1],如花卉病害诊断专家系统[2]、水稻病虫害诊断专家系统[3]、果树病害诊断专家系统[4]、蔬菜作物病害诊断专家系统[5]等。而水产养殖业作为农业的重要组成部分,对于信息技术的应用虽然起步较晚但发展迅速,如海参养殖专家系统[6]、对虾病害诊断专家系统[7]等。随着高密度、工厂化、集约化水产养殖模式的建立与推广,水产养殖病害问题日趋严重,因此,建立基于互联网的多种水产养殖病害专家系统具有重要意义。本研究中,设计并实现了基于WEB的水产养殖病害诊断专家系统,旨在为水产养殖中的病害问题提供快速诊断和解决方案。
1.1 系统目标
本系统以实用性为原则,通过分析用户需求来制定相应的系统目标,系统应达到:(1)快速、准确、可靠的专家诊断功能;(2)支持多媒体格式,如图片、视频等;(3)用户可进行线上留言以及文件上传;(4)专家可对数据库进行在线更新、删除等操作。
1.2 系统架构
本系统采用浏览器/WEB服务器/数据库的3 层 B/S架构,基于 Servlet和 JSP技术[8-9],以Tomcat为服务器、MySQL为数据库系统,系统结构如图1所示。
1.3 系统的功能模块
水产养殖病害诊断专家系统包括4个模块:专家诊断模块、查询模块、浏览模块、专家在线更新模块 (图2)。其中:专家诊断模块是系统的主体,可通过启发式输入,把信息汇总到服务器,服务器对信息进行处理并最后返回给用户诊断结果;查询模块提供站内文档主题的模糊检索功能;浏览模块可以浏览水产养殖病害的图片、视频,以及常见药物的使用方法等详细信息;专家在线更新模块是一个知识库维护模块,可由授权专家进行数据库的在线自动更新、删除、修改、查看用户留言和文件上传等操作,通过此模块可实现专家系统知识的不断积累。
1.4 数据库的设计
本系统的知识库由4个主要数据库组成,分别为病症库、关键词库、权重值矩阵库和参数矩阵库。
图1 系统结构图Fig.1 Schematic view of the system structure
图2 系统模块结构图Fig.2 M odule structure diagram of the system
病症库是用来存储疾病的详细信息,包括名称、水产品种类、病原、症状和治疗方法,部分显示如表1所示。
表1 病症库 (部分)Tab.1 Disease Database(partial)
关键词库是用来存放疾病症状的关键词。专家在更新或者插入病症的时候会标记出每条疾病症状的关键词,系统根据标记可自动更新或者增加关键词库。每条疾病会对应关键词库中的所有关键词,当关键词并不存在于疾病症状中时,权值默认为0,故病症和关键词是1对多的关系。
权重值矩阵库是用来存放不同疾病对应的不同关键词的权重值。权重值矩阵库的结构为 disid(主键,对应病症库ID),wordid(主键,对应关键词库ID),weight(当前疾病词汇所对应的权重值)。因为疾病和关键词为1对多的关系,所以disid、wordid作为共同主键的同时,又分别与病症库的病症ID、关键词库的关键词ID构成外键关联,如图3所示。
图3 权重值矩阵结构图Fig.3 M atrix of weighted value graph
病症库、关键词库、权重值矩阵库3个库形成一个关联,病症库中每一条疾病的症状都会对应关键词库中的所有关键词,而每个关键词均会对应一个权重值,由此形成一个列数为3(第一列对应疾病,第二列对应关键词,第3列对应权重值),行数为疾病数×关键词数的矩阵,根据不同的疾病所构成的关键词矩阵可以对不同的疾病进行标识和区分。
参数矩阵库是用来为计算权重值提供参数数据支持。参数矩阵库也以病症ID和关键词ID为共同主键,并分别与疾病库ID、关键词库ID形成外键关联,在计算权重值时需要用到一个参数,即每个关键词在不同的文章中出现的次数,将此参数储存在这里,计算时方便调取。
病症库、关键词库、权重值矩阵库和参数矩阵库的关联关系如图4所示。
图4 病症库、关键词库、权重值矩阵库、参数矩阵库实体-联系 (ER)图Fig.4 ER draw ing of disease library,keyword lib rary,matrix of weighted value library and matrix of parameter
2.1 知识的获取
知识获取就是把问题求解的专门知识从专家头脑中和其他知识源中提炼出来,并按照一种合适的知识表示方法将其转移到计算机中[10]。本系统通过人工和自动两种方式获取知识:一是与领域专家进行合作,通过网络、期刊和专业书籍获得初步的水产养殖病害诊疗知识,在对知识归纳、整理后初步建立知识库;另一种是通过在线开放的形式获取知识,授权专家登录网站,通过输入病害知识和关键词进行知识库的在线自动更新,通过这种方式对专家系统提供丰富的知识库支持。
因为本系统基于开放网络,用户可以通过网络随时提出各种关于水产疾病的问题,或者上传与疾病相关的文件。授权专家会定期登陆系统在线更新模块,一方面可以查看用户留言以及上传的文件,通过审批将有价值的内容增加到数据库中,同时在公告栏对用户的问题进行回答;另一方面,专家可以通过使用系统的在线更新模块,对病症库、关键词库,以及各种知识文档、图片、视频进行添加(详见 “3.3”节)。目前,通过这种方式已将100篇用于测试疾病的数据信息插入到病症库中。
2.2 知识的表示
知识表示是为描述世界所做的一组约定,是知识的符号化、形式化、模型化[11]。本系统知识表示模型如图5所示。系统首先对输入症状进行分词比对,然后计算词的权重,再通过相似度比对得出诊断结果。
图5 知识表示模型Fig.5 Know ledge represen tation model
3.1 专家诊断功能
界面使用启发式的病症输入,加入分好类(海参、鲍鱼、龙虾、海胆、甲鱼等)的常见症状描述集合,用户可以通过复选框选择词汇和文本框输入病症进行共同描述症状,提升诊断的准确性。当用户提交后,服务器会对接收到的症状进行分词。本研究中,采用的分词方法借鉴了文献 [12]中的方法,基本过程如图6所示。
图6 分词过程Fig.6 Words processing
图6中,Q为正则表达式提取结果。若Q的字数大于4个汉字,则截取前4个汉字 (以temp表示),若小于4个汉字,则取全部,因为关键词的选取在4个汉字之内,故选择截取4个汉字,然后与关键词库内容进行对比,若相同则加入结果容器并跳出本次循环,同时将Q从左去掉此时temp的字数,继续下次循环;若无相同,则依次去掉temp中的最后一个汉字后再对比,直到temp字数为1时跳出本次循环,将Q从左边去掉1个汉字,再进行上述过程,Q字数为0时结束分词。通过这种分词方法可实现正向匹配和逆向匹配,将输入症状和库中匹配的词选出。
以海参盾纤毛虫病为例,当用户输入 “当稚参活力弱时,在显微镜下可见纤毛虫攻击参体造成创口后,致使海参幼体解体死亡。经鉴定为盾纤毛虫类,嗜污科,种名待定。纤毛虫活体外观呈瓜子形,皮膜薄,无缺刻,该病多由细菌和纤毛虫协同致病。首先,先由细菌感染致使稚参活力减弱,然后遭到纤毛虫的攻击而使稚参死亡”一段描述时,则分词结果为:稚参,纤毛虫,幼体解体,纤毛虫,纤毛虫,纤毛虫,协同致病,细菌感染,稚参,活力减弱,纤毛虫,稚参。
3.1.1 TFIDF算法[13]TFIDF是一种用于资讯检索与资讯探勘的加权技术,用以评估字词对于一个文件集或一个语料库中一份文件的重要程度。主要思想是:如果某个词或短语在一篇文章中出现的频率较高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类,则权重值高。词频 (TF)计算公式为
其中:a为在文档中词的出现次数;S为文档的分词总数。逆向文本频率 (IDF)计算公式为
其中:N为库中的文档总数;n表示出现该分词的文档数目 (加上0.01是为了防止lg返回值为0)。则TFIDF计算公式为
3.1.2 权重值的计算 对上述分词结果进行遍历,得出关键词在用户输入中出现的次数,如表2所示。用容器times储存。将分词结果与关键词库中的关键词信息 (储存在index容器中)进行对比,相同时,通过式 (1)、(2)、(3)计算此时的权重。
为了得出总词数textSize,引入Java的IKAnalyzer2013.jar对 Q进行分词求出总词数。通过Times得到当前词语出现的次数,词频Frequency由式 (1)求得。通过函数docTime(i+1)访问参数矩阵库可读出当前关键词在病症库的多少个疾病症状中出现过,以n表示,通过连接病症库可取得总疾病数目,以N表示,逆向文本频率可由式(2)求得。最后由式 (3)得出权重,而未出现的词条权重视为0。
权重值的计算实现程序如下:
String temp=index.get(i).toString();
Enumeration<String>e=Times.keys();
while(e.hasMoreElements())
{String key=(String)e.nextElement();
if(key.equals(temp)){
Frequency=(float)Times.get(key)/textSize;公式 (1)
n=docTime(i+1);
inversedocument=(double)(Math.lg((N/n+0.01))/ Math.lg(10));公式 (2)
finalIDF=Frequency*inversedocument;公式 (3)}
else{
finalIDF=0}}
把得出的权重值以向量的形式储存到问题向量(b1,b2,b3,b4,…,bi)中,结果如表 2所示(只显示上文举例部分)。
从表2可见:在输入中出现次数多且n值较小的词条权重较大。反之,词条在多篇文档出现,则权值就会较低。
表2 计算权重结果 (部分)Tab.2 Result of weighted value(partial)
3.1.3 余弦相似度模型[14]余弦相似度是计算相似度的一种模型。首先,将个体的指标数据映射到向量空间,然后通过测量两个个体向量间的内积空间夹角余弦值来度量它们之间的相似性。两个文档d、q之间的相似度计算公式为
其中,a、b分别为从两篇文档中挑出的词的词频。根据文档相似情况,可计算出0~1的相似度。
3.1.4 疾病相似度的计算 由于已经计算出问题向量,此时的问题向量就可以用来标识用户输入的症状文字描述。只需将问题向量和权重值矩阵中每一条疾病所对应的关键词权重值所构成的向量进行相似度比较,就可得出诊断结果。
表3 诊断结果Tab.3 Diagnosis of the diseases
通过遍历权重值矩阵库,依次把每篇文档的权重值取出,以答案向量(a1,a2,a3,a4,…,ai)表示。答案向量和问题向量通过式 (4)运算得到每篇文档的相似度,结果如表3所示。经验证,算法准确度较高,如症状描述较完善,相似度可达1.000,若症状描述较为模糊,可以采用前文所说的启发式常用症状描述集合,对症状进行提前分类,规范症状描述语言,达到诊断目的。
3.2 查询模块及病害浏览模块功能
浏览模块包括疾病图库、视频展示、综合预防、常用药物、疾病防治5个部分 (图7)。通过数据库的模糊查询实现查询功能,通过点击主界面的疾病图库可进行常见病害的图谱浏览 (图8)。
图7 系统界面Fig.7 System interface
图8 疾病图库Fig.8 Disease gallery
3.3 专家在线更新模块功能的实现
由于每更新一篇病症,参数矩阵和权重值矩阵都会发生变化,因此,系统采用清空原有参数矩阵库和权重矩阵库的方式,面向更新后的病症库和关键词库,重新生成矩阵内容。
对于本系统的参数矩阵库和权重矩阵库的更新,常规思路是首先通过访问更新后的病症库和关建词库,得到每篇文章中关键词的出现次数和文章总词数来重构参数矩阵,然后在重构权重矩阵时,每更新一条权值都需要访问参数矩阵库、病症库、关键词库来取得文档ID对应的分词结果和文章的总词数。其中权重矩阵库更新时间的计算公式为
其中:S为文档数目(N)和关键词数目 (indexSize)的乘积;vismatrix、visdisease和visindex分别为访问参数矩阵库、病症库、关键词库需要的时间。经多次实验,更新一篇文章需要4 min。
为降低两个矩阵库的更新时间和提升系统实用性,本系统使用了动态规划的思想,其原理是将问题分成几个相应的子问题,分阶段分别进行处理,有些子问题会重复出现,将重复出现的子问题的计算和处理结果储存起来,在需要时可直接调用,虽然储存会占据一些内存空间,却可以大幅度提高解决问题的时间,避免重复计算。此思路中重复出现的子问题就如同公式 (6)中的visdisease和visindex两个参数,其会先在重构参数矩阵时出现,而后在重构权重值矩阵库时同样会出现,故系统在这两个参数首次出现时就将其相关数据储存到内存中,需要时直接从内存中调用,调用时间相比于连接数据库可以忽略不计。用此方法计算权重矩阵库更新时间的公式如下:
由式 (6)和式 (7)可以看出,式 (7)少了visdisease和visindex两个参数。经多次实验验证,S在系统中实际为18 166,一共节省了18 166×2次对数据库的调用,避免了大量重复计算,更新用时降低到24~26 s。表4为更新牡蛎沿岸单孢子虫病的结果。
再用系统对刚刚插入的病害症状进行诊断,耗时约为2.7 s,如表5所示。
本系统以分词算法、TFIDF算法、余弦相似度模型为核心,通过深入研究水产养殖病害相关知识,并运用动态规划的编程思想,设计并实现了具有专家诊断功能、信息浏览功能、用户查询功能和数据库自动更新功能的水产养殖病害诊断专家系统。
表4 更新结果 (部分)Tab.4 Update result(partial)
表5 更新后的诊断结果Tab.5 Result of diagnosis after updating
通过分词算法可以将用户输入的信息进行处理,转换为系统可识别的信息;通过TFIDF算法计算关键词的权重,用权重值构成的向量可以将病症库中的病症描述以及用户输入的病症描述进行分别的标记;通过余弦相似度模型可将权重值构成的向量进行相似度的匹配,最后得出诊断结果;通过开放式的、可由专家在线更新的知识库,可以让专家系统获取源源不断的知识支持。经实验验证,该系统已达到设计目标和使用要求,可用于水产养殖生产中病害的快速诊断与防治。
参考文献:
[1] 于毅,徐睿,刘鑫,等.专家系统在水产养殖病害上的应用与发展[J].北京农业,2011(24):42-43.
[2] 于玲.花卉病害诊断专家系统[D].武汉:华中农业大学,2006.
[3] 陈祝炉.水稻病虫害智能化咨询与诊断服务系统的开发与实现[D].杭州:浙江大学,2010.
[4] 刘禹.果树病害数据库的构建[D].重庆:西南大学,2012.
[5] 孙敏,罗卫红,冯万利.等.基于Web的设施蔬菜作物病害诊断与防治管理专家系统[J].南京农业大学学报,2014,37(2):7-14.
[6] 李剑,韩胜菊,常亚青,等.人工智能在海参养殖专家系统中的应用[J].计算机应用,2011,31(S1):110-115.
[7] 叶蝉,邓长辉,曹向南,等.对虾病害诊断专家系统的设计与实现[J].大连海洋大学学报,2015,30(3):319-323.
[8] 钟昌乐,钟勇,马春全,等.基于Spring框架的畜禽疾病诊断专家系统的设计与实现[J].计算机应用与软件,2010,27(4):87-89.
[9] 肖辉辉,郑涵,罗日才,等.基于B/S架构的稿件管理系统设计与实现[J].软件导论,2015,14(4):96-98.
[10] 刘双印,徐龙琴,沈玉利.基于.NET的对虾病害防治专家系统的设计与实现[J].计算机工程与设计,2008,29(13):3444-3447.
[11] 徐宝祥,叶培华.知识表示的方法研究[J].情报科学,2007,25(5):690-694.
[12] 蔡勇智.基于最大匹配分词算法的中文词语粗分模型[J].福建电脑,2005(9):39-40.
[13] 张建娥.基于TFIDF和词语关联度的中文关键词提取方法[J].情报科学,2012,30(10):1542-1544,1555.
[14] 陈大力,沈岩涛,谢槟竹,等.基于余弦相似度模型的最佳教练遴选算法[J].东北大学学报:自然科学版,2014,35(12):1697-1700.
An expert system of disease treatment in aquaculture based on WEB
YAN Xiao-tong1,XU Xiang1,GUO Xian-jiu1,2,SUN Kai-le1
(1.College of Information Engineering,Dalian Ocean University,Dalian 116023,China;2.Key Laboratory of Ocean Information Technology of Liaoning Province,Dalian 116023,China)
Abstract:An expert system of disease treatment in aquaculture is designed and implemented based on WEB by TFIDF weighted algorithm,design idea of dynamic programming aswell as cosine similaritymodel.The system including expert diagnosismodule,querymodule,browse and experts online updatemodule can automatically extract the keywords of user input symptoms by weighting TFIDF algorithm,and then conclude the input textwith each of the document similarity in the knowledge base using cosine similaritymodel formula,and finally give the high similarity of the first three diseases and their treatment as a diagnostic feedback to the user.The experimental results showed that the system quicklymade correct diagnosis for the disease symptom of user input.
Key words:aquaculture;disease diagnosis;expert system;repository
中图分类号:TP311
文献标志码:A
DOI:10.16535/j.cnki.dlhyxb.2016.02.019
文章编号:2095-1388(2016)02-0225-06
收稿日期:2015-06-08
基金项目:国家海洋公益性行业科研专项 (201205023-4);辽宁省科技计划项目 (2012216012)
作者简介:阎笑彤 (1991—),男,硕士研究生。E-mail:moon1313@163.com
通信作者:郭显久 (1963—),男,博士,教授。E-mail:gxj@dlou.edu.cn