黄东晋 梁景坤 李 娜 丁友东
(上海大学 上海电影学院,上海200072)
目前而言,移动互联网已经步入了高速发展的时期,随之带来的也是信息爆炸的时代。想要快速获取有价值的信息对于搜索引擎而言是一项非常困难的任务。搜索引擎通常用于帮助人们快速获取所需信息,但百度和谷歌等传统搜索引擎仅根据用户的问题返回相关文档列表,搜索引擎无法准确定位用户意图并返回准确答案。为了解决搜索引擎引起的信息过载问题,智能问答系统也应运而生。智能问答系统目的是让机器理解人类语言,并根据用户意图为人们提供所需的答案。
目前市面上有许多问答机器人,如微软小冰、小爱同学、Siri等,但这些问答机器人大多偏向于开放域的知识库,但是针对一些专业性较高的问题来说,并没有一个较好的回答效果。而通过知识图谱,对某一专业领域的知识进行结构化处理,便可以提高问答机器人的实用性。目前知识图谱应用在电影领域还比较少,用户想要查询电影的剧情、人物等信息,还需要借助百度等搜索引擎,有时候不能快速、精准地为用户解决问题。因此,本文面向动漫电影领域,结合动漫电影知识图谱,提出了基于双向长短期记忆模型和条件随机场 (Bi-LSTM+CRF)的智能问答系统,该系统可以精准定位用户的查询意图,进而更好地为用户提供动漫电影方面的知识问答。
检索类问答系统 (FAQ),基于知识图谱问答系统 (KGQA)是当前问答领域中的两个研究热点。
检索类问答系统:检索类问答系统通常基于数据库中的一对问题和答案,在语义上将用户输入的问题与数据库问题进行匹配并返回最高分答案。因此检索类的问答系统的效果主要取决于语义匹配。针对该问题,Huang等人针对语义匹配的问题提出了DSSM 的深度语义表示模型,与 TF-IDF、BM25等模型相比,效果提升明显。但是,该检索类问答系统依旧存在问题:首先,需要大量的问答对来构建数据库,以确保用户输入的问题在数据库中可以找到类似问题;其次,不能准确了解到用户真实意图,因而也不能精准返回用户所需答案。从而问答对的质量、数量以及检索的方式限制了检索型机器人的精度和广泛使用。
基于知识图谱问答系统:2012年谷歌提出了知识图谱,其主要目的是把搜索引擎的性能进一步优化。自推出以来,问答研究的重点一直在问答系统的研究上。杨玉基等研究学者共同提出了用 “四步法”构建领域知识图谱的方法:构建领域本体,语义标注,数据完成,信息提取,实现了用同时自动化方法和手动构建知识图谱,兼顾效率和准确率;李飞等人提出利用神经网络的方法从文本中提取三元组 (实体,关系,实体),构建知识图谱。Liang等人提出了一种用于更新实时知识地图数据的框架,并且在预测哪些实体需要更新,以使得知识图谱可以在实时更新方面具有更高的准确率。知识图谱的不断发展,提供了对问答系统的高质量支持,智能问答系统在语义理解方面的表现得到了很大的提高。Hu等人提出了一种基于图匹配的方法,用以处理语句模糊性和查询标点的问题。为了将自然语言顺利转换为查询图,提出关系优先以及点优先的方法用来解决模糊问题,像短语链接问题、复合问题一样都有很好的效果。Dubey等人提出了实体关系链接的结构,它解决了识别和链接实体和关系的问题,并将问题转化为可以在知识图谱中查阅的语言。李飞飞等人提出一种新的深度标注模型Open Tag,不依赖专有词典,通过Bi-LSTM网络自动提取句子中的实体。
基于动画电影知识图谱,问答系统将会预处理用户输入的问题,获取实体和问题类别,并根据不同问题类别的查询模板,将实体填充入查询模型,然后解决知识图谱中的问题,获得用户问题的答案。动漫电影问答系统分为三个模块:知识图谱构建模块、问题预处理模块和答案生成模块。系统的整体架构如图1。
图1 基于Bi-LSTM 的智能问答系统流程图
(1)知识图谱构建模块:首先在豆瓣网站上获取到动画电影数据,对数据进行预处理操作,再根据一定的规则建立中心节点和节点之间的关系,并以<节点,关系,节点>三元组的格式将数据存入Neo4j图数据库中。
(2)问题预处理模块:首先对用户输入的问题进行实体识别,提取出关键词,得到动漫名、人名、电影类别等。之后训练问题分类器,首先对问题的属性进行定义,将用户输入的问题抽象成分类问题,利用设计的分类器模型进行排序,选择概率最高的问题属性。
(3)答案生成模块:通过不同问题类别的Cypher查询模板,在Neo4j图数据库中建立的知识图谱进行查找,给出明确的答案。
通过采集网页上动漫电影的相关数据,并对数据进行结构化的处理,建立电影节点间的关系,从而构建起关于动漫电影方向的知识图谱。通过该知识图谱,我们可以全方位、多角度地了解动漫电影领域的信息,也使得人们搜索信息的过程更加迅速,更具智能。另一方面,知识图谱的可扩展性好,可以通过提升数据量、节点关系等,来使得知识图谱的功能更加全面,知识更加丰富。
2.2.1 数据的获取
数据的来源主要是网络爬虫。
网络爬虫:为了获得动漫电影的相关数据,本文选择了豆瓣的有关动漫电影的相关网页,将所有网页的url存储在Redis数据库,以便于之后做分布式爬虫。之后爬取网页中的数据,为了构建动漫电影知识图谱中的各类节点,在网页中爬取 “片名”“导演” “编剧” “类型” “官方网站” “制片国家”“语言” “首播时间” “集数” “单片时长” “又名”“简介”“图片”“评论”“类似动漫”标签内的内容,将爬取到的内容进行整理,以Json文件的格式进行保存,数据格式为 {“键名”:“内容”}。整个数据库大约有9000条,基本满足人们对动漫电影领域的需求。
2.2.2 知识图谱的构建
2012年,Google公司提出了新的知识图谱的概念。如果从该知识图谱的本质上分析,可以将其称为 “语义网络知识库”。知识图谱由实体和关系组成,“实体”用于表示图表中的节点,图表中的边缘可以用 “关系”表示。实体是具有某些特征或属性的独立实体,例如电影名称、人名、地名、类型等,并且关系是实体和实体之间的桥梁。例如,电影和导演之间的关系是 “作为导演”。实体和关系自身也可以附带一些属性,比如,电影名可以附带的属性有评分、图片、每一集的时长等。
依据知识图谱的特点,本文存储数据选用的是Neo4j图数据库。作为非关系数据库Neo4j图数据库,在非结构化数据处理中比其他关系数据库更有优势。使用Neo4j图数据库将大大提高数据传输速度和工作效率。因为图数据库在数据处理方面的性能与数据量没有直接关系,所以它总是以相同的速度遍历节点和边缘。
依据实际问题,本文构建了如图2所示的动漫电影知识图谱。我们将动漫名作为一个中心实体节点,在此节点中还定义了动漫的相关属性,例如动漫简介,语言、官方网站、评分、发行日期、所属国家、单集时长、集数、相关图片以及短评论,将导演、编剧、声优、动漫类型、类似动漫、动漫别名作为其他实体节点。由于实体与实体之间在一定条件下会产生关联,例如动漫名与导演之间的关系设定为 “is_directed”,动漫名和类别之间的关系设定为 “belong_to”。Neo4j图形数据库用于存储动画电影的实体、关系和属性,以形成完整的知识图谱系统。
图2 动漫电影知识图谱
2.3.1 命名实体识别
在知识图谱的问答系统中实体识别是一项重要任务,任务主要是确定问题中的一些专有名称或特征词,例如人名、地名等,以方便之后在知识图谱中查询。与英语中的实体识别相比,中文实体识别更具挑战性。首先,中文词汇没有明显的划分;第二,为了确定一个单词是否是一个实体,有必要结合上下文语义;第三:实体可能有缩写。目前,实体识别的方法是:基于自定义字典的方法,基于人工规则的方法和深度学习方法。前两种方法没有捕获问题单词之间的语义关系,并且需要花费大量的时间和人力来构建词库或规则,并且不容易扩展。因此,本文采用基于字的Bi-LSTM+CRF模型,并使用 “BMESO”结构来标注实体。Bi-LSTM 实际上学习了与学习方向相反的LSTM 层,并且可以更好地获取单个汉字学习上下文信息。该层将最有可能被选择为标签输出。CRF 层则是起到特征限定的作用, 因 为 在 LSTM 层 的 输 出 标 签 会 出 现“B-MOVIE―――B-MOVIE”的情况,而CRF 层可以排除这些情况。因此Bi-LSTM 和CRF 输出的是最佳的序列标注的标签。
图3是实体标注的模型,实体识别模型主要包括以下几部分:Word-Embedding层、Bi-LSTM 层以及CRF层。Word-Embedding层将句子中的每个单词映射到单词向量作为模型的输入。Bi-LSTM 的输出是每个单词的每个标签的标点符号。CRF 层根据某些标记规则在序列级别执行序列标记。
图3 Bi-LSTM 实体识别模型
2.3.2 意图分析
针对用户在动漫领域常问的问题,将问题抽象分为不同的类,例如评分的问题模板是 “nm 评分”。在不同的类中,将用户的各种问法抽象表示,例如 “nm 这部动漫评分是多少”。通过手动构建这个分类数据集,将问题划分为20类,每个类中约有10种不同的问法。
TF-IDF算法:词频―逆文本频率缩写为TFIDF,该算法的功能是提取文本特征并使其矢量化以表示文本中单词或单词的重要性。该算法分为两部分,“TF”即词频的概念,“IDF”即 “逆文本频率”。关键词出现的频率将用TF 表示,用公式表示:
某一文档用j表示,X出现的次数用n表示,所有词出现的总次数用∑n表示。
IDF表示关键词在文档中的重要地位,用公式表示:
其中N 是文档的总数量,n是包含关键字X的文档的数量,n+1是为了防止分母为0。
从而TF-IDF的公式表示:
朴素贝叶斯分类:问题类别集合为Y= {y,y,y,...,y},问题特征集合为 X= {x,x,x,...,x},贝叶斯公式 (4)如下:
朴素贝叶斯算法基于贝叶斯算法,只要特征彼此独立即可。在本文中将数据集中的某一类问题的特征用一组关键词来表示,这一组关键词就可以定义为这一类问题的特征向量 X= {x,x,x,...,x}。对于用户输入的问句,要确定此问句的所属分类,则要求其具有最大后验概率P (y|X)的类。等式 (4)的分母可以被认为是常数;因此,有一个朴素的贝叶斯公式 (5):
在问题预处理模块2.3之后,系统可以通过基本确定问题中的实体和关系来找到给定分类中的问题。根据不同的分类,制定知识地图查询语言,并在搜索知识图谱后,获得用户请求的答案。由于本文的知识图谱是储存在Neo4j图数据中,所以该查询语言是用Cypher编写。根据问题分类,确定所需要的实体和客体,将其带入查询语句中的缺失部分,得到完整的Cypher语句,将问题中的已知成分带入到查询的模板之中,得到缺失部分的Cypher语句。
本文根据不同的问题类型制定了不同的Cypher查询模板,以下列举部分查询模板:
查询 “动漫评分”的模板,已知主体 “动漫名(Cartoon)”,得到自身的属性 “评分”:
MATCH (m:Cartoon)WHEREm.name=′{cartoon _name}′
RETURNm.average
查询 “动漫导演”的模板,已知主体 “动漫名(Cartoon)”,主体与客体的关系,即动漫与导演的关系:“被导演”,得到客体 “导演名 (Directer)”:
MATCH (m:Cartoon)― [r:is_directed]―> (n:Directe)
WHERE m.name=′{cartoon_name}′
RETURN n.name
根据问题的分类制定相对应的回答模板,本文制定了20类的回答模板,将从Neo4j图数据库中查询到的答案匹配到对应的回答模板中,例如 “海贼王的评分是多少?”,系统通过问题预处理模块将用户所提的问句分类到 “nm 评分”,经过问题生成模块,在动漫知识图谱内查询到答案 “9.5”,该分类的问题回答模板 “cartoon_name+动漫电影评分是+answer+分”,即 “海贼王动漫电影评分是9.5分”。如果产生的答案不是单一的,而是有多个答案组成,系统则会将所有的答案返回。例如 “海贼王属于什么类型的电影?”,在知识图谱中查询到答案,将其隔开成 “喜剧、动作、动画、奇幻、冒险”。回答模板是 “海贼王属于喜剧、动作、动画、奇幻、冒险”。
我们将本文提出的知识图谱问答系统应用于虚拟智能客服。硬件环境为:Intel(R)Xeon (R)CPU E5-2620 v4@2.10Hz 2.10 GHz的处理器,64.0GB的内存,NVIDIA TITAN Xp的显卡。
本系统解决了专业领域内的实体识别、用户意图识别等问题,实现了将中文问题转化成Cypher查询语言的过程,能够实现绝大多数的动漫电影问题回答。该问答系统基于动漫电影知识图谱,将用户输入的问题首先用Bi-LSTM 和CRF 模型进行实体标注,该模型的准确率可达95%以上。此外,用户问题通过TF-IDF 算法和朴素贝叶斯分类器进行分类。在本文构建的数据集中,平均贝叶斯算法的准确率超过85%。最后,根据问题分类,选择问题模型,根据问题的实体、对象和主客体关系替换问题模型中的替换项,得到问题的最终答案。与其他分类算法相比,本系统意图分类中使用的朴素贝叶斯算法在本文构建的数据集中具有更高的准确性。随机选择10%的问题样本作为测试集,在此测试集上的实验结果如表1 所示,NB (朴素贝叶斯算法)的准确率最高,可达到91.6%;其次是SVM(支持向量机)准确率在79.7%;再次是KNN (K最近邻算法),准确率在76.8%;最后是Decision tree(决策树),准确率只有54.6%。根据以上结果显示,我们可以得出,朴素贝叶斯算法在本文所构建的数据集的准确率最高。
表1 意图分类的实验结果
该系统的实验结果如表2:
表2 实体识别、意图分析实验结果
海贼王的导演是谁?电影名实体:海贼王 导演 海贼王是由宇田钢之助导演的。宇田钢之助导演过的喜剧动漫有哪些?人名实体:宇田钢之助类型实体:喜剧某导演导演过哪些喜剧动漫宇田钢之助导演过喜剧的动漫有:海贼王。
本文将该系统应用于虚拟智能机器人。利用U-nity引擎创建虚拟机器人,将问答模块植入机器人中,为了方便用户体验,还添加了语音交互功能。在这个应用里,用户可以通过文字或语音的方式对机器人进行提问,而虚拟客服会通过语音的方式告诉用户需要的答案。问答效果如图4所示,文字方式:在文本框中输入问题,点击 “确认”按钮进行查询。语音方式:点击语音按钮 (“开始”键),用户通过语音进行问题输入。
图4 虚拟智能机器人
本文提出了一种基于Bi-LSTM 和CRF 的命名实体识别方法和基于朴素贝叶斯的图分类方法,该方法在智能问答系统中得到了应用。系统功能的实现主要基于动画电影的知识图谱。Bi-LSTM 和CRF解决了专业领域语料库中相关实体的识别问题,不需要专有词典,大大减轻了人工标注的工作量。朴素贝叶斯分类可以准确捕捉用户的问题意图并确定问题模型。通过构建和扩展知识图谱,问答区域也可以相应地扩展。下一步是改进问题预处理模块。首先,提高问题中的实体和知识地图中的实体的链接准确性。其次,通过深度学习方法捕获用户意图,减少手动定义意图的麻烦。