简单的智能移动问答系统

2019-08-13 09:09陈凯
中国信息技术教育 2019年14期
关键词:调用知识库野花

陈凯

本期文章要介绍的,是一个非常简单的基于逻辑编程的智能移动问答系统,教师不仅能用它来教学,还能用它来教学——前半句话的意思是,这个系统逐步搭建的过程,可作为人工智能逻辑编程入门阶段的教学素材;后半句话的意思是,这个系统搭建成功之后,系统本身也可作为某些学科的教学工具。这个小系统可以在手机或其他移动设备上运行,针对特定查询类别,使用者提供若干关键字,系统能给出和关键字相匹配的对象的名称。为了能够简单说明问题,本文以“校园野花查询系统”为例,对系统的构建过程进行说明。

● 需求——从学用人工智能到学人工智能

对学习者来说,学用人工智能和学人工智能,两者看上去很相近,或者说的确也有相当部分学习内容存在交集,但两者的学习目标其实是不同的。若要勉强区分一下,那么前者是学习用人工智能的成果来实现某个任务,或构建出某个功能系统;后者则主要是学习如何利用数学和逻辑上的方法来模拟、延伸和扩展人的智能,学习中还常常涉及脑神经科学、心理学、哲学等多个学科的学习内容。

举例来说,若想利用人工智能来帮助识别校园里的常见野花,可以用现成的“形色”或“花伴侣”软件拍摄野花照片并联网智能识别,这就是利用人工智能的成果来了解植物知识,最多只能算是对人工智能应用进行体验。如果学习编写一个Python程序,调用网络上的接口对野花图片进行智能识别,那么这其实是利用Python高粘合性的特点,借助人工智能的功能接口来构建出野花识别系统,也很难说是对人工智能本身进行学习。那怎样算是学习人工智能呢?那就一定要将野花辨识的机器学习过程展现出来,然而,对于基础教育阶段的教学者和学习者来说,这不是件容易的事情,主要的瓶颈在于学习者数学和计算机科学方面知识技能储备的限制。教学者可以引入一些策略来缓解以上矛盾,比如,将数学运算参与到人工智能实现过程中的关键步骤和原理用图形和动画的方式直观显现出来,保留数学公式的应用而适当略过数学公式的推导过程;或者,重点剖析人工智能相关算法核心思想,同时降低数据结构和算法的复杂性;再者,就是将适应学习者当前知识技能基础的人工智能学习内容作为优先选取的教学内容,并为学习者指明未来进阶的学习路径。

“校园野花查询系统”是一个用人工智能逻辑编程语言设计的迷你专家系统,在根据植物特征描述识别野花这一功能上,其能力要强于一般的通用聊天机器人程序。和常见的上传图形智能识别野花种类的人工智能(通常用神经网络搭建)程序相比,这个迷你专家系统只能借助语言描述对植物进行识别,其实现关键在于人工智能逻辑编程的运用,能够适应基础教育阶段学习者的知识技能基础,不需要引入额外的预备知识技能。基于特征描述的迷你专家系统的应用场景也不同于图片智能识别,它更适合于植物分类学方面的基础训练。

● 实施——用pyDatalog建立知识库

“校园野花查询系统”使用逻辑编程语言实现,它不同于基于步骤的程序设计语言,而是根据事实和规则,在知识库中自动进行演绎推理。图1所示的是一段Python简单代码,通过建立事实和查询来识别野花。

这是一个极端简化的例子,它只考虑了花瓣数量和花冠是否对称(暂时只考虑辐射对称的情况)。由于使用pyDatalog库引入了自动演绎推理,所以不需要按传统的方法用分支结构对用户输入信息进行判断,计算机会自动进行匹配,按代码中的例子,就是在知识库中匹配既符合4片花瓣,又符合花冠不对称情况的所有事实。在这些代码的基础上稍微加以扩展,就能体现出其知识积累和查询的便捷性和灵活性。代码如图2所示。

这些简短的代码只是用作逻辑编程的示例,要使其功能更加完整,还有许多可以改进的地方。一方面,从植物学角度来看,有许多专业特征,如花序、叶序、叶缘、叶脉等都可以列入知识库中;另一方面,从应用交互来看,还要考虑到用户可能有难以描述、描述错误或省略描述的情况。

在知识库中可以用“<=”符号来代表推理,在下页图3所示的代码中,程序会自动将具有“羽状复叶”和“蝶状”花这两项特征的植物视作豆科植物。

從图3所示的运行结果可以发现,虽然预先没有存储植物分类信息,但系统可以自己运用知识库里的事实和规则,尝试对植物的分类进行判断,可以算是有了初步的智能。而为了进一步完善这个专家系统,学习者的进阶学习路径也变得非常明确:一是怎样对用户输入的语言文字进行分析,从变化多端的语言文字中提取出关键特征信息;二是如何利用递归调用,进一步提升系统的演绎推理能力。

● 拓展——让系统变得更方便,更有趣

要想在安卓系统的手机或平板上,而不仅仅是计算机上运行这个迷你专家系统,可以安装QPython应用,同时,要记得用QPython界面的“系统”工具,或者调用“pip”程序在线安装pyDatalog库,以实现知识库和逻辑推理的功能。QPython还能调用安卓接口,使这个迷你专家系统使用起来更方便、更有趣,如调用拍照功能、经纬度查询功能等。图4所示的代码片段,是在QPython中调用安卓语音引擎实现语音输出。

在实际操作中,可以利用讯飞的语音识别来输入信息,系统在查询或推理之后,用安卓的语音引擎将结果朗读出来,这就使得这个迷你专家系统的应用十分具有趣味性。虽然利用现成的接口实现某些人工智能的能力非常简单,学习者也比较容易获得成就感,但有必要提醒学习者的是,这其实就是通过调用、整合现成的人工智能成果来构建自己的功能系统,不能以此代替人工智能内部原理的学习。

猜你喜欢
调用知识库野花
野花谷的牛
我国机构知识库内容质量服务探讨
宝岛的野花
基于Android Broadcast的短信安全监听系统的设计和实现
野花
基于Lucene搜索引擎的研究
利用RFC技术实现SAP系统接口通信
位置与方向测试题
藏在野花里的危险
C++语言中函数参数传递方式剖析