日期:
来源:远洋号收集编辑:问答
前言
对于 chatbot,现在学界更流行的实现方式是基于深度学习和强化学习,比如seq2seq模型,具体可参考前面的文章《深度学习的seq2seq模型》。
而对于工业界,直接用 seq2seq 模型来实现端对端的还是几乎没有的,但在很多模块的处理也开始引入深度学习,除此之外也会尝试使用强化学习。目前来看能工业界使用的更多还是传统的基于搜索的实现,本文来看看如何设计基于搜索的问答系统。
关于问答系统
问答系统主要就是实现用户提问,然后返回一个最合理的回答。问答系统与一般的搜索引擎不太一样的是它允许用户用自然语言进行提问,理论上如果要做出较好的效果都需要涉及到自然语言处理。
核心思想
收集现有的所有问答集,根据用户的提问,由计算机负责解析问题的语义并从问答集中检索出最相关的问答对应的答案返回给用户。另外,为了使系统更具鲁棒性更加友好,我们可以选出最相关的前N条问答组成候选集,另外再提供一定的机制在用户不满意结果时向其提供候选集的其他答案。
核心模块
spider,负责网络爬取相关的问答并入库到数据库。知识库,业务最专业最准确的知识来源。人工添加,支持人工添加新问答。QA数据库,用于存储所有的问答集,可以由两张表存放,问题表和答案表,通过 id 关联起来,并且答案表中也可保存答案相关的文档名称,后面可作为答案附件。lucen,用于将数据库相关问答集建立索引,注意这里只需建立问题的索引,因为根据用户检索候选集时只需根据问题来检索。相似性工具,对若干个问答候选集进行评分,选出与用户提问最相似的那个问题对应的答案,返回给用户。相似性可以用word2vec或编辑距离。