北大计算机中心龙新征,北京大学:基于多层策略的北大信息服务智能问答系统研究...

3.2 特定服务查询模块

特定服务查询模块最关键工作是将查询问句转换成预设的服务接口。

以教室空闲状况为例,查询问句可能是:“今天的空闲教室有哪些?”、“今天二教的空闲教室有哪些?”、“今天二教下午的空闲教室有哪些?”等。首先,这类查询问句都会包含核心关键词“空闲教室”,这就对应了接口类型;其次,这类查询问句是按时间、地点来查询的;当然时间和地点的顺序是可以调整的;而且时间还有不同的粒度,如:周、星期、日期范围、具体日期、时段等等,因此形成了不同的问题模式,如:只指定时间周次的问题模式、指定了时间周次和星期的问题模式、指定了时间周次和星期以及地点的问题模式等;

基于“模式匹配”的方法流程如下:

step1:对查询问句进行分析,提取出核心关键词,根据核心关键词确定查询语句的接口类型;若找不到对应的接口类型,则进入常见问题查询,否则进行step2~step5;

step2:对查询问句进行词性标注,根据词性,确定查询问句的问题模式;

step3:根据查询问句的接口类型和问题模式查找FSI,找到与之严格匹配的问题模式和该问题模式所对应的服务接口实例;

step4:根据查询问句中相应部分作为参数,代入服务接口实例,访问服务,返回结果。

3.3 常见问题查询模块

常见问题查询模块的处理流程如图2,核心步骤是特征关键词提取、分类器构造和问句相似度计算。

da654b91d396c39eacb865f6c5ca606c.png

图2 常见问题查询模块处理流程

3.3.1 问题分类及特征关键词提取

因为常见问题的来源是校园不同网站上的FAQ列表,所以问题分类很明确,即来源相同的FAQ问句属于同一类别,如:网络服务,图书馆,校园卡等。

对每一个类别c,我们使用λ2统计量特征抽取算法[6]提取代表该类别的特征关键词。

FAQ库中有N条问句,考察一个词w与类别c之间的相关性,若:

(1)包含w且属于c类别的问句数为A;

(2)包含w但不属于c类别的问句数为B;

(3)不包含w但属于c类别的问句数为C;

(4)既不包含w也不属于c类别的问句数为D;

则词语w与类别c的之间的相关性表示为:

对每个类别,特征关键词提取的方法如下:

step1:对FAQ库中该类别下的所有问题进行分词,得到候选关键词集合;

step2:对候选关键词集合中的每个词语,按上面的公式计算其与该类别的相关性;

step3:将候选关键词集合按照相关性值从大到小排序;

step4:选择最大的50个词语当做该类别的特征关键词;

3.3.2 分类器构造

分类是在已有训练集的基础上构造出一个分类器。考虑到查询问句字数一般较少、常见问题查询模块分类明确、特征关键词能较好地辨别出查询问句所属的类别,本文采用基于向量空间模型的余弦相似度分类算法分类。算法如下:

step1:对每一个类别的特征关键词集合,计算出其并集,以并集中的每一个词语为1个维度;

step2:对于属于每个类别前10的特征关键词的词语,其权重设置的比较大,如设置成5,其他词语权重设置为1;

step3:得出每个类别的特征向量C1,C2,…,Cn(n为FAQ中类别总数):包含该关键词且属于前10关键词则向量的这一项的值为5,包含该关键词且不属于前10关键词则向量的这一项的值为1,不包含该关键词则向量的这一项的值为0;

step4:对查询问句按照(3)中计算方式得出查询问句的特征向量X;

step5:分别计算C1,C2,…,Cn与X余弦值,取最大的即为查询问句所属的类别。

3.3.3 问句相似度计算

采用车万翔等人提出的“基于改进编辑距离的算法”计算问句间的语义相似度[7]。此算法以普通编辑距离算法为基础,将编辑单元从单个字符改成单个词;使用《同义词词林扩展版》计算词与词之间语义距离;同时为每个合法的编辑操作设置不同的操作权重。算法描述如下:

