语义分析技术需要实现的技术目标:使对话机器人软件能够理解人类对他输入的句子的意思。这里需要强调的是“理解”,而不是“识别”。本文所认为的文字“识别”是由专门的识别技术实现,包括使用光感扫描、语音识别或直接键盘输入等一切可能的手段得到的文字符号,而本文所指的语义分析技术是指对文字识别技术(不仅包括语音识别)所识别出的文字符号的理解力。
本文思路是通过对某一个语种的语法结构进行分析,进而使对话机器人软件实现基本的语义理解能力。
本文对机器人软件的智能程度理解如下:
人类之间对话交流以话题为核心,一对一答可以形成一个基本的对话单元,各个对话单元逻辑上相互衔接就形成一个话题。 对话单元基本可分为:
1问答式对话。如:甲:你在哪里?乙:我在家里
2命令式对话(包括要求或请求)。如:甲:请不要吸烟。乙:好的 3陈述式对话。如:
甲:这是个陷阱。 乙:你说的对。 甲:我今天好伤心! 乙:哦。 甲:今天天气真好!。乙:是啊!
对话机器人软件想要具备人机对话功能,则必须首先具备完成一个对话单元的能力。因此,对上述3种对话类型的语义分析是实现对话机器人软件的重要途径。
对上述3种对话单元的实现,可以使对话机器人实现不同层次的智能程度。 ——完成命令式对话单元可以使对话机器人具备基本的商业功能,如:命令:开灯。机器人答:好的,然后执行。但本文认为这种简单的命令对答并不具备实用
的商业功能,如,对机器人命令:开灯,机器人可以听懂,如果说:“把等打开”,“把灯开开”或“打开灯”等其他命令方式,则机器人就很容易听不懂。如换成另外一种设备,命令可能变为:“烧开”、“加满”、“烘干”等,则出现的命令格式会更加多变,机器人更加无法理解。这样需要人类按照固定的文字向机器人输出命令它才能听懂,因此严重限制了智能设备的实用性,消费者体验较差,这种情况下智能设备必将逐步沦为鸡肋产品。因此要让对话机器人具备较好的实用性,则必须让对话机器人能够对人类输入的句子实现语义分析与理解。(下文将详细阐述实现思路)
另外,对话机器人即便实现了对命令句的语义理解,本文认为也只是实现了基本的实用功能,算不上实现了基本的智能。要想实现基本的智能,则需要对话机器人能够听懂人类的问句。
——完成问答式对话单元可以使对话机器人具备基本的智能程度。即具备了与人类进行最基本的沟通能力(命令式对话属于单向性质,而问答式属于双向性质)。 ——让对话机器人具备完成陈述式对话单元的能力,是机器人具备初级智能程度的更高层次表现。能够完成陈述式对话可以让对话机器人实现与人类闲聊和初级的感情互动功能。
——高级智能程度的机器人,可以让对话机器人具备将各个对话单元形成上下逻辑关系的能力,即完成一个基本的话题。如:问:你打篮球了吗?答:是的。问:在哪打的?答:球场。第二个问句在逻辑上承接了第一句问句,指的是在哪打球,而不是在哪打架,因为“打”字可以形成很多种行为动次。另外,还可以不但实现对汉语中单句的语义分析能力,而且要实现对复句(如果。。。就。。。)的语义分析能力。高级智能程度的机器人还可以建立一个事物与另一个事物之间的联系,(如人与衣服之间可以建立穿、保暖、美观等联系)。还可以实现对话题中岔开话题行为的处理及多人对话能力等等更多功能。
然而,以上这些智能程度对机器人来讲,依然只处于智能阶段,他们只具备记忆和学习能力(记忆和学习方法下文阐述),而机器人最终必将走向智慧阶段,
即具备逻辑思维能力。例如,如下思路可以实现最初级的逻辑分析能力,即有利或有害的分析判断能力,机器人接收到一句话,会先判断这个句子的信息是积极还是消极,当人类告诉机器人一个积极的信息,机器人的回答则积极,遇到消极信息则回答比较消极。
上述总结:
机器人对语言的理解力是机器人智能程度的衡量标准,因此语义分析系统才是机器人领域的核心与灵魂部分。 话题 其他高级功能
逻辑分析能力 智慧 高级智能 .。。。(单元与单元之间成逻辑关系) 语义分析系统 对话单元1 具备实用性 对话单元2 命令式对话 对话单元3 问答式对话 初级智能 陈述式对话 语义分析的部分思路阐述(略去命令式和陈述式语义理解部分)
以问答式对话单元为例:
人问机答:(以第二人称“你”为例),如:你叫什么?你是谁?你在干啥?
思路如下:
1建立动次数据库、形容词数据库、代名词数据库等等各种词类数据库(人类的
语言句子是千变万化的,但是组成句子的常用词汇是有限的)
2建立疑问词数据库(汉语疑问词数量有限,仅有几十种,包括动次/形容词+不/没+动次/形容词(如去不去、走没走)等等有规律的疑问词结构)
3建立公共属性数据库、机器人自身属性数据库和动态词数据库,用来代表世界万物及机器人自身所有信息。所需要的数据量并不大,因为人类常用的属性是有限的,高度、长度、密度、湿度、社会关系、所属、功能等等属性约上千种左右(常用几百种)。动态词数据量也是有限的,因为人类常用行为动作及动态词约几万种左右(常用约1万种,如打球、打架、跑步、呼吸、倒塌、滚动等等),而并非海量级数据,实现难度较小。
机器人自身属性数据库如下: 小宝 属性名 身高 多高 高度 姓名 是谁 叫什么 功能 会干什么 会做什么 能干啥 干啥 干什么 做什么 。。。。。。 (机器人名) 属性值 1 1 1 1 1 1 1 1 1 1 2 2 2 参数1(过去时) 参数2(进行时) 没有身高 没有高度 没有高度 叫小宝 是小宝 叫小宝 可以说话 会说话 会说话 会说话 关机了 关机了 关机了 在陪你聊天 在陪你聊天 在陪你聊天 参数3(将来时) 要给你放一首歌听 要给你放一首歌听 要给你放一首歌听 。。。。。。 举例①你叫什么名字。
——机器人需要先确定句子性质,扫描句子内容并搜索疑问词库找到句子里有
“什么”这个词,确定为疑问句(特殊句子另行判断,在此仅做举例) ——扫描公共属性库确定句子里有“叫什么”这个属性词
——从属性词向前扫描(向前或向后这些人为规则的确定,每个语种各不一样)搜索代名词库,找到句子里有代词“你”(仅作举例,特殊句子另行考虑),即句子的主语是“你”,确定下一步扫描对象为自身属性库(如果扫描到主语是“我”,则下一步将扫描主人的属性库,早期机器人主要是主人和机器人的人机对话,因此早期机器人只需要建立第一人称“我”<即主人>的数据库和第二人称“你”<机器人自身>的数据库,第三人称数据库则可囊括世界万物,只需要不断扩充即可,扩充量越大,知识面越广,并且和人类一样学无止境<通常会先建立常用的第三人称数据库>)。
——从自身属性库中找到“叫什么”这个属性词,从属性词后面的参数中调出回答内容:“叫小宝”。
——根据汉语语法规则,输出:我+“叫小宝”=我叫小宝
注:句子里的“名字”这个词,属于名词,是第三人称,未来将随着数据库不断扩充,将会像机器人自身属性库一样为“名字”这个词建立属性库,“名字”这个词即可以被机器人所“认识”,机器人在高级智能程度下,将可以建立人与名字之间的联系。另外,机器人一般会先建立常用的第三人称数据库,如车载系统会先建立车、空调、后备箱、音响等数据库。不常用的第三人称通常不需要建立数据库就可以理解句子的意思,如,你叫什么和你叫什么名字两句话,机器人不理解“名字”为何物并不重要,因为“叫什么”已经成为了一种常用属性名。
举例②你想干什么?
——机器人先扫描句子并搜索疑问词库,找到句子里有“什么”这个疑问词,判断为问句。
——扫描公共属性词库,找到句子里有“干什么”这个属性词,判断属性值为2(假设2表示为动态属性),从属性词向前扫描,搜索时态词库,找到动态属性词前面有时态词“想”,确定为将来时,在读取属性库内容时将读取参数3。 ——扫描时态词前面并搜索代名词数据库,找到主句是“你”, 确定下一步扫描对象为机器人自身属性库。
——读取自身属性库中“干什么”属性名后面的参数3的值
——根据汉语语法规则,输出:我+“要给你放一首歌听”=我要给你放一首歌听 (如果搜索到动态属性词前面有个时态词为“在”,即“你在干什么”,则确定为进行时,读取参数2,即回答:“我在陪你聊天”)
注:以上思路仅为举例,先搜索哪类词库需要设计一套不断完善的语法分析结构,用来依次分辨出句子性质、属性值、词性、时态、主语、谓语、宾语、及其他词类,最终确定需要读取哪个对答内容进行输出。 这样可以让对话机器人实现对答内容的高度智能化。且因为每个语种的语法结构各不相同,因此这套语义分析结构只能用来分析一种语言,如,根据汉语语法规则设计出的语义分析结构无法理解英语句子,即便数据库里有英文单词。
机问人答:
机器人:你是什么颜色?答:红色。 机器人:哦!(并同时将红色这个参数值保存到主人属性数据库的颜色参数值里,这个功能可以使机器人具备了基本的记忆与学习能力) 思路如下:
1机器人根据条件的设置,自动向人类发出提问 2人类做出回答
3机器人扫描人类回答的句子,搜索所问问题中属性名所对应的参数值数据库(机器人提问的每个问题都有对应的属性名,每个属性名都对应着一个参数数据库,如,颜色这个属性,对应着保存有红黄蓝绿等颜色参数的数据库)
4找到人类回答的句子中有与参数数据库中匹配的“红色”,将红色保存到主人属性数据库中的颜色属性的参数值位置(仅做举例,特殊回答另行考虑)。等于机器人记住了主人的一个属性或信息,即:主人的颜色为红色。
注:人类对机器人的回答基本可分为两类,即属性回答(如上述例子,机器人需要记忆)和确认性回答(不需要记忆,立刻执行)。在实际应用中,机器人经常提出的问题是请求确认类型的问题,如:机器人:你要不要喝杯咖啡?答:要。机器人:好的,我马上给你倒杯咖啡,并同时启动机械手臂倒一杯咖啡。而不需要记住主人的某一个属性值。
上述思路为整个语义分析系统的一小部分,但可以说明本文的基本思路。
因篇幅问题不能全部显示,请点此查看更多更全内容