开发QQ小强智能聊天的基本原理

来源:互联网 发布:淘宝促销价怎么只能7折 编辑:程序博客网 时间:2024/05/02 01:04

QQ小强,基本原理就是有一个根据汉语语法规则的对照表。
例如,你说:"去死吧",在程序中就会在对照表中找到与"死"有关的记录,然后对比"去死",确认与"去死"相关的记录,随机找出一条(这样对话就不会重复)。

如果句子过长,例如,"我今天很不开心",找出句子中的"主谓宾",这将语句分为:"我","不","开心",逐一组合与答复对应表进行匹配,再将初步筛选的记录针对"我不开心"进行最近似比较,最终确认回复的记录。

如果是短语/词汇就相对简单,只需要最多2层筛选就可确认。

补充一点,在一个句子中,确认主语是非常关键的,这样,可以决定回复的对象,例如:"你",那么,回复是,一定会有"我",如果主语为"我",那么回复中,则确定对象为"你"。

其次,是逻辑判断,即"是"、"否"、"不是"、"可能"、"不"、"肯定"等,来确定后面附带的名词或动词的含义(即相应动词或名词所关联的对应表)。

例子分析:"你去死吧",提取关键字:"你"(主语)、"死"(动词)

主语对应表:
       主语"你"           关联回复:我
       主语"你"           关联回复:那么你

动词对应表:
       动词"死"           关联回复:不要死
       动词"死"           关联回复:想死吗
       动词"死"           关联回复:为什么想死
       动词"死"           关联回复:死是很可怕的

经过筛选后,按照主谓宾格式输出:

我不要死
那么你想死吗
那么你为什么想死
我为什么想死
我死是很可怕的
。。。。。。。。。
等组合。


例子二:

输入语句:我今天非常不开心,提取关键字:"我","不","开心"

主语对应表:
       主语"我"           关联回复:你
       主语"我"           关联回复:那么我

动词与逻辑对应表:
      1 动词"开心"     逻辑:不      关联回复:想想忧伤的事情
      2 动词"开心"     逻辑:不      关联回复:世界上还有很多人更不幸
      3 动词"开心"     逻辑:不      关联回复:感到难过
      4 动词"开心"     逻辑:是      关联回复:也很开心
      5 动词"开心"     逻辑:是      关联回复:值得庆贺

经过主语、逻辑、动词筛选后,按照主谓宾格式输出只会输入:1-3(逻辑字段为: 不):

你想想忧伤的事情
你世界上还有很多人更不幸
你感到难过

上面的回复就太勉强了,如果想让句子生动、流畅,那么就需要加入更多的动词、形容词、名词等词性的分析和相应的回复对应表。此外,如让想让你的机器人更强大,就要做到"记忆推论"功能,也就是将之前的对话作记忆,将新的对话建立在记忆的基础上。这样问题就复杂了。

此文是我回复 http://community.csdn.net/Expert/topic/3353/3353319.xml?temp=.3312952 贴的整理。
抛砖引玉,希望和大家共同探讨。