开发一个智能问答机器人(优化篇)

 

上一篇介绍了整个问答机器人的技术架构和特定,本篇着重说下

 

如何让机器人(看起来)更智能

输入联想

使用jquery.autosuggest.js实现的输入联想,在输入2个字后,在5000个问答中基于全文检索,检索10条记录,供用户选择。

猜你想问

Chatterbot中也有阈值的概念,例如匹配度低于0.2,可定义为无法回答,但可以额外增加一个阈值,如0.5

当匹配度0~0.2回复无法回答

当匹配度0.2~0.5 回复我猜您想问“XXX”

当匹配度0.5~1回复匹配问题“XXX”

上下文变化

 意图规则JSON数据格式,prompts为缺失该参数是的返回值,我们可以多设置几个,再用随机数获取,这样每次与用户交互的问题都是同样含义的不同问法,也有助于消除歧义。

{
"rule": [{
"intent": "weather",
"entities": [
{"name":"city","type":"city","required":"true","prompts":["请问查询哪里的天气","想查询哪个城市的天气"]},
{"name":"date","type":"date","required":"false","prompts":[]}
]
},
{
"intent": "bookhotel",
"entities": [
{"name":"city","type":"city","required":"true","prompts":["请问预订哪里","想预订哪个城市"]},
{"name":"checkindata","type":"date","required":"true","prompts":["请问何时入住","预订酒店的时间"]},
{"name":"checkoutdata","type":"date","required":"false","prompts":[]}
]
},
{
"intent": "bookticket",
"entities": [
{"name":"fromcity","type":"city","required":"true","prompts":["请提供出发城市","从哪起飞"]},
{"name":"tocity","type":"city","required":"true","prompts":["请提供到达城市","到哪落地"]},
{"name":"date","type":"date","required":"true","prompts":["请问预订机票的时间","想预订哪天的机票"]}
]
}
]
}

 

如何优化机器人

1.关键字

预先定义QA与关键词的匹配关系,如果用户问题中包含关键词,则检索与此关键词匹配的QA,缩小查询范围,如果同时包含多个关键字,则unionQA列表,如果不包含关键字则从全部QA检索。

在问题、答案的基础上加入关键词列。

初始化时,使用行列转化,将关键字和问题加工成1对1的关系

这样在算法比对时,仅判断包含关键字的问题,比对数据量从5000变为了几十条速度提升非常明显,而且还能略微提高正确率

 

2.缓存

主要设置了2级缓存:缓存5000条问答数据,缓存用户提出的问题和引擎的答案(如果有人问过的问题,将直接从缓存回复)

3.中文处理

自定义词典,中文处理也是很重要部分,分词工具使用jieba,我们将之前标注的关键字作为自定义词典,用来提供特定业务分词的准确性。

去标点符号,标点符号在问答系统中是非常讨厌的,我在训练和用户输入处理时会移除全部的标点符号

去停用词,“是什么,什么时候,是什么意思,多少钱,有没有,更有趣,更有甚者,又为什么,有问题吗,有问题么”等等,这类词在用户提问中经常出现,却没有实际意义,分词后将这类词屏蔽。

 

转载于:https://www.cnblogs.com/yilanyang/p/8630299.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Java将项目插入DynamoDB表

在上一篇文章中,我们学习了如何使用Java创建DynamoDB表。 下一步是将项目插入到先前创建的DynamoDB表中。 请记住,对于插入操作,最基本的步骤是指定主键。 对于表用户,主键是属性电子邮件。 您可以根据需要添加任意数量的属性&am…

计算机vb操作题评分细则,上机考试的试题及评分标准.doc

上机考试的试题及评分标准上机题总分占40分,其中改错题占14分,编程题占26分。(1)改错题:题目中都是设3个错误点(在历年上机考题中也出现过只有2个错误点的试题),一般分别是语法错误(如数组的声明、重复定义等略有难度的语法错误)、…

面试汇总

HTML部分 1.HTML5新特性,语义化 可以参考 https://blog.csdn.net/qq_26562641/article/details/54669288 2.浏览器的标准模式和怪异模式 可以参考 http://www.cnblogs.com/zzgyq/p/8630709.html 3. xhtml和html的区别 XHTML 元素必须被正确地嵌套…

64 合并排序数组

原题网址:http://www.lintcode.com/zh-cn/problem/merge-sorted-array/# 合并两个排序的整数数组A和B变成一个新的数组。 注意事项 你可以假设A具有足够的空间(A数组的大小大于或等于mn)去添加B中的元素。 您在真实的面试中是否遇到过这个题&…

Ios9 html5,ios9,html5_ios9下在浏览器中通过scheme打开app的问题,ios9,html5 - phpStudy

