系统结构
主体思想依然是根据存储提取的思路,一般的实现是储存一些固定问题的答案以及相似话语的回答,通过查找匹配来找到适合的回答。例如:我们在向机器人说“你好”,系统检测到存储体中有“你好”,并给出了这个词的答案“你好”,或者给出多种不同的回答,系统可以随即的选择需要的回答。有更智能一点的机器是通过模糊匹配来产生更多更丰富的答案,当你向机器问问题的时候,他会采集问题的关键字,在系统数据库中查找相应的关键字并匹配出最适合的回答。
我们采用了分析归纳的渐进回答方案,系统依然会依赖自身已知的一些知识进行常规的回答,不同点在于我们可以回答我们系统数据库中没有出现过的问题。例如“你是火星人吗?”,系统之前并未回答过这个问题,也没有这个问题的答案。这时系统将会组合“火星人”在系统中搜索,如果找到火星人的相关信息,将会与“是”,进行匹配,确认“是”就是等同的意思,将会找到自己与火星无关,从而得出“不是”的结论,进一步将会分析问话者的上下文,来决定采用什么方式进行回答。这里同样会考虑机器的个人喜欢的回答方式。
数据流程如下图:
Input 输入
输入是系统获得外界信息的方式,第一阶段暂定为英文文本(待讨论),输入模块以字词句为识别内容。最后传入系统的将是一个字符串。例如 “How are you?”该部分实现比较简单,基于控制台或者图形界面都可以方便的获得需要的字符串信息。
Parser 解析器
解析器将解析字符串的意义,它的输入是 Input 输入模块的字符串信息,同时读取两个数据库“memory”和 “knowledge”,在其中查找和匹配 Input 传入的字符串。分以下情形:
1. 字符串比较简单,例如“Hello”,这样直接返回系统,说话者的问候状态
2. 字符串比较复杂,这时解析器将通过分词技术,将字符串分成单个有意义的词组,然后在系统数据库中查询匹配
要求 Parser 能够分析出说话者的语气,褒贬、中性等。
输出信息:说话者的语气(褒贬、中性),句子的状态(疑问、肯定、感叹。)
具体实现(待讨论)
Memory 和Knownledge
两个比较大的数据库。记忆和知识。记忆是系统平时的存储信息,可能包括一些常识比如,我不用刷牙 etc,Knownledge 是公认的知识,比如太阳看起来是圆的。
数据库组织 (待讨论)
Anazyer
分析器的主要是分析上下文,甚至了解说话者的心理,这部分是智能的部分。具体实现细节需要详细讨论,(待讨论)
输出:主要是对数据的处理,可以提供给 Organizer 一些信息
Organizer
组织回答,会根据自身信息和脾气进行调节
处理过程
以几个基本的问答展示基本的数据处理过程:
简单问答
说话者:“How are you?”
1. 机器人处于 idle 状态,输入接收到字符串,识别为一个英文文本句子,传递给
2. Parser 接收到 Input 输入的字符串,首先判定为基本简单类型的句子,判定为疑问句,判定为中性语气,并在 memory 中查询到整个关键字
3. Parser 将分析出来的信息传递给 anazyer,anazyer 分析句子处于会话问候,分析是否和说话者完成过对话,提取说话者信息。
4. Anazyer 将分析的结果传递给 organizer ,organizer 提取与说话者关系,按照自己的习惯组织回答,知道回答为问候的一些回答方案,按照分析结果可能是 Fine 等等不确定的答案。
复杂问答
说话者:“Have you ever seen the movie 《artificial intelligence》.”
1. 机器人处于 idle 状态,输入接收到字符串,识别为一个英文文本句子,传递给
2. Parser 接收到字符串,判定为复杂类型句子,执行分词,找到artificial intelligence 关键字,movie 关键字 etc,判断为疑问句,判断为中性语气,在 memory 中查询关键字。找到 movie ,没有找到artificial intelligence
3. Parser 将信息传递给 anazyer ,分析出问话者的问话,分析上下文是否讨论 movie。由于没有找到artificial intelligence ,分析出自己不知道。
4. Organizer 组织答案,到底是没有看过,还是不知道artificial intelligence ,还是直接问artificial intelligence 是什么,又个人数据决定。