一图简看基于搜索的问答机器人设计

前言

对于 chatbot,现在学界更流行的实现方式是基于深度学习和强化学习,比如seq2seq模型,具体可参考前面的文章《深度学习的seq2seq模型》。

而对于工业界,直接用 seq2seq 模型来实现端对端的还是几乎没有的,但在很多模块的处理也开始引入深度学习,除此之外也会尝试使用强化学习。目前来看能工业界使用的更多还是传统的基于搜索的实现,本文来看看如何设计基于搜索的问答系统。

关于问答系统

问答系统主要就是实现用户提问,然后返回一个最合理的回答。问答系统与一般的搜索引擎不太一样的是它允许用户用自然语言进行提问,理论上如果要做出较好的效果都需要涉及到自然语言处理。

核心思想

收集现有的所有问答集,根据用户的提问,由计算机负责解析问题的语义并从问答集中检索出最相关的问答对应的答案返回给用户。另外,为了使系统更具鲁棒性更加友好,我们可以选出最相关的前N条问答组成候选集,另外再提供一定的机制在用户不满意结果时向其提供候选集的其他答案。

核心模块

  • spider,负责网络爬取相关的问答并入库到数据库。
  • 知识库,业务最专业最准确的知识来源。
  • 人工添加,支持人工添加新问答。
  • QA数据库,用于存储所有的问答集,可以由两张表存放,问题表和答案表,通过 id 关联起来,并且答案表中也可保存答案相关的文档名称,后面可作为答案附件。
  • lucen,用于将数据库相关问答集建立索引,注意这里只需建立问题的索引,因为根据用户检索候选集时只需根据问题来检索。
  • 相似性工具,对若干个问答候选集进行评分,选出与用户提问最相似的那个问题对应的答案,返回给用户。相似性可以用word2vec或编辑距离。

-------------推荐阅读------------

我的2017文章汇总——机器学习篇

我的2017文章汇总——Java及中间件

我的2017文章汇总——深度学习篇

我的2017文章汇总——JDK源码篇

我的2017文章汇总——自然语言处理篇

我的2017文章汇总——Java并发篇


跟我交流,向我提问:

公众号的菜单已分为“读书总结”、“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。

为什么写《Tomcat内核设计剖析》

欢迎关注:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值