输入:经过分词后的两个句子S1和S2

For i,M[i,0]=i

For j,M[0,j]=j

For i≥1,j≥1,

M[i,j]=min{M[i-1,j]+1,//删除操作

M[i,j-1]+0.1,//插入操作

M[i-1,j-1]+ Dist(S1i,S2j)

}

输出:S1和S2的改进编辑距离

M[Ii,j]代表句子S1分词后的前i个词和句子S2分词后的前j个词的改进后的编辑距离,M[Ii-1,j]+1代表S1删除一个词的代价为1,M[Ii,j-1]+0.1代表S1插入一个词的代价为0.1,Dist(S1i,S2j)代表S1分词后的第i个词A和句子S2分词后的第j个词B在《同义词词林扩展版》中的语义距离。《同义词词林扩展版》里每一个词有一个对应的8位数编码,对应大类、中类、小类、词群和原子词群5个层级:

d65caf92fc07e622567d6fb779195ed4.png

这样,Dist(S1i,S2j)的定义为:Dist(S1i,S2j)=2(5-n),其中n为词S1i与S2j从第n级编码开始不同。

问句间的相似度大小与问句间改进的编辑距离成反比:编辑距离越大相似度越小,编辑距离越小相似度越大,故取FAQ库中编辑距离最小的问题作为候选问句。仅当编辑距离小于常见问题查询模块设置的阈值时,直接将候选问句对应的问题-答案对返回给用户,否则,进入自由文本检索进行处理。

3.4 自由文本检索模块

自由文本检索模块处理流程如图。核心步骤是问句分类、信息检索和答案抽取。

312677b2d0c47d74be6e8b0c5a2d7a36.png

图3 自由文本检索模块处理流程

3.4.1 问句分类算法

本文采用基于规则与基于改进贝叶斯模型的问题分类算法相结合的方法对问句分类。首先通过提取问句中的疑问词及其相关词的组合,来判断问句的类别,当不能判断出问句的类别,再运用基于改进贝叶斯模型的问题分类算法[8]。

本文一共定义了11个问句类别,包括:人物类、地点类、时间类、数量类、原因类、方式类、实体类、定义类、范围类、是非类以及未知类别,使用的语料来自于FAQ库以及用户历史问题记录库里的问句,对这些问句做了人工问句类别的标注。对于某个查询问句Q,设其分词且去除停止词的结果为Q=(Q1,Q2,…,Qn),问题类型变量为qc,则Q最大可能属于哪个类别的计算公式为:

在不考虑前后分词之间的语义关系的前提下,我们将公式可以简化为:

Qi为Q的某个分词,我们用term代替,采用如下的近似计算方法来进行问题分类:

分别计算分词term在11种问句类型中出现的个数,我们将term在qc这种类型中出现的次数记为counter(qc,term)。

对于某个类别qci,定义:

N表示问题类别的总数目,在这里N=11,由于counter(qc,term)可能为0,故加上0.5这个调零因子。

采用TF-IDF对P1(qci,term)进行降低权值的处理:

M表示term在M种类型中出现,0.1是调零因子。

3.4.2 答案抽取算法

由于本文采用的是solr全文检索引擎,它可以检索出与查询句相关性最高的几个文档,同时也会对查询句进行分词,并将命中关键词的地方使用特殊的标签标记出来,故本文取solr返回的相关度最高的前10篇文档,然后进行如下操作:

step1:对于这10篇候选文档,solr对命中关键词进行了标记,调用solr提供的API可以获取这些命中的关键词及其所在的文档的具体位置的集合。遍历该集合,对每个命中点都进行step2~ step6操作;

step2:为了保持段落的完整性,从命中位置开始向左扩展候选答案段落,在遇见中英文的句号或者逗号,感叹号等符号截止,由于是HTML文档,遇到“>”也可以代表段落的开始。在遍历的同时记录命中单词的种类以及个数。同时,在遇到“;”或者“,”等代表一个分句时,继续向左扩展段落。注意保持句子数不超过阈值3且尽量保证起始命中点所在的句子处在段落的中央;

