chatterbot问答框架的简单分析

1. chatterbot问答框架的实现原理?

chatterbot的是基于sqlite数据库的,基于字符串相似度的匹配的问答框架。

数据存储方面:sqlite数据库中存放了我们预先设置的很多的问题和答案。对于一个问题用户的提问方式可能是多种多样的情况,我们可以对这个问题在数据库中存放多种变种形式。比如:问题“买车险的流程是怎样的?”,对于这种问题,用户的提问方式可能出现下面几种情况:a. 怎么买车险?b. app上怎么买车险;c. 买车险的操作流程怎么弄?等。其实这些问题是等价的,对于这种等价问题,可以给它设置一个统一个答案。一般设置3-4个就可以了。

字符串匹配方面:chatterbot中默认的字符串相似度的算法是编辑距离算法,它描绘的是将一个字符串传化成另外一个字符串它所需要的最小的编辑次数是多少,非常自然如果两个字符串越相似,完成转化需要的编辑次数就越小。

相似度计算公式:1-(需要操作数 除 maxLen)maxLen表示转化前和转化后的字符串中的最长的字符串的长度。

所以整个问答流程其实是:根据用户输入的问题a找到数据库中存储的相识度最高的问题A, 那么问题A的答案就是返回给用户的答案。

2. 利用chatterbot训练自己的语料库是什么原理?

在利用chatterbot添加自己的语料库的时候,会产生一个db.sqlite文件,这个文件实际上就存放了你添加的问题和答案。训练的过程其实就是数据入库的过程。我们可以使用SQLiteStudio工具来查看新生成的db.sqlite文件,这个文件中会存放我们新添加的语料。

sqlite安装,SQLiteStudio下载,大家可以在网上查找相关的教程。

3. 字符串的相识度计算除了默认的编辑距离算法之外,还有什么其他的算法吗?

synset_distance 计算英文文本间的相似度 利用nltk包中的wordnet实现的
sentiment_comparison 计算文本间的情感相似度  利用nltk包中的vader实现
jaccard_similarity jaccard相识度 计算过程较简单 速度快 没有考虑词语词之间的顺序 准确率没有编辑距离算法高

编辑距离算法,jaccard算法参考博文:

https://www.cnblogs.com/xiaoyulong/p/8846745.html

https://blog.csdn.net/u012836354/article/details/79103099

发布了23 篇原创文章 · 获赞 1 · 访问量 1368

猜你喜欢

转载自blog.csdn.net/langsiming/article/details/103838855