FAQ(常见问题解答)

FAQ是英文Frequently Asked Questions的缩写,中文意思就是“常常问到的问题”,或者更通俗地叫作“常见问题解答”。FAQ是当前网络上提供在线帮助的主要手段,经过事先组织好一些可能的常问问答对,发布在网页上为用户提供咨询服务。 

在不少网站上均可以看到FAQ,列出了一些用户常见的问题,是一种在线帮助形式。在利用一些网站的功能或者服务时每每会遇到一些看似很简单,但不通过说明可能很难搞清楚的问题,有时甚至会由于这些细节问题的影响而失去用户,其实在不少状况下,只要通过简单的解释就能够解决这些问题,这就是FAQ的价值。php

在网络营销中,FAQ被认为是一种经常使用的在线顾客服务手段,一个好的FAQ系统,应该至少能够回答用户80%的通常问题,以及常见问题。这样不只方便了用户,也大大减轻了网站工做人员的压力,节省了大量的顾客服务成本,而且增长了顾客的满意度。所以,一个优秀的网站,应该重视FAQ的设计。算法

通常是指产品的说明或者使用帮助,如社区软件PHPWind帮助中心:专门介绍phpwind的使用教程和技术分析,使用说明,百度的帮助中心,有的直接当百科全书。其实像百度知道和百度百科就是一个很庞大的FAQ,spacebuilder用户社区中的FAQ就采用了相似百度知道的社会化问答模式。网络

FAQ是客户常见的问题,设计的问题和解答都必须是客户常常问到和遇到的。为保证FAQ的有效性,首先要常常更新问题,回答客户提出的一些热点问题;其次是问题要短小精悍,对于提问频率高的常见的简单问题,不宜用很长的文本文件,这样会浪费客户在线时间。而对于一些重要问题应在保证精准的前提下尽量简短。为保证方便客户使用,首先FAQ应该提供搜索功能,客户经过输入关键字能够直接找到有关问题;其次是问题较多时,能够采用分层目录式的结构组织问题的解答,但目录层次不能太多,最好不要超过四层;第三是将客户最常常提问的问题放到前面,对于其余问题能够按照必定规律排列,经常使用方法是按字典顺序排列;第四对于一些复杂问题,能够在问题之间设计连接,便于方便地找到相关问题的答案。函数

Introduce:日趋增多的网络信息使用户很难迅速从搜索引擎返回的大量信息中找到所需内容。自动问答系统为人们提供了以天然语言提问的交流方式,为用户直接返回所需的答案而不是相关的网页,具备方便、快捷、高效等特色。测试

Process:本文的问答系统采用了一个FAQ(Frequently Asked Questions)问答库,并基于句子类似度进行设计。优化

1)首先创建一个足够大的问题答案库,即语料库--------建库网站

2)而后计算用户提问的问题和语料库中各个问题的类似度-------计算类似度-------余弦定理ui

3)最后把类似度较高的问题所对应的答案返回给用户。-------返回结果搜索引擎

core: 本文的核心是句子类似度的计算,分别使用了TF-IDF和word2vec两种方法对问句进行向量化,并在此基础上使用进行句子类似度的计算。spa

Improve:为了提升整个系统的运行速度,本文对算法的计算进行了相应的优化。

key words:FAQ;句子类似度;TF-IDF;word2vec;余弦定理

part1: research background and meaning

   基于常问问题集的问答系统是在已有的问题答案对的集合中找到与用户提问相匹配的问题,并将其对应的答案直接返回给用户。

     问答系统是目前天然语言处理领域的一个研究热点

    优势:1)让用户用天然语言句子提问

              2)为用户返回一个简洁、准确的答案,而不是一些相关的网页。

     与传统的依靠关键字匹配的搜索引擎相比,可以更好地知足用户的检索需求,更准确地找出用户所需的答案,具备方便、快捷、高效等特色。若是用户的提问与以往的记录相符,可直接将对应的答案提交给用户,免去了从新组织答案的过程,能够提升系统的效率。

   常问问题集(FAQ)能够做为自动问答系统中的一个组成部分。它把用户常常提问的问题和相关答案保存起来。对于用户输入的问题,能够首先在常问问题库中查找答案。

    若是可以找到相应的问题,就能够直接将问题所对应的答案返回给用户,而不须要通过问题理解、信息检索、答案抽取等许多复杂的处理过程,提升了效率。咱们提出的FAQ(Frequently Asked Questions)系统在根据用户问题创建候选问题集的基础上,创建常问问题集的倒排索引,提升了系统的检索效率,同时,与传统的基于关键词的方法相比,用基于语义的方法计算类似度提升了问题的匹配精度。

part 2: FAQ Answering System

