system: [SYSTEM]

user: 4. 智能问答系统关键技术 4.1. 知识图谱构建 智能问答的智能核心来自于强大的知识资源，这需要对大规模数据资源进行理解和抽取，转换成计算机可以处理的形式来表示和存储。 早期的知识库是把专家知识通过人工进行构建的，需要大量的人力和物力，这些知识库资源最典型的代表包括英文词汇知识库WordNet、FrameNet、中文词汇知识库HowNet等。这些知识库基本属于通用领域的知识库。 通用领域知识库资源不能满足智能问答系统对知识资源的需求。针对电信业务场景，IQA还需要构建专用领域知识库。 知识图谱构建主要分成三部分：核心信息抽取、知识库构建与更新、知识库可视化。其中核心信息抽取指从语料中抽取核心信息，如实体、实体类别、实体关系、实体属性等；知识库构建与更新指将核心信息抽取的结果以知识库的方式进行构建与更新；知识库可视化指知识库的展示，并提供一定的管理功能。 由于IQA的设计目标是电信场景的智能应答，所以使用了基于知识库和FAQ相融合的智能交互服务技术，将知识与知识的关联整合到系统和数据里面，使IQA更加智能。知识管理既包含了知识库，还有FAQ库等： l 知识库：主要是进行知识库构建和更新，比如本体提取、本体关系提取，将领域知识构建成知识库专家系统，另外能进行一定的推理。 l FAQ库：FAQ主要是面向客服类语料，不能光靠检索和相似计算，也需要对FAQ库进行处理，如同一问题不同问答的语义规则提取、意图类别提取、问题类别提取等。 l 对话库：任何问答都离不开正常的对话交流，因此需要提供对话寒暄库来提高问答的用户体验性。 l 各种词典：存放问答需要的各种词典，如分词、同义词、领域词等。 4.1.1. 实体识别 命名实体识别包括对实体的识别及属性的抽取。实体识别是把文本中的实体划为某一语义类型。主要有三种方法，基于字典、基于统计与基于规则的方法。基于字典的方法这一方法较为简单，主要是通过字符串匹配找寻词库中命名实体，但是通常没有一个全面的实体库，而且比对费时。基于规则算法主要在实体识别过程中加入词法规则、语法规则、语义规则，然后通过规则匹配的方法识别各种类型的命名实体。基于规则方法受限于人工添加规则。基于统计的方法先建立语言模型，利用人工标注或原始语料进行训练，然后在训练数据上估算模型参数，这有利于移植到不同的语言及新领域。基于统计的方法主要利用一些统计模型如隐马尔可夫模型、最大熵模型、支持向量机、条件随机场(Conditional Random Fields，CRFs)等。 在电信领域，NER(命名实体)识别的目的为从语料中抽取出电信领域相关实体。例：“如何办理酒店留言优惠套餐？答：…”，其中加粗部分即为电信领域相关实体。 IQA的实体识别结合了基于字典和基于统计的方法。一方面查找字典，一方面采用基于统计的方法，通过标注语料获得一定数量的已标注的NER数据，用于训练NER模型。然后对于给定的生文本语料，先进行文本预处理(分词、词性标注等)，然后使用训练好的NER模型进行NER识别，最终得到NER识别结果，如图2所示。 图2. 命名实体识别流程图 构建电信领域命名实体库是一个动态的过程。开始时针对电信业务手动建立较小规模的电信实体及属性词典，然后从电信文本及期刊网上获得电信领域的文献，通过建立的词典信息提取特征，使用统计模型进行训练，从而使模型在样本有限的情况下学习到新知识，将筛选出的元素加入词表中。随着项目的深入，数据的增多，则通过对大量数据的学习自动识别电信实体从而扩大命名实体库的规模。 属性抽取的任务是为每个实体语义类构造属性表并抽取出属性值。一方面对于一些数据如电信套餐业务类表格可以通过解析原始数据中的半结构化信息来获得属性和属性值，这种方法绕开了自然语言理解的阅读句子。而更多的知识隐藏在自然语言句子中，当前从句子中提取属性和属性值的基本手段是模式匹配 [ 4 ] 和对自然语言的浅层处理。 4.1.2. 关系抽取 由于知识库采用实体–属性–值的方式进行构建，知识库中的实体之间的关系有以下三种： l 顺序关系： 在电信领域的问答中，用户对于实体的提问具有先后的次序关系，比如先问手机话费业务，再问短信业务。实体之间的顺序关系抓住用户提问的这种先后关系，建立实体间的顺序关系。利用这种顺序关系，解决自动问答系统中当用户提到一个实体时，为其自动推荐下一个实体。 l 共现关系： 在电信领域的文本中，不同的实体经常一起出现，具有比较强的关联关系，我们称之为共现关系。与顺序关系不同的是，共现关系不仅在用户提问中获取，也可以在其它文本中获取(比如业务说明文档等)，没有先后顺序关系，从某种意义上来讲，顺序关系是共现关系的一种。利用这种共现关系，当用户提到某一实体时，为其推荐关联度较大的若干个实体。 l 父子关系： 从电信领域的目录结构中获取实体之间的上下级关系。 关系抽取一般通过人工定义各类关系模型，然后通过模式匹配或者机器学习的方法进行抽取。一般领域知识内，关系模式相对比较固化，可以通过统计算法找到关系模式，再基于关系模板进行抽取。基于深度学习的抽取算法近来比较火热，不仅能减少人工标定的工作，还能够返现尚未人工定义的规则。 4.2. 问题理解 智能问答系统只有知识远远不够，还需要理解人提出的问题，将自然语言表述的问题转化为计算机可以理解的形式化语言。让计算机理解自然语言是非常困难的，也是人工智能领域最难处理的问题之一。 4.2.1 . 领域分类 领域分类主要解决的是把用户提出的问题对应到相应的领域中，减少问题答案的范围，提升对问题的理解力，这是智能问答系统要解决的一个关键问题。在实际的问答系统中，领域知识可能会包含很多种，如果分类错误，答案基本就是错误的。领域分类有词匹配法、规则方法、统计学方法等几种常见方法。 最早的词匹配法仅仅根据文档中是否出现了与类名相同的词来判断文档是否属于某个类别。很显然，这种过于简单的方法无法带来良好的分类效果。 规则方法是为每个类别定义大量的推理规则，如果一篇文档能满足这些推理规则，则可以判定属于该类别。由于在系统中加入了人为判断的因素，准确度比词匹配法大为提高。但是分类的质量严重依赖于规则的好坏，也就是依赖于制定规则的“人”的水平。规则方法可推广性差，一个针对金融领域构建的分类系统，则无法扩充到医疗或社会保险等相关领域，造成巨大的知识和资金浪费。 统计学习方法进行文本分类的一个重要前提是认为文档的内容与其中所包含的词有着必然的联系，同一类文档之间总存在多个共同的词，而不同类的文档所包含的词之间差异很大。而且不光是包含哪些词很重要，这些词出现的次数对分类也很重要。这一前提使得向量模型(VSM)成了适合文本分类问题的文档表示模型。在这种模型中，一篇文章被看作特征项集合来看，利用加权特征项构成向量进行文本表示，利用词频信息对文本特征进行加权。它实现起来比较简单，并且分类准确度也高，能够满足一般应用的要求。 然后根据VSM生成的描述文本特征向量，用例如朴素贝叶斯算法、kNN算法或者SVM算法进行分类。上述方法各有各的优势 [ 5 ] 。kNN算法具有简单、稳定、有效的特点，但时间复杂度较高，适用于文本训练集合规模较小的文本分类系统。朴素贝叶斯算法可应用到大规模文本集合中，具有方法简单、速度快、分类准确率高等优点，但由于朴素贝叶斯算法所基于的假设太过于严格，在实际应用并不完全符合理论中假设条件的情况下，其准确率会有一定程度的下降。因此，在类别数目较多或者类别之间相关性较小的情况下，该算法模型的分类性能才能达到最佳。SVM是以VC维理论和结构风险最小化原则为基础的，克服了特征空间中的维数灾难问题，解决了小样本学习问题，可得到小样本条件下的全局最优解。相对于其它分类算法，稀疏、高维的数据对SVM算法基本没有影响，能够更好地体现文本数据的类别特征。 统计学习模型在实现文本分类中也存在明显的缺陷。统计学习模型没有利用上下文的关系来理解文本信息进行分类。VSM中生成的描述文本特征向量，需要人为的统计并人为的做特征提取工作。统计学习模型泛化能力薄弱，在不同的场景下要进行人为的调整模型的特征。 为了解决上述统计学习模型的缺陷，我们设计了深度学习中的RNN [ 6 ] 模型来进行分类模型的实现，RNN很好的利用了整个文本结构的信息并减少了人为固定特征提取的工作。加强了泛化能力的同时，在应用在类似领域的分类只需增加几个参数而已，可以大大减少人为的工作。 使用RNN模型实现我们要做的领域分类过程如图3所示，首先用对大量广泛语料和特定领域的语料进行分词处理，将分词后的语料代入word2vec [ 7 ] 中，得到词向量的训练模型。然后将我们要验证的特定领域语料代入词向量的训练模型，继而生成特定领域中每个句子所有词的词向量。最后将每个句子的词向量作为输入数据输入到RNN模型当中，根据我们要求的分类情况给出输出向量，进而对整个模型进行训练得到RNN的分类模型。将我们要验证的语句代入到RNN分类模型当中，判断出该语句是否属于特定领域。其中，word2vec开源工具直接从网上下载获得。大量广泛的训练语料从网站上爬虫获得。 我们以聊天语料作为特定领域为例，根据设计的RNN神经网络，对聊天语料进行训练，然后用训练好的RNN分类模型对验证语料进行测试，判断出该语句是否属于聊天类别。 整个问题的难点在于如何用词向量来训练RNN模型，如何确定RNN模型中各个参数，如何根据分类的结果对句子是否为聊天语料进行判别。 图3. RNN实现领域分类的过程 下面给出RNN的整个BPTT算法 [ 8 ] ： 输入：训练集 学习速率 过程： 1. 在(0， 1)内随机初始化网络中的所有连接权和偏移量。 2. Repeat。 3. for all do。 4. 求解中间变量 。 5. 更新输出层偏移量 。 6. 更新隐藏层到输出层的权值 。 7. 更新隐藏层到隐藏层的权值 。 8. 更新隐藏层的偏移量 。 9. 更新输入层到隐藏层的偏移量 。 10. until停止条件。 11. end for。 12. 输出：各层的连接权和偏移量。 一般的停止条件设定为确定误差 ，其中 根据要求去人为给定。 当然上述给出的BPTT算法是基于SGD(随机梯度下降法)去实现的，即每输入一个句子语料的词向量进行一次权值的更新。这样在以后对模型进行泛化能力的加强有更好的作用，也可以作为增强模型去训练。 4.2.2 . 语境识别 交互式问答中问题语境检测可以看作一个二元分类问题，即判别用户提出的问题是与之前问题相关还是不相关。如果相关就可以认为是属于同一个语境，否则认为其属于不同语境。构造二元分类器主要问题就是找出能够有效进行问题相关检测的特征。目前研究来看，对分类有效的特征有：指代成分特征、线索词特征、最长公共词序列特征、名词特征等。利用以上特征就可以利用二元分类算法对当前的问题进行语境识别了。 指代成分特征：如果在问题中包含第三人称代词和指示代词，例如“他”“它的”“这些”等，并且这些指代成分不是指代本问题中出现的实体，那么指代成分只能指代之前问题或答案中出现的词语，所以问题是后继问题。这个特征通过构造的指代词表过滤分词后的问题获得，是布尔值特征，即当问句中包含指代成分时，特征值为True，否则为False。 线索词特征：线索词是指问题句中包含的如“其他的”“综上所述”“总之”这样的词汇，这些词汇提示了问题是与之前问题相关的。我们发现，尽管包含线索词的后继问题数量不是很多，但是线索词可以很准确地识别出后继问题。这个特征是通过线索词表过滤分词后的问题获得的，是布尔值特征，即当问句中包含线索词成分时，特征值为True，否则为False。 最长公共词序列特征：如果当前问题与之前问题中，包含有相同顺序出现的内容词，这样的问题通常为后继问题。例如：“问题1：布什和戈尔的第一场辩论在哪所大学举行？问题2：辩论是在什么时候举行？”，在问题2和问题1有相同的公共词序列“辩论举行”。最长公共词序列特征通过计算两个问题分词之后序列的最长公共字串获得，为减少计算复杂度，可以采用动态规划算法。最长公共词序列特征值是一个自然数集合。 名词特征：如果问题在去除了停用词、疑问词以及问题常用词后，没有包含任何名词，这样问题中没有提及任何具体信息，所以之前的问题一定提供了相关信息，则问题应与之前问题相关。通过对问题分词和词性标注处理，我们就可以获得这个特征值。这个特征值是一个布尔值，即当问句包含名词时，特征值为True，否则为False。 利用构建的基于以上4个特征二元分类器来进行交互式问答的问题相关检测，分类器采用标注了相关和不相关的TRECQA任务翻译成中文的问题集训练获得。训练二元分类器的方法是对于每个问题获取7维向量 ，其中每个向量分量对应于指代成分特征、线索词特征、最长公共词序列特征、名词特征、相同实体特征、句法结构特征和内容词相关性特征。首先对问题集中每个问题进行分词、词性标注、句法分析以及命名实体识别的预处理，然后根据问题句预处理的结果，就可以获得指代成分特征、线索词特征、名词特征以及句法结构特征。而对于最长公共词序列特征、实体相同特征以及内容词相关性特征，采用经过预处理后的问题 和之前的n个问题 分别按照特征中描述的方法计算，取其最大值作为问题向量的相应分量，即问题 的m特征分量： 。根据训练集问题的问题向量以及问题相关和不相关标注，采用C4.5决策树的方法通过训练就可以获得问题相关检测的二元分类器。 智能问答系统涉及的关键技术点不限于以上所述，还有省略恢复 [ 9 ] 与指代消解 [ 10 ] 、相似度计算、智能对话管理等等，鉴于篇幅有限，不再展述。