检索式问答机器人最典型的一个例子就是FAQ客服机器人。

什么是FAQ呢?

简介:在智能客服的业务场景中,对于用户频繁会问到的业务知识类问题的自动解答(以下简称为FAQ)是一个非常关键的需求,可以说是智能客服最为核心的用户场景,基本上来说,就是用户使用智能客服系统,提问了一个业务知识的问题,系统需要在知识库里找到最合适的那一个答案,且一般来说,知识库都是人工事先编辑好的。
例子:比如10086的在线智能客服,用户提问“如何查询话费”,那系统可以自动给出一个对应的知识“请您向10086号码发送‘HF’短信,即可查询当前话费”
特点

  1. 在这个场景中,知识的域是垂直封闭的,并不是开放的,只取决于开发这个智能客服的公司或者个人的需要支持的业务范围是多大。
  2. 由于是垂直领域,知识的变化并不会过于频繁,且知识库其实一般都是一个已经编辑好的库,一般由问题与答案这样的pair对组成,而不是那种很复杂的图结构或者关联表结构。如“如何查询话费”与“请您向10086号码发送 ‘HF’短信,即可查询当前话费”这样的一个文本pair对构成。一般来说pair对的数量都是几十到几百几千不等,不会特别大。
  3. 回答相对简单,不需要太多的推理和解析,只需要知道是知识库里的哪一个回答即可,某种程度上可以看做是一个匹配问题甚至是分类问题。

目前比较典型的做法就是:召回+排序

我们从模型的角度来分析:

用传统NLP模型捕捉词形、浅层语义信息 -- 做召回,缩小搜索空间
用深度模型捕捉句子结构、深层语义信息 -- 对召回的item做rank

召回模型:

  1. 分词、词性修正:对词典做定制,比如“xxx”等词在本场景中应该是一个专有名词,需要修改这些词的分词和词性
  2. 去停用词:取常用停用词和语料中的一些高频词、保留“你、我”等一些在此场景中有实际意义、有区分度的代词等
  3. 相关性扩展:当搜索“XX漂亮”时应该也把“XX美丽”等词形上不同但语义相近的问题召回,可以人肉用近义词典做细粒度定制,或者用word2vec找距离相近的词,虽然严格上不是“近义词”、而是“相关词\关联词”,比如它认为“男人”和“女人”相近
  4. 转为BOW:把原问题转为高维稀疏词频向量
  5. --用tfidf weight代替词频做为词袋中各词对应的value(问题比较短的情况下)
    --用lsa\lda等映射到低维空间(问题比较长,且不在乎信息损失)
  6. 检索:当用户提问时,通过以上五个步骤把问题映射为一个高维稀疏向量,然后从问题库中召回与其cosin距离最近的n个问题
    -- 问题: 若每次用户提问时都与知识库中几十万个高维稀疏向量中算cosin 是不现实的、时间复杂度不可接受
    -- 解决方法: Locality Sensitive Hashing(LSH)这种hash可以把距离很近的数据以较高的概率映射成同一个hash值
    -- 选择:

    1. sklearn中的LSHForest,但它检索慢、recall 低
    2. Facebook research的pysparnn,但它也有个缺点:建index慢,好在建index是一次性的、建好后用cPickle持久化,以后用时load就好了

语义模型:

  1. encoder: 把各问题encode成低维向量
    模型: Siamese LSTM + attention, IARNN等
  2. 相似度计算:dot,cosine等

目前存在的一些问题以及解决方案:

1.  词语多义性问题
导致问题:无法正确识别问题,导致答案召回准确率降低
场景:例如“中国银联”=“银联”,“中国农业银行”=“农行”
解决方法:构造词语对等列表或者词语相关性表
一、词义相同的两个词可以以较高的关联性进行识别,从而提高答案的准确性
二、词义较为相近的两个词关联,从而提高相近答案的输出(建议的形式输出,例如我们没有发现XXX的答案,建议查看YYY的答案),提高用户对于会话智能的认可

2. 不正常的用户输入问题
导致问题:影响问题识别
场景:很多用户是因为存在问题或者发生故障来寻找客服服务的,本身带有消极的情绪,例如愤怒、着急、失望等。因此句子输入可能会带有某些包含情感的词语,比 如:他妈的等
解决方法(提升用户体验): 一、感知用户的情绪并给予安慰; 设置安慰词表
二、建立“情感”词表,替换原询问句
三、定期数据统计,跟踪出现用户失望的会话,并从设计和数据方面进行改善

3. 如何准确捕捉问的类型
导致问题:无法将用户意图正确分类,就无法将查询输入系统
场景:用户会问“为什么?”,“是什么?”,“怎么做?”以及这三个类型的引申词,如“如何?”等
解决方法
一、先对用户意图进行大概的分类
二、”是什么?“之类的问题考虑转向KB-QA,”为什么“,”怎么做“转向FAQ

自己实现的一个基于检索的问答小demo:

我的github地址

