谈谈机器人设计思路

作者:未知  发布时间:2018-01-06 11:44:29  阅读:197

h2谈谈机器人设计思路/h2 1 知识库 机器人要想回答出你所提出的问题,那么首先它就要具备自己的知识库,就和人一样,逻辑分析的前提,需要你具备对这个问题所储备的知识以供参考

 <h2>谈谈机器人设计思路</h2>

1 知识库

机器人要想回答出你所提出的问题,那么首先它就要具备自己的知识库,就和人一样,逻辑分析的前提,需要你具备对这个问题所储备的知识以供参考,所以知识库的重要性就不可避免的成了很重要的成分,那么我们怎么描述聊天机器人的知识库呢,由于当初只是做来玩玩,所以我只是很简单的做出了一一对应关系的数据库。 例如:我们生活在哪个星球上? 对应回答就是:地球! 由此很多问题和相对应的答案便组成了我们的知识库(也就是数据库,我用的是MySql)!知识库的大小直接关系到你的机器人是不是聪明。

2 语句分析

当然,仅有知识库是不能进行对问题分析并做出答案的,所以我们必须要赋予程序能够自我分析的能力。程序要想更加聪明,那不得不依靠强大的智能算法,因为我不是专业人士,所以开始也没使用到很多智能算法,只是简单的把句子中的分词提炼出来。 我是这样设计我的小D的,先是进行完全匹配,然后是语句分析,最后是模糊匹配。 完全匹配就是把问题的整个字符串拿到数据库中去查寻答案,如果能查到记录便把对应的答案返回给提问者!如果不能查到,就进行模糊匹配,所谓模糊匹配就是最大限度的把整句话的意思放到知识库去查询(我的方案是先进行语句分析,再模糊匹配)。 例如:地球的半径是多少? 如果完全匹配并没从知识库中检索到信息,那么下个过程就是语句分析了,我们先把整个句子的各个词语分开! 例如:地球/的/半径/是/多少? 在这里不得不提到分词算法,分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。而我们要做的就是要将这一个又一个的分词从句子中提炼出来。 这里有个分词算法的PPT,点击下载 感兴趣的朋友可以仔细研究下他们是做分词系统出了名了,我们可以借鉴其中的方法,如图: 当我们把分词提炼出来了,我们就可以进行最大的匹配了---也就是模糊查询,我把它分为了两步,一就是进行整句模糊查询,因为可以尽可能的保留全句的意思: 例如:select * from QY where question like "*地球*的*半径*是*多少*" 这样就能从知识库中查到更多关联的问题了,也有更多的答案选择! 如我们可以查到:你知道地球的半径是多少吗? 等很多包含整句的问题! 当然如果数据库中完全没有完全匹配的问题,那么可以提出关键词,我的方法是分词最长原则! 如:地球/的/半径/是/多少? 其中[地球] [半径] [多少]就是里面的最长关键词,我们可以设计算法,通过组合来匹配! 例如:可以把[地球]和[半径]组合在一起 select * from QY where question like "*地球*半径*" 这样即使全句模糊匹配找不到也能找到,当然这样的组合就要看你的程序是怎么写的,当然组合的要求要符合程序的特点,如果组合次数过于大多会影响程序的反应速度!所以最合理的组合能提高程序的使用性!当然如果经过这三个步骤没有相关匹配问题,我的小D就不能回答你所提出的问题了!它会很老实的回答:“我不知道?”等意思! 这里要强调个技巧,比如在匹配问题的时候很可能会检索到很多的答案,这时候我们可以设计个随机选择函数,任意性的选择答案,那样程序就比较人性化了?比如你问到:“你吃饭没?” 那么它可以回答“吃了” “没有” “我不吃饭” 而不是单一的回答。。。 我只是简要的谈到了聊天程序设计的方法,当然这和那些真正专业的程序比较起来还是有很大的差距,如果你只是做来玩玩,以上这些就足够了,比如现在我在小D的程序里应用了缩句的方法,这也只是想提高它分析问题的能力,如果朋友你真想在智能聊天方面继续深究,那么就要下更大的工夫了。

机器人设计

为•WE•肯•CAN

助力专业领域产品设计造福社会

全国统一设计热线: 400-805-8893

总监直线Bill: 131-2767-5930

地址:上海市闵行区新源路1356号正珏科技大厦A座9楼

上海为肯工业设计公司

沪ICP备17007002号  XML地图