QQ小强,基本原理就是有一个根据汉语语法规则的对照表。例如,你说:"去死吧",在程序中就会在对照表中找到与"死"有关的记录,然后对比"去死",确认与"去死"相关的记录,随机找出一条(这样对话就不会重复)。 如果句子过长,例如,"我今天很不开心",找出句子中的"主谓宾",这将语句分为:"我","不","开心",逐一组合与答复对应表进行匹配,再将初步筛选的记录针对"我不开心"进行最近似比较,最终确认回复的记录。 如果是短语/词汇就相对简单,只需要最多2层筛选就可确认。 补充一点,在一个句子中,确认主语是非常关键的,这样,可以决定回复的对象,例如:"你",那么,回复是,一定会有"我",如果主语为"我",那么回复中,则确定对象为"你"。 其次,是逻辑判断,即"是"、"否"、"不是"、"可能"、"不"、"肯定"等,来确定后面附带的名词或动词的含义(即相应动词或名词所关联的对应表)。 例子分析:"你去死吧",提取关键字:"你"(主语)、"死"(动词) 主语对应表: 动词对应表: 经过筛选后,按照主谓宾格式输出: 我不要死 例子二: 输入语句:我今天非常不开心,提取关键字:"我","不","开心" 主语对应表: 动词与逻辑对应表: 经过主语、逻辑、动词筛选后,按照主谓宾格式输出只会输入:1-3(逻辑字段为: 不): 你想想忧伤的事情 上面的回复就太勉强了,如果想让句子生动、流畅,那么就需要加入更多的动词、形容词、名词等词性的分析和相应的回复对应表。此外,如让想让你的机器人更强大,就要做到"记忆推论"功能,也就是将之前的对话作记忆,将新的对话建立在记忆的基础上。这样问题就复杂了。 |