APP下载

基于改进规则引擎的农业知识推荐系统

2012-05-04余文姣黄梦醒朱东海

计算机工程与设计 2012年6期
关键词:农业知识用例树形

余文姣,黄梦醒,朱东海

(海南大学 信息科学与技术学院,海南 海口570228)

0 引 言

随着市场经济和农业现代化的发展,农村地区对农业种养殖和病虫害等农业知识的需求也越来越迫切。如何实现在最恰当的时间向农民提供他们最希望得到的正确的农业知识,是农业生产领域亟待解决的问题。这个问题的解决可以参考当前在商业上广为流行的推荐机制,即通过推荐系统向用户推荐相关的信息。

当前在商业领域有很多比较成功的推荐系统,例如基于内容的推荐系统,基于协作过滤的推荐系统,基于关联规则的推荐系统,还有结合了多种推荐算法的混合推荐系统等等。但是面向农民的农业知识推荐算法和应用在商业上的推荐算法存在很大差异。因此虽然之前也有一些针对农民用户而设计的推荐系统,但是效果都不理想。归结其原因有以下两点:首先由于信息基础设施较差,农民很少上网浏览网页,系统很难获得农民对于产品的打分信息或者浏览记录。其次是农民获得的信息要求准确性高,例如种植技术、卫生防疫等等,而协作过滤推荐和其它推荐算法只是推荐相似的信息,因此不能够确保其准确性和正确性。另外由于农民判断能力较差,如果推荐的信息中存在错误,就有可能造成不可挽回的经济损失。

针对这种现状,本文通过对现有推荐模式和规则引擎的研究,结合农业领域知识推荐的特点,对传统的规则引擎进行改进,并将其应用到农业知识推荐系统中去,改进后的推荐系统在推荐知识的正确性和准确性上都有较大提高,使农民能够更加高效的获得需要的农业知识。

1 规则引擎模型分析

规则引擎起源于推理引擎,可以通过组件的形式嵌入到应用程序中,规则引擎的功能是将当前提交到引擎中的事实对象和加载到引擎中的规则进行匹配,激活那些符合事实对象的规则,从而根据规则中定义的执行动作,触发应用程序做出响应。一个典型的规则引擎包含3个部分:工作存储器、规则集容器、推理机。推理机包含匹配器、议程和执行引擎。

其结构图如图1所示。

图1 规则引擎结构

工作存储器即规则引擎的综合数据库,也称为事实库,存储当前需要匹配的业务信息。规则集容器用于存放在规则库中获得的一系列规则,可以根据工作存储器中事实集的变化进行调整。匹配器通过决定哪些规则满足事实或目标,并授予规则优先级,使满足事实或目标的规则被加入议程。议程对匹配生成的规则冲突集进行排序。然后议程中首条规则的结论或动作部分将会执行,这可能会产生新的事实,从而改变工作存储器的内容。接下来执行引擎会根据议程中的优先顺序逐条执行规则实例和其他动作。

通过使用规则引擎,可以将规则从具体的程序代码中剥离出来。管理人员可以像管理数据一样对规则进行管理,比如查询、添加、删除、更新、提交规则等,规则被加载到规则引擎中供系统调用。

2 规则引擎的改进

虽然采用规则引擎可以方便有效的修改规则文件和管理需求,但是这也给规则引擎带来了额外的性能消耗。这些消耗主要包括以下部分:编译规则文件的时间,规则匹配的时间,解决规则冲突的时间。本文中提出了规则文件的结构化,并采用了规则文件的运行前编译方式,提高了规则引擎的性能。

2.1 规则文件的编译模式

一般来说规则文件的编译存在两种模式:运行前编译和运行时编译,而规则文件的编译模式对系统的性能具有很大的影响。运行时编译是指当运行系统时才对规则文件进行编译,虽然这种编译模式具有简单直接的特点,但是这种编译模式不利于系统的效率。相对而言,运行前编译模式是指规则文件在系统运行前就已经编译完成,所以系统能够直接调用经过编译之后的规则。虽然这种模式在实现上有些困难,但是因为其独立的运行机制,不会影响系统的整体性能。所以,对于具有相当多的规则文件的农业知识推荐系统,采用运行前编译模式可以有效地减小规则文件的编译对系统性能的影响。同时,当系统运行时,也需要对规则文件进行监控,在规则文件有改变的情况下触发对规则文件的再编译。这样既保证了系统的完整性,有减少了大量的规则文件的编译作业带来的时间消耗。

2.2 规则文件的结构化