如果觉得我的工作对您有帮助,请不要吝啬右上角的小星星哦!欢迎Fork和Star!也欢迎一起建设这个项目!
有时间就会更新问答相关项目,有兴趣的同学可以follow一下
留言请在Issues或者email xiezhengwen2013@163.com

中文检索式问答机器人模型相关推荐

  1. 史上最通熟易懂的检索式聊天机器人讲解

    喵喵喵,一不小心又匿了三个月,突然诈尸害不害怕( ̄∇ ̄) 小夕从7月份开始收到第一场面试邀请,到9月初基本结束了校招(面够了面够了T_T),深深的意识到今年的对话系统/chatbot方向是真的超级火呀 ...

  2. 开源任务式问答机器人系列之rasa篇

    开源任务式问答机器人框架系列--Rasa Rasa data/nlu.md data/stories.md domain.yml config.yml 总结 Rasa rasa是一个开源的问答机器人框 ...

  3. 【聊天机器人】深度学习构建检索式聊天机器人原理

    一.检索式与生成式聊天机器人对比 1.基于检索的chatterbot 2.基于生成的chatterbot 3.聊天机器人的一些思考: (1)基于检索的chatterbot 根据input和contex ...

  4. 使用Elasticsearch做一个简易的检索式聊天机器人

    Elasticsearch是一个全文搜索引擎,可以快速地储存.搜索和分析海量数据.它是一个开源的搜索引擎,建立在ApacheLuceneTMApache Lucene^{TM}ApacheLucene ...

  5. 【ChatGPT】从零开始构建基于ChatGPT的嵌入式(Embedding) 本地(Local) 智能客服问答机器人模型

    目录 方案流程 1. Embeddings 介绍 术语:微调 vs 嵌入 一句话理解便是:embedding model 可以将文本转换为固定长度的连续向量. 架构流程图 3.Qdrant云数据库的搭 ...

  6. wiki语料库训练检索式聊天机器人

    环境: python3.7~9,chatterbot库 语料库: 中文语料库​github.com/brightmart/nlp_chinese_corpus 可以从我的网盘下: trained_tx ...

  7. 无监督端到端检索式问答系统方案实践

    01   背景 暨2021年"十四五"规划将数字政府提上国家顶层设计后,今年两会期间,数字经济.智慧城市再一次成为各界关注的焦点. 3月5日,<政府工作报告>提出要加强 ...

  8. FAQ 检索式问答系统学习记录

    介绍 1. 背景 场景:假设有 一个 标准的问题库,此时有一个 新 query 进来,应该做什么操作? 灵魂三连问: 如何根据 这个 query,你怎么返回一个标准答案呢? 如何从 问题库 里面找 答 ...

  9. 小哥哥,检索式chatbot了解一下?

    来自 夕小瑶的卖萌屋 作者 夕小瑶 喵喵喵,一不小心又匿了三个月,突然诈尸害不害怕( ̄∇ ̄) 小夕从7月份开始收到第一场面试邀请,到9月初基本结束了校招(面够了面够了T_T),深深的意识到今年的对话系 ...

最新文章

  1. Python实现一元及多元线性回归
  2. 新年总结:2018年,是我妈最快乐的一年
  3. 操作系统、Linux、CPU的几个疑惑点
  4. Verilog 中如何无误使用 generate for?
  5. Java《剑指Offer》面试题2:替换空格
  6. 聊聊JVM(一)相对全面的GC总结
  7. 小米岭南通服务器维护,小米岭南通交通联合卡内测开启
  8. java线程“生产/消费”模型2
  9. 网页获取客户端IP的两种方法
  10. python实例 87,88
  11. dumpsys使用方法
  12. python 利用matploylib画动态雷达实时显示图
  13. Typora+picgo+gitee图片外链失效,Typora历史笔记无法显示图片
  14. 特教学校计算机课,特教学校引入编程课 为听障孩子打开智能之门
  15. Microbiome:鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)
  16. 车载网络测试 - 车载以太网 - ICMP详细解析
  17. 2023免费的电脑恢复丢失数据软件EasyRecovery
  18. 调整PC版百度网盘界面清晰度(其他软件也适用)
  19. css样式 向下补白,CSS尺寸与补白
  20. 总说业务,到底业务常用的指标有哪些

热门文章

  1. rocksdb和spdk
  2. vxlan专题---第四章配置分布式网关部署方式的华为VXLAN示例-外部路由type5
  3. 27.WLAN组网介绍_VLAN在WLAN业务中的应用
  4. Ubuntu上实现多分屏窗口管理
  5. 什么是UrlRewrite?
  6. 2021-10-23数据中心基础设施三大件:计算、存储和网络。网络是最大的问题!
  7. python继承怎么写_python 继承
  8. confluent-kafka-go依赖库编译体验优化
  9. 一元三次多项式因式分解的两种方法
  10. 统计了300课时的代码,得到学Python需要掌握的1024个英语单词