step3:从命中位置开始向右扩展候选答案段落,同时保证答案段落的句子数不超过阈值3,当句子数超过阈值或者遇见中英文的句号,逗号或者感叹号时结束,由于是HTML文档,遇到“

step4:对筛选出来的答案段落进行进一步的数据清理,对结果段落中可能存在的HTML标签进行去除处理,同时检查是否满足候选答案段落的三点要求,将满足要求的段落加入候选答案段落集之中;

step5:不断的扫描完整个关键词命中点集合,从而筛选出所有满足条件的候选答案段落,最后遍历候选答案段落集合中的候选答案,计算其与查询句的相似度,选择相似度最高且大于阈值的段落返回给用户,这里的相似度算法仍采用基于改进编辑距离的相似度算法;

step6:如果能分析出查询句类型且可以从step5中的候选答案段落中抽取出简短的答案短语,则直接抽取出来返回给用户,否则直接返回step5中的段落;

4.校园智能问答的实现与部署

本文在北京大学信息服务微信公众号中利用上述模型实现了北京大学相关事务的问答功能,其部署结构如图4所示。

87e2183b86813772ab13cdfc2b31f5ab.png

图4 PKU-ISQA部署结构图

系统的工作流程如下:

step1:用户通过微信客户端向公众账号发送消息,请求首先会被微信服务器接收到;

step2:微信服务器接收到消息后,根据开发者在接口配置信息中填写的URL,将请求通过HTTP POST方式加密传递到校内微信接入平台;

step3:校内微信接入平台接收消息后,对消息进行解析,根据消息内容按多层策略访问PKU-ISQA并返回答案;

step4:将答案以文本消息的形式返回给微信服务器;

step5:微信服务器将文本消息发送给用户;

对系统的的整体性能进行测试,测试结果如表3所示:

86353daf90fb498f79607bd9ff11a954.png

系统的整体正确率80%左右,初步达到可用目的。由于各种客观原因,系统中仍旧存在一些可以改进的问题:

1)知识库的知识还是不够丰富,需要长久地积累,知识库的不丰富也导致了当用户查询库中没有的知识时不能得到很好的答案;

2)为了系统实现的便捷,在自由文本检索模块的答案抽取算法中采用最多抽取3个句子的段落,可能造成答案的多余或者答案的部分缺失。

上述问题由于客观条件的限制暂未实现,如果可以解决上述几个问题,就可以进一步提高问答系统的高效性和正确率,这也是下一步的研究重点和方向。

参考文献

[1]. 王树西, 刘群, 白硕. 问答系统研究综述[A]. Proceedings of the 20th International Conference on Computer Processing of Oriental Languages, 2003, 498-506.

[2]. 余正涛, 樊孝忠, 郭剑毅. 基于支持向量机的汉语问句分类[J]. 华南理工大学学报(自然科学版), 2008, 33(9) : 25-34.

[3]. 刘松. 基于全信息的问答系统研究[博士学位论文]. 北京, 北京邮电大学, 2014.

[4]. 陈玉. 问答系统中问句分类算法研究[J]. 软件工程师, 2015, 18(11): 30-31.

[5]. 郑实福, 刘挺, 秦兵等. 自动问答综述[J]. 中文信息学报, 2002, 16(6): 46-52.

[6]. 胡佳妮, 徐蔚然, 郭军, 邓伟洪. 中文文本分类中的特征选择算法研究[J]. 光通信研究, 2005(3):44-46.

[7]. 车万翔, 刘挺, 秦兵, 李生. 基于改进编辑距离的中文相似句子检索[J]. 高技术通讯, 2004, 14(7):15-19.

[8]. 张宇, 刘挺, 文勖. 基于改进贝叶斯模型的问句分类[J]. 中文信息学报, 2005, 19(2):100-105.

作者单位:龙新征、欧阳荣彬、李庭晏为北京大学计算中心,郑建宁为北京大学信息科学技术学院

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值