基于自然语言处理的旅游景区智能讲解系统研究
2022-07-28刘文静蔡章利
刘文静,蔡章利,卢 海
(1.重庆航天职业技术学院 人文社科系,重庆 400000;2.重庆大学a.信息物理社会可信服务计算教育部重点实验室;b.自动化学院,重庆 400044)
随着社会经济的快速发展,人们对生活质量的要求越来越高,外出旅游的人越来越多。为了更好地促进中国旅游业高质量发展,国家旅游局2015年1月发布了《关于促进智慧旅游发展的指导意见》,指出“智慧旅游是运用新一代信息网络技术和装备,充分准确及时感知和使用各类旅游信息,从而实现旅游服务、旅游管理、旅游营销、旅游体验的智能化,促进旅游业态向综合性和融合型转型提升”[1]。
游客到达旅游地后,景区导游的重要职责是讲好景点故事,引导游客进入观赏意境,提升旅游体验。好的讲解服务能带给游客好的旅游体验,增长旅游知识!由于景区导游自身知识水平、责任心和服务收费等原因,游客往往难以享受到高质量、低成本的个性化讲解服务,更多是一大群人跟着导游走马观花式地观赏,旅游沉浸感不强。为了提升讲解服务质量和降低服务成本,国内不少景区建设了电子讲解系统,研究人员提出了一些系统实现方案[2-4],市场上也有美景听听、三毛游FM、旅游精灵等智能手机APP供游客下载使用。但这些系统目前都是通过红外感应/扫码/触屏启动的广播式解说,缺乏人与人间的自然语音互动交流能力,游客参与感不强。
自然语言处理是人工智能的一个研究热点,目的是让人以自然语音或文本方式和智能设备进行交互,让机器理解人的意图并做出响应。随着语音识别技术的逐渐成熟,自然语言处理技术已开始应用于医疗健康、电商客服、智能家居、铁路售票、自动驾驶等领域。比如微软的小娜、苹果手机的Siri、百度搜索的小度、淘宝客服的小蜜等智能系统[5-6]。但在旅游景区讲解服务方面,笔者尚未看到自然语言处理应用于该领域。因此,笔者主要探讨如何综合应用自然语言处理、本体知识检索、移动互联网、云计算等技术实现一个支持游客用自然语言与其交互,能为游客提供个性化服务的旅游景区智能讲解系统。
1 系统架构设计
“五视图法”是信息系统架构设计常用的一种方法[7]。使用该方法设计了旅游景区智能讲解系统的物理架构和逻辑架构。
1.1 物理架构
随着云计算、大数据、人工智能、物联网、移动互联网等新一代信息技术的快速发展,支持“云大物移智”已成为信息系统设计遵循的一大准则。按照“云+端”模式设计的旅游景区智能讲解系统物理架构如图1所示。
图1 系统的物理架构图Fig.1 Physical architecture of the system
在图1所示物理架构中,将整个系统分为游客移动端和讲解服务端2大部分,通过移动互联网连接起来。移动端指安装了本系统APP的游客智能手机;服务端由安装了本系统服务程序的云主机集群组成。为了让移动端APP具有通用性(即不局限于某个旅游景区才能使用),当APP启动时,系统首先与服务端的接入服务器通信,将定位数据发送给接入服务器查询出游客当前所处景区,然后返回该景区的讲解服务访问地址给移动端。移动端APP根据该地址直接与景区服务器通信完成后续讲解服务。为了兼顾各景区已有信息化投入和分流不同景区的游客并发访问压力,系统提供了2种方式供各景区选择。1)以独立访问域的方式接入平台,即各景区就近自建/租赁云主机并按本系统要求部署应用程序后将访问地址注册到接入服务器;2)以独立知识库的方式入驻平台,即各景区共用一套云主机和服务程序,但每个景区的讲解知识库相互独立。方法1)的好处是不同景区的游客就近访问自己的服务器,可以减少网络拥堵和分流服务器访问压力,比较适合一些实力雄厚,游客量大的景区采用。方法2)的好处是可以减少景区前期投入成本,在数据就是资产的当下拥有专属于自己的讲解知识库,可以自行决定是否免费提供讲解服务,比较适合一些规模较小的旅游景区采用。
1.2 逻辑架构
系统的逻辑架构如图2所示。从软件角度来看,系统分为2大部分。一是可安装于游客智能手机上的APP软件,二是部署在服务端云主机上的讲解服务程序。移动端APP是游客享受景点讲解服务的介质,提供了游客定位数据获取、游客问询语音输入、系统应答(包括讲解、问询、通知语音输出/图片展示/视频播放)等功能。服务端讲解服务程序主要完成语音识别、文本向量化处理、命名实体识别、对话状态跟踪、对话策略管理等自然语言处理功能,系统将根据游客意图到景区的讲解知识库中检索知识,最后生成讲解内容返回给移动端APP。
图2 系统的逻辑架构图Fig.2 Logical architecture of the system
2 关键技术分析
如图2所示,运行于服务端的讲解服务程序是系统最重要部分,主要由语音识别、文本向量化处理、命名实体识别等功能模块组成。由于语音识别和生成技术目前已比较成熟,且有百度语音和科大讯飞等公司/机构提供的SDK包供使用,因此,研究主要探讨文本向量化处理、命名实体识别、对话策略管理、讲解知识检索4个核心功能模块的关键技术。
2.1 文本向量化处理
文本向量化处理的目的是要将语音识别得到的用户话语文本,经独热编码和词嵌入处理,表示为系统后续模块计算所需的实数域空间连续向量。词嵌入是指把一个独热编码得到的、维数为所有词数量的高维空间向量,映射为一个维数较低的实数域空间的连续向量,目前主要有Glo Ve、Word2Vec、Fast Text、ELMo、Open AI GPT、基于Transformer的双向编码表示(BERT,bidirectional encoder representations from transformers)等方法[8-9]。
BERT是Google公司2018年提出的一种可用于多种语言处理的预训练模型,由多层Transformer编码器组成。由于Google发布的BERT-base(Chinese)预训练模型是以字为粒度对中文进行切分的,没有考虑中文需要分词的特点,哈工大讯飞联合实验室于2019年6月发布了考虑中文分词的全词覆盖BERT中文预训练模型(简称Chinese-BERT-wwm)[10]。文献[10]给出的实验结果表明:将Chinese-BERT-wwm用于机器阅读理解、自然语言推理、情感分类、句对匹配和文档分类等任务,性能均比BERT-base(Chinese)提高了1~2个百分点。中文语义表示的最小单位是词,不是字。2种模型相比,笔者认为后者更适用于研究系统,因此选用Chinese-BERT-wwm预训练模型来进行文本向量化处理。
2.2 命名实体识别
在本文系统中,命名实体识别(NER,named entity recognition)模块用于将用户话语中具有特定意义的实体(比如人名、地名、机构名、景点名、景物名、景观名、时间、数量、货币、比例数值等)辨识出来,填充到预定义好的语义槽中。该模块的输入是文本向量化模块输出的用户话语词向量,输出是辨识出的槽值对,其逻辑结构如图3所示[11]。
图3 命名实体识别逻辑结构Fig.3 Logical structure of named entity recognition
在图3所示结构中,首先将用户话语词向量输入双向长短时记忆神经网络(BiLSTM,bi-directional long short-term memory)模型做编码处理,然后将处理结果输入条件随机场(CRF,conditional random field)模型计算,接着用BIO标签做序列标记,最后根据标记从序列中解析出对应不同语义槽的每个命名实体,将它们组合成槽值对输出。整个过程可抽象表示如下
式中:X∈Rn×d是BERT预训练模型编码输出的表示用户话语的矩阵向量;n是用户话语长度;d=768是向量维度;是BiLSTM模型训练后的前向权值矩阵,是训练后的前向偏置向量;是BiLSTM模型训练得到的后向权值矩阵,是后向偏置向量;m=128是BiLSTM的隐层大小;Wdense∈R2m×k和Bdense∈Rn×k是训练得到的全连接层(Dense)权重矩阵和偏置矩阵,k是标记数量;Transitions∈Rk×k是CRF训练后得到的标记转移矩阵。Y是使用维特比算法Viterbi(·)求得的、对应输入X的标记序列,根据预定义槽解析Y即可完成槽值填充。
2.3 对话策略管理
对话策略管理是系统实现自然语言处理的另一核心模块,主要完成游客意图识别、系统动作选择、系统动作生成等功能,其输入是用户话语词向量和对话特征向量,输出是待执行的系统动作,其逻辑结构如图4所示。
图4 对话策略管理逻辑结构Fig.4 Logical structure of dialogue strategy management
首先将用户话语向量与表示历史对话的对话特征向量拼接起来输入Bi LSTM模型做编码处理,然后对BiLSTM模型的输出做全连接(Dense)变换处理和softmax分类计算,得到用户话语对应每个系统动作的概率,其求取过程可抽象表示为式(2),接着经过阈值比较筛选,排序选出概率最大的系统动作,最后根据系统动作模板和语义槽值信息生成完整的系统动作后输出[12]。
式中:X∈Rn×d是BERT预训练模型编码输出的用户话语句向量xn与最近n-1轮对话中表示每轮对话状态的特征向量xi(1≤i≤n-1)拼接所得的矩阵向量;d=768是向量维度;是BiLSTM模型训练后的前向权值矩阵,是训练后的前向偏置向量;∈R(d+m)×m是Bi LSTM模型训练得到的后向权值矩阵,是后向偏置向量;m=128是BiLSTM的隐层大小;Wdense∈R2m×k和bdense∈Rk是训练得到的全连接层(Dense)权重矩阵和偏置向量,k是预先定义系统动作模板数;p是使用softmax分类函数求得的当前用户话语对应每个预定义系统动作模板的概率向量。
如图4所示,对话策略管理模块除了需要对话状态跟踪模块提供对话特征向量和语义槽值信息外,还需开发人员预先定义系统动作模板。系统动作是用户意图的反映,一个系统动作模板可视为用户话语要表达的一种意图。将系统动作分为通知(Inform)、问询(Quest)、API_Call 3种类型。通知指系统在没有游客问询的情况下主动发出消息,比如致词欢迎游客到达景区等。问询指系统无法识别出游客意图或游客意图明确但信息缺乏或不模糊时,有针对性地引导游客提供信息。API_Call指系统准确识别出游客意图和所需语义槽值后向讲解知识管理模块发出的知识检索请求。用本体方法来构建旅游景区讲解知识库,本体的每种属性都可能成为游客问询的问题,因此API_Call类型的系统动作模版可根据本体模型定义的属性来生成。
2.4 讲解知识检索
当系统识别出游客意图后,讲解知识检索模块将从景点讲解知识库中找出系统所需的讲解知识,将其输出给讲解内容生成模块,由该模块根据预先定义的讲解模板和讲解规则生成回复游客的讲解词。要检索知识需要先做好知识建模。在知识管理研究领域,知识建模目前最常用的是本体(Ontology)方法。本体是一个源于哲学的概念,哲学用其来描述世界上客观存在的所有人、事、物。在人工智能领域,最流行的本体定义是Gruber于1993年给出的“本体是共享概念的规范说明”[13]。按此定义,本体模型可抽象表示为三元组(概念、关系、属性);其中,概念是对应用领域中某类人、事、物的抽象表示,等同于面向对象软件开发方法中的类;关系用于反映概念间的继承、泛化等层次关系和组合、聚合、依赖、扩展、控制等关联关系;属性用于描述概念的静态特征。
在旅游信息化领域,研究人员设计了 Mondeca-Tourism-Ontology、Harmonis-Ontology、OTASpecification、WDTourism等本体模型来满足个性化旅游线路规划、旅游景点推荐、旅游活动推荐等旅游服务需求[14]。为了满足游客的个性化讲解服务需求,选用本体方法来建模旅游景区讲解知识。通过分析旅游讲解服务特点本文使用Protégé工具定义了景区、景点、景物、景观、人物、事件、民族、地方特产、文化作品、节庆活动等45个类(Class),定义了拥有、隶属、写作、品尝、到访、居住、拍摄等14种反映类间关联关系的对象属性(Object Property);定义了名称、经度、纬度、创建时间、面积大小、高度、长度、价格等56种数据属性(Data Property)来反映类的静态特征。研究所构建的旅游本体模型如图5所示。
图5 旅游本体模型Fig.5 Tourism ontology model
知识检索指根据用户话语从知识库中查询或推理出满足条件的知识。系统中,用户话语经过命名实体识别模块、对话策略管理模块的语义分析,已形式化为计算机可理解的系统动作和语义槽值对,知识检索将通过执行API_Call类型的系统动作来完成。如何检索知识与知识的表示方法和存储方式紧密相关。知识表示主要有资源描述框架(RDF,resource description framework)、资源描述框架模式(RDFS,resource description framework schema)和Web本体语言(OWL,web ontology language)等方法[15]。RDF使用类似于主谓宾的SPO三元组来表示知识,一个三元组就是一条知识。RDFS预定义了rdfs:Class等专用词汇,解决了RDF无法区分类和对象,无法描述类的关系和属性等不足。OWL是对RDFS的扩展,增加了“owl:ObjectProperty”等词汇来支持本体建模和知识推理。因此,选用OWL方法来表示本体知识,使用RDF/XML语法来序列化保存本体知识,使用知识检索语言SPARQL来查询本体知识。
3 可行性验证
为了检验前述系统架构和方法是否可行,作者通过实际开发,验证了所研究系统是可行的,将从实验环境搭建、知识库构建、软件功能实现、实验效果分析4个方面做简要阐述。
3.1 实验环境搭建
为了模拟系统的运行环境,使用3台PC电脑(CPU 2.4GHz/内存32G)和2部安卓智能手机构建了实验环境。3台电脑均安装Cent OS6.5服务器操作系统。其中,1台电脑用作服务端的统一接入服务器,1台电脑用于旅游本体知识管理,1台电脑用于自然语言处理。2部安卓智能手机安装本系统APP软件,用来模拟游客使用。
3.2 讲解知识库构建
基于设计的旅游本体模型,以重庆瓷器口古镇为例,通过人工整理网上收集的有关磁器口景区的介绍资料,在本体开发工具Protégé中构建了磁器口的本体知识库,并选用RDF/XML语法格式,以OWL文件方式保存在知识管理服务器上。如图6所示。
图6 重庆磁器口本体知识库Fig.6 The ontology knowledge base of Chongqing Ciqikou
3.3 软件功能实现
3.3.1 统一接入服务程序
统一接入服务程序主要完成游客账号验证、所在景区定位等功能。使用Java编程语言和Spring Boot框架按Web服务方式实现,对外提供Web API接口供移动端APP启动时访问。
3.3.2 自然语言处理程序
自然语言处理程序主要完成语音识别、文本向量化处理、命名实体识别、对话策略管理、对话状态跟踪、应答语音生成、讲解内容生成等功能,是整个系统最核心的部分。首先基于Tensor Flow1.15.2用Python语言编程实现文本向量化处理、命名实体识别、对话状态跟踪、对话策略管理功能,然后用Java编程语言和Spring Boot框架将这些功能模块封装成Web服务,对外提供Web API接口供移动端APP访问。
3.3.3 讲解知识检索程序
讲解知识检索程序主要完成旅游本体知识检索等功能。使用Java编程语言和Spring Boot框架及Jena框架按Web服务方式实现,提供Web API接口供自然语言处理程序内部调用(即执行API_Call类型的系统动作)。当Web API接口收到自然语言处理程序发来的知识检索请求后,系统会首先将检索请求解析为SPARQL语句,然后调用Jena框架提供的Query Factory类create()方法以及QueryExecution类execSelect()方法查询知识。
3.3.4 移动端APP
移动端APP是游客与系统交互的介质,主要完成游客定位数据获取、游客问询语音输入、系统应答等功能。研究使用Android Studio集成开发工具和Java编程语言实现了安卓版APP,其运行效果如图7所示。当游客在智能手机上启动该APP时,系统会首先获取游客当前定位数据,然后传回服务端接入服务器识别出所在景区后,自动播放景区预设的欢迎语音/图片/视频,游客可以按下页面底端的圆形话筒按键开启语音询问功能,询问语音传回服务端后将由自然语言处理程序先请求百度语音识别接口将其转换为文本,然后再继续后续处理。为了便于查看效果,图7所示APP界面在播放对话语音的同时显示了对话文本,但游客实际使用时可关闭文本显示功能,直接收听或查看APP播放的图片和视频。
图7 游客讲解服务APP运行效果Fig.7 Operation effect of tourist explanation service app
3.4 实验效果分析
为了检验系统的讲解服务效果,首先从讲解知识库中随机抽取部分类实例和属性,设计了80个游客可能提出的问题,比如“磁器口最有名的小吃是什么?磁器口有多大?建文帝是谁?华子良在哪儿脱险的?”等;然后人工标定出每个问题的正确系统响应并用做测试数据;然后模拟游客向系统提问并记录下每次系统响应结果;最后计算系统的每轮对话响应精度(PRA,per-response accuracy)值。PRA表示每轮对话系统回答用户提问的正确率[16]。经测算,系统的PRA分别为56%,达到了预期实验效果,能初步满足旅游讲解服务需求。
4 结束语
用人工智能、云计算、物联网、大数据、移动互联网等新一代信息技术提升旅游服务、旅游管理、旅游营销、旅游体验是中国开展智慧旅游建设的目的。自然语言处理是人工智能研究领域的一个热点,相关技术可广泛用于人机对话、知识获取、舆情监测等应用。主要从技术应用的角度详细探讨了如何综合运用自然语言处理、本体知识管理、移动互联网、云计算等技术来研发旅游景区智能讲解系统,目的是让游客能通过自然语音对话方式享受低成本、高质量的个性化旅游景区电子讲解服务。通过实际开发,验证了系统方案的可行性。但受限于自然语言处理目前在深层次推理、本体知识自动获取等方面的不足,系统在一些需要推理才能准确识别游客意图的复杂对话场景,仍会出现错误应答和无法回答等问题。对此,笔者将继续对自然语言处理的命名实体识别方法、意图识别方法,以及本体知识的自动获取方法等做进一步研究。