因为农业知识推荐系统涉及的农业知识具有很完整的系统性,可以对农业行业进行分类,例如,稻谷属于农作物种植业-谷物及其它作物的种植-谷物的种植,由此将规则库中的规则文件进行分类,从而减少系统查找规则的时间。通过不断的分类我们可以把规则库中的规则文件组成一个树形结构,树形结构的终端节点就是实际的规则文件。图2显示了农业知识推荐系统规则库的树形结构。当系统调用相应函数的时候,我们可以通过树的遍历查找规则文件,建立规则网络,这样可以减少在规则匹配过程中需要匹配的文件。同时通过树形结构组织的规则文件库,也方便我们进行管理。

图2 农业知识推荐系统规则库的树形结构

我们将遵循以下原则将规则文件库组织成树形结构。首先各子树包含的元素之间不能存在交集,即属于子树Tree_A的规则Rule_a不能和属于子树Tree_B的规则Rule_b相同,这样可以减少系统在查找规则文件的时候出现歧义。其次是子树的划分应该与实际的实际系统的功能相一致,即当系统调用某个功能函数的时候,可以通过载入某个子树的规则完成其功能。这样就避免了系统由于加载了过多规则导致的性能下降。

2.3 测试与分析

针对农业知识推荐系统的模型,本文分别实现了传统的经典规则引擎(使用Drools5.0规则引擎)和改进后的规则引擎,通过两个规则系统的对比,说明本文提出的优化方法的优势。由于规则引擎中对于性能影响最大的是规则文件的编译和规则的匹配,所以以下测试用例专门针对这两个方面进行测试。

2.3.1 编译规则文件的测试

为了分析文件数目、规则数目与编译时间三者之间的关系,下面对5个用例进行编译测试,对每个用例进行3次测试,记录编译时间,然后获得3次测试时间的均值,测试结果见表1。

表1 规则文件编译测试结果

通过比较用例1和用例2,我们可以发现当规则文件数相同时,每增加1条规则会使编译的时间增加20ms。对比用例2和用例3,或者用例4和用例5,当规则数相同,规则文件数增加时,由于I/O操作,会导致编译时间增加40ms。虽然当规则较少时这些时间的消耗对与系统性能影响不大,但是当规则文件和规则的数量大量增加时,这些时间将会相当可观。因此一般情况下,当规则数一定时,我们更倾向于划分更少的规则文件。但是需要对规则库中的规则文件进行树形结构的组织,那么就必然导致规则文件的增加。我们可以采用运行前编译这种模式解决规则文件增加的弊端。通过采用运行前编译的模式我们可以在系统运行就对规则文件进行编译,虽然过多的规则文件会耗费很长的编译时间,但是对系统运行却没有影响。

2.3.2 规则匹配的测试

为了测试规则匹配部分改进之后的性能,设置如下4个测试用例,用例1和用例2是通过构造好的规则库树形结构来查找规则文件和匹配,存在三级地址,用例3和用例4是通过的经典的规则网络进行匹配(使用Drools5.0规则引擎)。每个用例进行3次测试,记录每次的匹配成功的时间,然后求均值,同时获得所占内存的平均值,测试结果见表2。

表2 规则匹配测试结果

通过对比我们可以发现用例1比用例3在时间上减少了40%,在空间上减少了21%。用例2比用例4时间上减少了23%,在空间上减少了17%。因此可以说改进后的规则引擎不管是在时间消耗上,还是在空间消耗上都要比传统的规则引擎小。这是因为前者是通过构造好的树形结构进行规则文件的搜索,需要加载和匹配的规则文件少,而后者是通过规则网络进行规则的匹配,需要加载和匹配的规则文件多,所以前者具有比后者更好的时间效率和空间效率。

2.3.3 综合分析

总结以上两个部分的测试结果,可以看出规则编译对规则引擎的时间性能影响最大。虽然采用树形结构来对规则文件进行组织有可能会增加规则文件的数目,但是通过树形结构可以极大的缩小规则匹配的搜索范围,这样使系统不管在时间效率还是在空间效率上都有很大改善。同时因为系统采用运行前编译,可以在系统运行前就对规则文件进行编译,减少系统运行时I/O操作带来的时间消耗,消除由于采用树形结构组织规则文件给系统带来的负面影响。

3 基于规则引擎的农业知识推荐系统

基于改进引擎的农业知识推荐系统借鉴了商业上流行的推荐系统模式,并将改进后的规则引擎应用到推荐系统中去,利用已有的农户数据库,获得精准的农户信息,从而避免了直接将商业上的推荐系统应用到农业上的不足。

3.1 系统结构

基于规则引擎的农业知识推荐系统包含4个部分:数据层、持久层、应用层、表现层,如图3所示。

