去年的齐鲁软件大赛,关于语义识别方面,一种简单的实现想法。

        去年的第九届齐鲁软件大赛中,我们团队的作品《南山景区3D智能旅游咨询员》当中,其中一个功能是智能问答。就是用户通过说话或者打字向虚拟旅游咨询员提问,虚拟旅游咨询员思考后会做出相应回答。如果是用问题的关键字去匹配用户问题问题来实现,实用性就太低了。因为人们平时说话,经常存在同义词或者语义不明等情况。在实现这个功能的时候,我们尽可能的去分析人们平时说话的语义,模拟让计算机理解自然语言,做到模糊匹配。(我们本科作品,水平有限。。大牛们可以忽略。。-0-)

 

        技术背景:MFC(主框架)+OGRE(3D图形渲染)+语音识别引擎+UDK+FLASH

 

        首先假设,以下是人们平时可能提出的问题:

 

       1、请给我介绍一下关于南山大佛的历史

       2、推荐一下南山大佛的旅游路线

       3、景区附近有什么旅馆。

       4、青岛到南山景区怎么走

 

       问题来了,人说话,千变万化,尤其是同义词。比如:“南山大佛的历史”和“南山大佛的渊源”其实意思上是一样的。如果连同义词都不处理,那这个功能基本是不可用的。所以第一步,首先替换问题中的同义词。通过摘一些现实生活中,各种各样人提问,总结这些同义词。首先进行一系列替换。这一步的关键是,同义词库一定要够量,尽量覆盖日常相关的提问。

 

        比如关于“怎么走”一律归为“路线”,“介绍,告诉我,什么是”一律归为“简介”。所以第一步之后,有可能问题已经面目全非,但是不要紧,我们要的是分析用户的语义,所以只要计算机接下来能理解就好了。

 

       关键词成功替换之后,第二步就是再把统一的关键词提取出来我不是学文科的不懂语法,但是起码分析了很多平时人们常说的话之后,其实是有很多共同点的,修饰词都是没有用,其实核心那就是动宾结构,主语都可以省略。其实同义词转换之后,再抽取主干之后就是:

 

       1、请给我简介一下关于南山大佛历史

       2、推荐一下南山大佛旅游路线

       3、景区附近有什么酒店

       4、青岛南山景区路线

 

        问题一下变成了精华,关键点到了。这个只是简单的一问一答,所以没有去考虑更具体的拆分句子,更深层的语义,双重否定什么的。介于很少有人提出“请不要给我介绍一下XXXX”,“XXX的XXXX是不是XXX的XXXX?还是XXXX的XXXX?”这种变态的句子。

 

        之后要进行第三步,判断动词是否是具有方向性,因为起点和终点是不一样的。

       

        判断动作方向性之后,最后,用关键字匹配问答库。把提取出来的关键字,放到数组里再去匹配问答库里的问题题干,如果全匹配成功,则作答。如果关键字没有全匹配成功,则返回最相近的那个。比如四个关键字,返回匹配成功三个关键字的问题题干。然后计算机反问用户一句:您想要问的是不是XXXXX(返回的题干)?一方面避免了错回答问题的几率,令一方面给用户更友好的感觉。

       

 

        比如数据库里有:“青岛南山景区路线。”和“烟台南山景区路线

 

        用户问了:“请告诉我青岛烟台路线。”

 

        首先先判断清楚了,是从青岛到烟台,而不是从烟台到青岛。其次匹配不到用户的问题,反问用户最匹配的问题,可以加入问题的提问率,每当回答一次就增加该问题的提问率,显然,返回提问率较高的问题被认可的几率更大。

 

        这就是我们实现问答的具体思路。实践过程中感觉效果还不错。前来测试的用户都是尽可能简短的向计算机提问(可能是怕计算机听不懂-0-)。不过只要不说非常绕弯的语义,计算机都能非常正确“听懂”用户的问题。做出回答。

 

        另外,我们还让虚拟人记录了最近问的几次问题,中间夹杂一些衔接语,调侃以及敏感词的判断,都得到了好评。比如如下:

 

用户:早上好

 

虚拟人:您好,但现在已经是下午XX点了(礼貌及调侃判断)

 

用户:请告诉我青岛怎么去烟台啊?

 

虚拟人:对不起,您的问题我不清楚,你想要问的是不是“从青岛到南山景区的路线”?(问答判断,同时记录刚才的问题)

 

用户:恩,是的!

 

虚拟人:您可以通过XXXXX高速XXXXXXXXXXXX,您还有什么要问的吗?(回答了刚才的问题,并且加上部分衔接语)

 

用户:不用了,谢谢。

 

虚拟人:不客气,希望您在南山景区玩的开心。(礼貌判断)

 

 

这只是我们团队当时的一种实现想法,实现起来不难,但是起到了非常好的效果。大家有什么好的想法互相交流,来完善3D智能旅游咨询员这个命题!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值