2.1 Introduction to FAQ Answering System

    问答式检索系统容许用户用天然语言提问,从大量异构数据中准确而快速查找出提问的答案,是集天然语言处理技术和信息检索技术与一体的新一代搜索引擎。这种提供准确、简洁的信息的方式更接近于人的思惟和习惯,是下一代搜索引擎的发展方向。

    FAQ问答系统是一种已有的“问题-答案”对集合中找到与用户提问相匹配的问句,并将其对应的答案返回给用户的问答式检索系统。因为FAQ问答系统免去了从新组织答案的过程,能够提升系统的效率,还能够提升答案的准确性。这其中要解决的一个关键问题是用户问句与“问题-答案”对集合中问句的类似度比较,并把最佳结果返回给用户。

2.2 The "Questions - Answers" Library

     FAQ问答系统须要一个“问题-答案”库的支撑,库的好坏直接影响问答系统的效果。本设计所用的“问题-答案”库来源于百度知道的问题和对应的答案,共有10000条。用户输入问题,而后从库中匹配类似度符合设计阈值的问题并显示其答案。

     

部分问题

 

部分答案

3 System Design and Implementation

 

3.1 Design Principles and Flow Charts

思想:把语料库的问题和用户所提问题预处理,而后向量化,最后经过计算两向量之间的余弦夹角值做为衡量类似度的值。只有该余弦值大于程序设定中的阈值才会将这些问题做为候选问题返回给用户。本设计的阈值设置为0.5,同时并选择类似度最高的前5个问题(Top5)所对应的答案返回给用户。若没有大于阈值的样本,则提示用户当前的提问没有类似的答案。系统的设计框图如图3-1所示。

 

3.2 Pretreatment of Questions

    预处理是对问句进行初步处理的过程。本文对评论文本依次进行了去空去重、切词分词和停用词过滤操做。

    原始网络评论会存在一些空或重复的问句,须过滤掉这些无价值且影响效率的问句。使用计算机自动地对中文文本进行词语切分的过程称为中文分词(Chinese Word Segmentation),即便中文句子中的词之间有空格标识。若要对一个句子进行分析,就须要将其切分红词的序列,而后以词为单位进行句子的分析,故中文分词是中文天然语言处理中最基本的一个环节。

    分词以后须要对每一个词进行词性标注,为接下来的停用词过滤提供便利。停用词(Stop Word)指一般在评论文本中出现的频率较高,但对肯定评论的情感类别没有做用的词。停用词过滤指去掉评论文本中停用词的过程。本文使用中科院的“计算所汉语词性标记集”以及哈工大停用词表对评论文本进行停用词过滤。根据“计算所汉语词性标记集”,肯定出要过滤掉的词性有:标点符号、介词和代词等,这些词性的词信息量低,无类别区分做用。本文先对评论文本进行词性过滤,再根据哈工大停用词表进一步过滤。

                             

预处理后的部分问句

 

3.3 Text vectorization

在进行类似度计算以前,须要将每条问句都转换成向量的形式,即将每条问句都映射到一个向量空间,分别使用了两种方法TF-IDF(词频-反向文档频率)和word2vec对问句文本进行向量化。

 

3.3.1 TFIDF method based on vector space model

从FAQ中全部预处理后的问句中提取特征后,造成一个词汇表,则FAQ 中的每个问句均可以用一个n 维的向量来表示。的计算方法为:设在当前问句中出现的次数,为FAQ中含词汇的问句个数,为FAQ中问句的总数,那么

    能够看出,一个问句中出现次数多的词将被赋予较高的值,但这样的词并不必定具备较高的值。

    eg:汉语中“的”出现的频率很是高,TF值(k值)很大,但“的”在不少问句中都出现,它对于分辨各个问句并无太大的帮助,它的IDF值是一个很小的数。所以,这种方法综合地考虑了一个词的出现频率和这个词对不一样问句的分辨能力。

    在计算用户提问问句的n 维向量时,用户提问问句和FQA库中的问句b不是同时向量化的,故在对FQA库中的问句向量化时,须要保存每一个特征的ID F值,便于用户提问问句中特征词TFIDF值的计算。

 

3.3.2 word2vec word vector model

 

word2vec是用来产生词向量的一组相关模型。它利用输入的语料来产生一个向量空间,在这个向量空间中,每一个词对应一个点,语义上相近的词在向量空间上对应的点也相近。

word2vec中两个重要的模型:

CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。

CBOW模型的思想是用上下文来预测当前词的几率,而Skip-gram模型的思想是用当前词来预测其上下文词的几率。它们的目标函数分别为:

 

左为CBOW模型,右为Skip-gram模型