图3 基于规则引擎的农业知识推荐系统的结构

(1)数据层:包含规则库和农户数据库,规则库采用关系表的形式进行规则的存储,当系统运行时,根据系统需求将关系表转化为规则文件。农户数据库用来存储农户的信息,包含个人基本信息、种养殖信息、地理信息等等,特别是当前各地都建立自己的农户数据库,能够提供精准的农户信息,因此为系统的使用提供了很好的应用基础。

(2)持久层:采用Hibernate技术实现,Hibernate是一个开放源代码的对象关系映射框架,通过Hibernate我们可以很容易的实现规则库和农户数据库的操作。

(3)应用层:包含规则编辑器、规则引擎和推荐服务器3个部分。规则编辑器提供规则的编辑功能,管理人员可以使用非过程化的语言,通过规则编辑器对规则库中的规则进行增加、删除、修改、查询操作,有利于系统的后期维护。规则引擎通过读入规则文件构建规则网络,根据农户的信息,做出决策。推荐服务器根据规则引擎的执行结果和农户信息向农户提供相应的推荐信息。

(4)表现层:为终端用户提供信息的表示,这些信息的形式可以有多种形式,例如短信、网页、邮件、电视等等。其中尤其以短信为主,因为现在由于通信费用和手机购买费用的减少,农民使用手机的比例也大大提高,基本上一个家庭就有一部或者两部手机,农民通过手机就可以轻松的获得系统发送的推荐短信。

3.2 农业知识的推荐

对于基于规则引擎的农业知识推荐系统是如何根据规则库和农户信息向农户推荐信息的过程,我们可以通过种植卡因类菠萝的例子描述,例如农户数据库中有以下字段,见表3。

以因类菠萝的追肥信息为例,追肥信息如下:

(1)11月份发送施肥信息,施花芽分化肥,以磷钾为主,适当控制氮肥的用量,具体信息略。

(2)12月到次年1月间发送施肥信息,施催蕾肥。每株施圈肥10-15公斤和0.5公斤磷肥,具体信息略。

(3)4-5月发送施肥信息,施攻果催芽肥。此期以中量氮、高量钾促进果实长大,保证果实品质,具体信息略。

表3 农户数据

通过提取菠萝的追肥信息,经过管理人员的编辑,形成规则文件如下。

例如,当系统时间为11月时,系统通过规则引擎发现用户张三的条件符合追肥规则"rule_1"的前件,则触发相应的动作,从农业知识库中获得 “施花芽分化肥”相关的农业知识,查询农户数据获得农户信息。推荐服务器结合农户的信息和相应的农业知识,通过短信等形式向指定的农户进行农业知识的推荐。

4 结束语

在当前市场经济和农业现代化迅速发展的大背景下,农民迫切的需要一种高效的获取信息的途径。本文根据农业领域的特点对规则引擎进行了改进,提出了规则库的树形结构化方法,并采用规则的运行前编译,提高了引擎的运行效率。将规则引擎技术应用于农业知识推荐系统中,与传统推荐系统相比增强了推荐结果的准确性和正确性,使系统能够在最恰当的时间向农民提供他们最希望得到的正确的农业知识。同时由于规则引擎具有将程序和业务逻辑分离的特性,管理人员能够根据实际情况进行规则的更新,因此增加了系统的灵活性和适用性。可以预见规则引擎的引入将会导致推荐系统在农业领域更大的发展。

[1]LIU Jianguo,ZHOU Jiantao,WANG Binghong.The progress of personalized recommendation system research [J].Progress in Natural Science,2009,19(1):1-15(in Chinese).[刘建国,周建涛,汪秉宏.个性化推荐系统的研究进展 [J].自然科学进展,2009,19(1):1-15.]

[2]CHEN Hua,LI Renfa,LIU Yufeng.Algorithms recommend research on personalized search engine [J].Application Research of Computers,2010,27(1):48-53(in Chinese).[陈华,李仁发,刘钰峰.个性化搜索引擎推荐算法研究 [J].计算机应用研究,2010,27(1):48-53.]

[3]CUI Chunsheng,WU Qizong.Research on content-based recommendation based on vague sets [J].Application Research of Computers,2010,27(6):2109-2113(in Chinese).[崔春生,吴祈宗.基于Vague集的内容推荐算法研究 [J].计算机应用研究,2010,27(6):2109-2113.]

[4]MA Hongwei,ZHANG Guangwei,LI Peng.Survey of collaborative filtering algorithms [J].Journal of Chinese Computer Systems,2009,30(7):1283-1288(in Chinese).[马宏 伟,张光卫,李鹏.协同过滤推荐算法综述 [J].小型微型计算机系统,2009,30(7):1283-1288.]

