如何开发一个特定领域的自动问答机器人?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何开发一个特定领域的自动问答机器人?相关的知识,希望对你有一定的参考价值。

就是简单的 QA pair 即可。用户每输入一句话时,要识别用户意图并匹配到对应 QA,或者匹配失败告知用户 Bot 不知道这个问题。这一步我们通常称为 Intention Classifier,我最近刚好写了一篇文章讲我的处理:MSRA 搬砖小记 | 类 One-Hot 方法的 Sentence Level 文本相似度匹配。由于场景不完全一样,具体 Sentence Embedding 方法可能不一定适用,但是预处理和 Word Embedding 都是通用的。提到这是「相似度匹配模型(Similarity Measurement)」,更加准确的说,best practice 是 Ranking 模型,即针对用户输入,给全部待选 QA 打分,并取出最好的(或前 N 好的)。有时人们会把这一步处理成 Classify 模型,但其实这样后续是有不少问题的,比如 Not-Found 如何匹配。这里面再继续还可以深入,题主说对 AI 零基础,就不多展开了。关于 Sentence Embedding,不建议用某些库自带的 sentence2vec function,效果很差。Sentence 及以上级别的 Embedding 在学界仍然是有待研究的问题,现在并没有特别好用的工程轮子。这部分如果考虑简单实用的话,建议用 TF-IDF Word Embedding & Sum 来做,或者我专栏里写的 One-Hot。如果题主有需要可以评论我,待会可以给你找一个 Text Similarity 的综述过来。目前学界对 close-domain 的单轮问答系统研究已经非常成熟了,拿「Single turn QA System」去 Google Scholar 上搜大把的 paper。Open-domain 的单轮问答系统也已经有了许多不错的研究成果,例如 Facebook 这份工作 [1704.00051] Reading Wikipedia to Answer Open-Domain Questions,就是利用 Wikipedia 的知识来回答 Open-domain 的问题。问答系统有两个比较重要的性质,一个是 domain,一个是轮次。Domain 分 close-domain 和 open-domain,轮次分单轮和多轮。

参考技术A

现在各级别的会议都在研究这玩意,问答效果,只要取决于你这个 domain 的大小,以及数据集的大小。 最近看的 paper,用神经网络做的,有两个模型:一个订餐厅,而且要提前设定好对话的状态,就是让 human 说出价格,地点,菜系..等等,才能完成;另一个,根据你的描述,从数据库一张表中找到一个 item。 开放型的被机器人 很难。 不过,你想练手可以: 存储一些问题以及答案,然后问一个问题,计算这个问题和已有问题的相似度rule based,这东西是世界难题,哪有练手那么简单...... 从中文 NLP 最基础的分词开始,就够你吃一壶了,还有词性标注、实体命名识别、句法依存,每前进一步都很困难。 单纯想熟悉一下,gayhub 上搜索`chatbot deep learning`,一堆,弄个测试,大概一下午就好了。当然,你训练的对话结果如果不是“你好”、“你好”、“你好”,算我输......

以上是关于如何开发一个特定领域的自动问答机器人?的主要内容,如果未能解决你的问题,请参考以下文章

图灵机器人,web录音实现自动化交互问答

jvm系列:JVM问答

利用百度AI快速开发出一款“问答机器人”并接入小程序

报名 | CCKS2021评测任务:生活服务领域知识图谱问答

基于UDP协议实现的‘智能’问答机器人

想聊天?自己搭建个聊天机器人吧!