ios9下在浏览器中通过scheme打开app的问题ios9系统下,safari下通过iframe(scheme)的方式跳app,无法打开app,通过location.hrefscheme的方式倒是可以,不过在没有安装app时,这种方式可能会直接跳转到一个错误页面(无法打…

使用Spring Boot进行面向方面的编程

在上一篇文章中,我提供了一个有关如何通过使用ProxyFactoryBean并实现MethodBeforeAdvice接口在Spring实现宽高比定向的简单示例。 在此示例中,我们将学习如何通过使用Spring Boot和Aspect4j注释来实现方面方向。 让我们从gradle文件开始。 group com…

java中的单例模型

参考网址:http://www.runoob.com/design-pattern/singleton-pattern.html 1.目的:保证一个类仅有一个实例,并提供一个访问它的全局访问点。(比如世界只有一个月亮,党只有一个主席) 2. 优点: 1、在内存里只有一个实例,减少了内存的开销&#x…

计算机电路基础张志良,计算机电路基础

图书简介配套资源:电子课件本书特色:★ 金牌作者编写,专门针对计算机专业设计教学内容★ 内容广、难度浅、适用面宽★ 配有《学习指导与习题解答》(ISBN 978-7- 111- 35112-2)本书配套资源,样书均可在本页下载申请,也可…

Java-变量函数 上

类的组成(三部分)全局变量(成员变量)和局部变量成员方法(函数)变量按照变量的数据类型分类基本数据类型 字符型 布尔 整型 浮点型引用数据类型 String 数组根据变量定义的位置不同(或者…

计算机程序备份,将应用程序快照备份到计算机

Linux/UNIX 示例脚本创建一个 shell (.sh) 文件,在其中包含类似如下所示的脚本,以自动下载快照。如果密码中包含特殊字符,请参阅“处理特殊字符”。#!/bin/sh# Sample script to download and maintain 10 maintenance backups# Update the f…

跨站点脚本(xss)_跨站点脚本(XSS)和预防

跨站点脚本(xss)如OWASP网站(https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))所述,跨站点脚本(XSS)攻击的变种几乎是无限的。 在这里,我建议使用基于Servlet筛选器的解决方案来清…

ajax的请求参数详解以及前后台交互详解

function rejectSub(){//从隐藏域中拿到userIDvar userId $("input:hidden[nameuserId]").val();var flag;$.ajax({type : "POST",//请求方式有post,get请求方式,这里是post请求url:${base}/compactedExpert/qcVerificationCompact…

countdown软件测试死亡时间真假,countdown

countdown死亡倒计时真的假的?countdown这款软件是一款有电影衍生出来的产品,很多朋友都很好奇这个countdownapp测试死亡时间准不准,那么今天小编就为大家带来详细的介绍,感兴趣的朋友们一起来看看吧!这是一款在电影倒忌时中出现的时钟软件&…

Spring Boot和Spring数据JPA集成

如今,借助于Spring Boot和spring Data,spring和JPA集成已变得轻而易举。 我要设置一个PostgreSQL服务器 docker pull postgres #run the container docker run --name postgreslocal -e POSTGRES_PASSWORDpostgres -d postgres #get the ip docker ins…

专业软件 —— 硬件评测

1. 硬盘评测 crystaldiskinfo:CrystalDiskInfo – Crystal Dew Worldcrystaldiskmark:硬盘跑分,CrystalDiskMark – Crystal Dew World2. CPU 与 GPU CPU-ZGPU-Z转载于:https://www.cnblogs.com/mtcnn/p/9421010.html

桌面记事本软件测试工资,记事本的一个BUG

我们常用的小工具,系统中附件里的“记事本”工具,有个比较有意思的BUG,让我们按以下步骤来看看。1. 在开始菜单的附件里打开记事本2. 复制引号中的内容,粘贴到记事本里“AAAA BBB CCC DDDDD”3. 把它保存到桌面上,文件…

深度学习目标检测算法综述(论文和代码)

RCNN-→SPP Net-→ Fast RCNN-→ Faster RCNN-→ YOLO-→ SSD 思路是:a,生成候选框 b,CNN提取特征 c,分类网络 d,回归,位置精修(refine) RCNN: 论文: https://arxiv.org/pdf/1311.2524.pdf 源码: https://github.com/rbgirshick/rcnn 一些解读…

在计算机中描述景物结构形状与外貌,在计算机中通过描述景物的结构、形状与外貌,然后将它绘制成图在屏幕上显示出来,此类图像称为_____。...

并实打印现共享文件和机等共享功能,计中通屏完全地相信平等互通,网工需的则所作模局域式是,网络的各没有台计一个内部主次之分若要算机。算机述景包括条件主要区域规划发展。过描的咨项目询包括(准备建设阶段。结构包括咨询主要工程任务师的。…

JBoss Fuse:使用JEXL的动态蓝图文件

在本文中,我将展示如何在Apache Aries Blueprint xml文件中添加一些内联脚本。 我不一定会称其为最佳实践,但我一直认为这种功能可能有用。 可能当我被迫使用xml来模拟命令式编程结构(例如使用Apache Ant时)时,我开始…

设置序列

//Oracle 中给主键设置自增长,先设序列,在设置触发器Create table BigCustemer1( ID number(10), cus_name varchar2(20),contacts varchar2(20),phone varchar2(20) ,email varchar2(30),address varchar2(50),notes varchar2(70)); create sequence bi…