[5]DONG Xianghe,QI Lili,ONG Ronghe.Optimization algorithm based on collaborative filtering [J].Computer Engineering and Applications,2009,45(8):229-232(in Chinese).[董祥和,齐莉丽,董荣和.优化的协作过滤推荐算法 [J].计算机工程与应用,2009,45(8):229-232.]

[6]HE Keqin,HE Lianglin,XIN Luwei.Social view based user modeling for recommendation in tagging systems by association rules [C].Intelligent Systems and Applications 2nd International Workshop.Washington DC:IEEE Computer Society Press,2010,27(5):1-5.

[7]Sang Hyun Choi,Young-Seon Jeong,Jeong M K.A hybrid recom-mendation method with reduced data for large-scale application [C].IEEE Transactions on Systems Man and Cybernetics Part C:Applications and Reviews,2010,40(5):557-566.

[8] WANG Hen.E-agriculture recommender system model based on collaborative filtering algorithm [J].Journal of Ningxia University,2009,30(4):358-359(in Chinese).[王恒.基于协同过滤的电子农务推荐系统模型研究 [J].宁夏大学学报,2009,30(4):358-359.]

[9]MA Xiuli,WANG Hongxia,ZHANG Lingyun.Application of drools in network fault management system [J].Computer Engineering and Design,2009,30(8):1859-1862(in Chinese).[马秀丽,王红霞,张凌云.Drools在网络故障管理系统中的应用 [J].计算机工程与设计,2009,30(8):1859-1862.]

[10]LI Chunfang,TAN Qingping,XU Jianjun,et al.Design and realization of rule-based workflow task assignment system [J].Computer Engineering and Design,2008,29(21):5572-5579(in Chinese).[李春芳,谭庆平,徐建军,等.基于业务规则的工作流任务分派设计与实现 [J].计算机工程与设计,2008,29(21):5572-5579.]

[11]WANG Chengliang,ZHOU Yaxin,CHEN Juanjuan.Improved rete algorithm based on industry condition [J].Computer Engineering and Design,2009,30(19):5443-4543(in Chinese).[汪成亮,周亚鑫,陈娟娟.基于工业环境的改进Rete算法 [J].计算机工程与设计,2009,30(19):5443-4543.]

[12]HE Kai.The design and implementation of the medical costs control system of the social medical insurance based-on rule[D].Changsha:Graduate School of National University of Defense Technology,2006(in Chinese).[贺凯.基于规则的社会医疗保险费用监控系统的设计与实现 [D].长沙:国防科学技术大学研究生学院,2006.]

[13]PENG Lei,XIAO Yanli,SUN Jing,et al.Applying improved rule engine in wireless value-added services [J].Computer Applications and Software,2010,27(2):222-223(in Chinese).[彭磊,肖延丽,孙静,等.改进的规则引擎在无线增值业务中的应用 [J].计算机应用与软件,2010,27(2):222-223.]

[14]WANG Lijun,TAO Ming1iang,ZHANG Shu,et al.Research on business rule engine [J].Computer Engineering,2007,33(24):52-56(in Chinese).[王李军,陶明亮,张曙,等.面向业务规则引擎研究 [J].计算机工程,2007,33(24):52-56.]

[15]LIU Jian,CHEN Yichao,JIANG Hong.Universal fault and diagnosis method of expert KB on regulation [J].Computer &Digital Engineering,2010,38(36):72-76(in Chinese).[刘剑,陈一超,江虹.基于规则的通用专家知识库故障诊断方法 [J].计算机与数字工程,2010,38(36):72-76.]

[16]ZHANG Gang,SHAN Wenwei,WANG Feng.Research on the promotion of rule engine performance [C].2nd International Workshop on Intelligent Systems and Applications.Washington DC:IEEE Computer Society Press,2010:392-395.

[17]LIU Chen,DONG Xupeng,YANG Zhengqiu.Research of modern enterprise intelligent system based on rule engine and workflow [C].IEEE International Conference on Intelligent Computing and Intelligent Systems.Washington DC:IEEE Computer Society Press,2010:494-49.

猜你喜欢

农业知识用例树形
花光卉影
苹果高光效树形改造综合配套技术
UML用例模型中依赖关系的比较与分析
联锁软件详细设计的测试需求分析和用例编写
新媒体在农业知识科普宣传中的应用探究
從出土文獻用例看王氏父子校讀古書的得失
猕猴桃树形培养和修剪技术
休眠季榆叶梅自然开心树形的整形修剪
论广播记者如何做好“三农”新闻报道
苗木繁育技能训练通识教育课程探索与实践