智能机器人(17):自动应答

聊天机器人chat-robot,如果掐掉输入部分的语音识别,扣除输出部分的语音合成,剩下的就是机器应答,机器应答一般不算强人工智能,甚至连人工智能也算不上,不过应用场合不少。

语言应答这块,属于自然语言理解NLU的问题,加上机器翻译等,大的方向属于自然语言NLP处理范畴,很早就抛弃了语法分析方式,转为基于隐士马尔科夫的统计方法。隐士马尔科夫就是在你输入“美酒加”三个字之后就可以预测到接下来应该是“咖啡”,因为这个概率最高。具体的概率取决于训练所用的语料库,用人民日报体和网易盖楼体训练,概率肯定不一样。

分词对于中日韩等亚洲语言也是必须的,这些文字不像英文一样有空格可以分隔。中文分词开始是用字典法,适当控制颗粒的粗糙度也有满意效果,但是解决不了歧义问题,比如“他把球拍卖了”到底分成他把球拍/卖了还是他把球/拍卖了,所以后来也是转向基于统计的方法。

然后就是机器应答chatbot,比较成熟产品有开源的aliceBot和阿帕奇基金会的lucene,现在流行的有韩国的小黄鸡。

自己做着玩,可以有不同实现方式:

1、最简单粗暴的用数据库,写好keyword和description,然后select * from表where客户的关键词就可以了,不过没有模糊性,差错一个字就失配,知识库需要很大。

2、借助开源项目,比如中文分词用中科院的ICTCLAS,应答系统用aliceBot的AIML方式,或者阿帕奇lucene的搜索引擎方式。

搜索引擎检索方式,其实就是用全文检索系统,首先需要建立索引,常用的是倒排索引,这里倒排的意思就是矩阵转置,正排是关键词映射到页面,而倒排是页面映射到关键词,其实也就是页面的特征向量,对页面特征向量与搜索关键词计算余弦距离,就可以获得页面和检索的匹配程度。

例如一个页面的特征向量是[我,喜欢,爱玛仕],客户要搜索的特征向量是[我,喜欢,爱玛仕],两个向量的余弦为1,没什么可说的,这就是要寻找的目标。如果另一客户搜索的特征向量是是[他,喜欢,爱玛仕],那么虽然余弦不是1可是匹配程度也相当高,也可以作为全文检索结果给出。(不考虑甲醛、词频等等细节)

0 回复

发表评论

Want to join the discussion?
Feel free to contribute!

发表评论