本文使用sougou大语料并基于CBOW模型训练获得词向量,而后使用问句中每一个特征词对应词向量的算术平均做为问句的句向量。

 

3.4Calculation of sentence similarity based on cosine theorem

    问句之间的类似度能够转换为向量之间的距离来进行度量。距离越小问句之间的类似性越大,反之亦然。

    本文采用余弦夹角来计算向量之间的类似度,类似问题通常包含更多相同的特征词,两个问句的主题是否接近,取决于它们的特征向量“长得像不像”。是用户提问的问句向量,获得后,它们所对应的两个问句之间的类似度就能够利用和这两个向量之间夹角的余弦值来表示。类似度的计算公式以下所示:

    由上述公式可知,的值越大,说明二者的类似度越高,反之则越低。

    余弦类似度的定义虽然简单,可是在利用上述公式计算两个向量的夹角时,计算量为,当用户提出一个问题时,需计算次(为语料库中问句的数量,本文的语料库中的问句数为10000条),若是语料库很大,则将答案返回给用户须要很长的时间。

    咱们这个方案解答须要大概30秒的时间,这个时间对于用户来讲过于长,用户体验效果不佳。为了下降计算量,本文在计算类似度时进行了一些简化:

1)首先,分母部分(即向量的模)不须要重复计算,便可以将它们进行预计算,并将预计算的结果保存起来,等计算向量模的时候,直接取出来便可。

2)其次,分子部分,即在计算两个向量的内积时,只需考虑向量中的非零元素,计算复杂度取决于两个向量中非零元素个数的最小值。这两个简化方法在使用TF-IDF向量化时效果比较明显,由于TF-IDF获得的向量极其高维和稀疏,而word2vec获得的向量则是低维和稠密,效果不是很明显。

4Experimental results and analysis

4.1 Experiment Settings

 

表4-1 测试问题集

具备类似性的问题

基本无类似度的问题

1.小米怎么发彩信啊?

1.大脸剪什么短发好看

2.如何成为经理?

2.怎么作拔丝地瓜

3.怎样在聚划算卖东西

3.华为自动关机为何

4.怎样中止建行卡的短信通知?

4.去哪买手机比较好

5.你对知音有什么见解

5.怎样提升数学成绩

6.地震你怎么看

6.什么翻译软件比较好

7.选哪一个快递?顺丰咋样

7.出国去哪里比较好

8.湖南长沙要穿防晒服吗

8.身份证掉了怎么补办

9.三星I910存储量是多少

9.怎样种蓝庭芥

10.CAD的修剪命令怎么操做?

10.理八栋谁最帅

 

4.2 Experimental Results and Analysis

基于TF-IDF算法的句子类似度计算方法基本能够回答表4-1中“具备类似性的问题”,而对于表4-1中“基本无类似度的问题”,则会提示用户该问题基于当前的FAQ问答库没法回答,这说明基于类似度的FAQ问答系统彻底依赖于语料库。

 

 

类似问题测试结果

 

 

 

基本无类似度问题测试结果

 

    当输入与语料库中问题类似的问题时,能获得较为正确的答案。

    而对于与语料库中问题基本无类似度的问题,系统则会提示用户系统回答不了当前问题。

    本文的TF-IDF算法的问答系统设置了相应的阈值,即当用户提问的问句与问答库中的问句类似度大于阈值时,才输出相应的问句所对应的答案,这里阈值是0.5。除此以外,本文对于阈值过滤后的答案,进行排序,先出阈值最高的前5个(Top5)反馈给用户。

    基于word2vec的句子类似度计算方法,在计算速度上比基于TF-IDF的方法速度快,由于word2vec训练出来的向量要更低维和稠密。可是因为在进行词向量训练的时候,使用的是sougou大语料,该语料与本文的问句没有太大的关系,故训练出来的词向量不能很好的表明问答领域问句的一些语义信息,故在最终进行测试的时候,计算出来的结果没法达到预期的效果。

 

 5 Summary and Outlook

    本文使用了两种句子向量化算法对句子进行向量化:即TF-IDF和word2vec。

    这两种向量化算法都能在必定程度上刻画出句子之间的类似度【余弦类似度】。

    对于TF-IDF算法,其训练出来的句子向量具备高维、稀疏的缺点,故在计算的时候比较慢,本文针对这个问题对其进行了优化,在必定程度上下降了时间复杂度。

    相反,对于word2vec算法,其训练出来的向量具备低维、稠密的优势,计算速度快,但词向量的训练须要大量的语料才能达到好的效果。此次训练语料比较不匹配,获得的向量不能很好地表示句子之间的类似性,效果较差。

    因而可知,在进行word2vec词向量的训练时,须要根据具体的问题,使用合适的语料,这样才能更好的表示句子之间的类似度。