摘要:为了方便游客全面了解甘孜藏族自治州的旅游景点、历史文化和地方特色等相关知识,文章采用Python爬虫在各大官方网站进行数据收集,对数据进行预处理后批量导入Neo4J数据库中,从而构建甘孜旅游知识图谱,并基于该知识图谱设计实现智能问答系统。首先,对用户提出的问题进行预处理,然后进行实体识别和意图识别,再将识别的文字结果与基于训练的问题模板进行匹配,最后生成Cypher语句查询Neo4J获取问题的答案并返回给用户。知识图谱和智能问答系统的结合有助于游客更便捷地获取甘孜旅游方面的信息。
关键词:Python爬虫;Neo4J;智能问答系统;意图识别;实体识别
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2024)17-0025-04 开放科学(资源服务)标识码(OSID) :
0 引言
近年来,随着互联网的发展,传统旅游业迎来了全新变革。越来越多的旅游景区开始应用“互联网+ 旅游”发展模式。目前,旅游领域中亟待解决的问题是游客如何快速且准确地获取信息[1]。互联网上各大旅游景点的信息复杂多样,并随着信息技术的飞速发展,人类社会的知识积累日益丰富,各类知识呈现出爆炸式增长的趋势。然而,知识的海量增长也带来了信息过载、知识碎片化等问题,使得人们难以高效地获取、理解和应用知识[2]。因此,如何有效地组织和管理知识,构建高效的知识检索和应用体系,成为当前信息科学领域急需解决的问题。
知识图谱作为一种结构化的知识表示方法,近年来受到了广泛的关注和研究。它通过将实体、概念、属性等知识元素进行关联和整合,形成一张庞大的知识网络,从而实现对知识的全面、系统地描述和表达[3],有利于信息分析、挖掘和推理。以知识图谱作为知识库的问答系统返回的答案会更加准确、简洁[2]。
甘孜藏族自治州拥有众多令人心驰神往的自然景观,承载着深厚的藏族文化底蕴和浓郁的民族风俗。为了给前往甘孜旅游的游客提供准确且及时的旅游信息,本文旨在研究并设计一款基于知识图谱的甘孜旅游景点智能问答系统。
1 甘孜旅游知识图谱的构建
1.1 旅游知识数据采集
为了构建知识图谱,获取必备且可靠的数据作为支撑,该知识图谱的数据均来自官方网站(甘孜藏族自治州人民政府网站、百度百科、稻城亚丁、携程官网等),并采用Python爬取网页数据。主要采集了甘孜藏族自治州的景区旅游、民族风俗、产业振兴、历史文化、地方特色五大方面的内容。利用Python中的Re⁃quests模块模拟浏览器向服务器发出请求,当服务器响应并返回数据页面后,通过Beautiful Soup对页面进行解析获取数据,最后将采集到的数据整理后存储到CSV文件中[4]。
1.2 旅游知识图谱的说明
该知识图谱描述了甘孜藏族自治州的景区旅游、民族风俗、产业振兴、历史文化、地方特色。在景区旅游方面,主要介绍了稻城亚丁、亚拉雪山、海螺沟风景区、措普沟、丹巴甲居、泸定桥6个景区。每个景区都介绍了旅游路线、门票预订的价格、酒店预订的价格和酒店信息,以及在每个景点推荐游玩的项目;在民族风俗方面,主要介绍了甘孜藏族自治州的十三大民俗,分别是巴塘弦子舞、甘孜踢踏舞、扎贝嘛呢舞、热巴舞、款待宾客的方式、敬献哈达、民族服饰、秋日丰收、饭后饮茶、康定转山会、巴塘央勒节、嘉绒藏族风情节、燃灯节;在地方产业振兴方面,主要介绍了“三农”产业、四着力推进食品、旅游产业、互联网助力产业振兴;在历史文化方面,主要介绍了红色文化、宗教文化、格萨尔文化、艺术文化。其中红色文化介绍了泸定桥,宗教文化主要介绍了霍尔十三寺、白利寺、大金寺,格萨尔文化主要介绍了英雄格萨尔、格萨尔文化博物馆、格萨尔说唱活动,在艺术文化方面主要介绍了甘孜藏戏、藏医医药、藏族雕版印刷。在地方特色方面介绍了十大美食和八大特产。十大美食主要包括:玉米馍、彝族辣子鸡、荔枝炒鸡丁、青菠面、红烧乳猪肉、康定牦牛肉等,八大特产主要包括:得荣蜂蜜、丹巴石榴、甘孜青稞、泸定红樱桃、乡城松茸等。点击每个节点都可以查看相应的信息介绍。
1.3 旅游知识图谱生成
该知识图谱共包含44个节点,13种节点标签,每种节点的标签颜色都不一样,3种关系分别是从属关系(BELONG) 、基本关系(BASIC) 、依赖关系(HAVE) ,如图1、图2所示。在设计制作甘孜旅游知识图谱时,采用了三元组进行表示[5-6],三元组是知识图谱的一种常见表达方式,由两个相互关联的实体以及这两个实体之间的语义关系共同构成。本文根据甘孜藏族自治州景区旅游、民族风俗、产业振兴、历史文化、地方特色五大方面的内容进行知识图谱的构建。Neo4J图数据库以两种主要形式存储信息:一种是以“实体—属性名—属性值”的结构记录实体的具体特征;另一种则是通过“实体—对应关系—实体”的结构展示不同实体间的联系和关联[7]。
2 旅游问答系统设计
本问答系统主要由两大核心模块组成:甘孜旅游知识图谱和智能问答系统。智能问答系统流程图如图3所示。在知识图谱构建过程中,首先需要搜集与甘孜旅游相关的丰富资料作为数据基础;然后对这些数据进行精心预处理,包括识别实体、提炼实体属性以及实体间的关联;最后将处理好的数据以CSV 格式批量导入Neo4J数据库,从而构建出完整的旅游知识图谱。
智能问答系统的核心目标是实现高效、智能的交互体验。这涉及前端界面的设计、前后端的协同管理以及系统整体框架的搭建。在用户提问时,系统会对原始问题进行一系列预处理操作,随后进行实体识别和意图识别,进而理解用户的查询意图,并转化为系统内部可处理的问题。随后,系统会匹配相应的问题模板,生成Cypher查询语句,在Neo4J数据库中进行检索,最终将答案呈现给用户。这一过程旨在实现用户与系统的顺畅交流,提供准确、及时的旅游信息解答[7]。
3 旅游问答系统实现
3.1 智能问答界面实现
在智能问答系统的界面构建中,前端设计与Spring⁃Boot框架的搭建是两大核心任务。前端部分主要依赖于HTML构建基础界面结构,通过CSS框架进行样式设计,以及利用JavaScript技术实现交互逻辑。同时,为了优化前后端数据的交互,采用Ajax技术实时地传输和处理后端数据,确保用户得到快速而准确的响应。
3.2 问句预处理
在用户提问之后,需要对原始问题进行一系列预处理操作,包括文本清洗、分词、词性标注、停用词过滤、文本规范化等,从而减少数据中的噪声和冗余信息,提高数据的准确性,为后续的实体识别和意图识别奠定基础。
3.3 实体识别提取
实体识别(NER) 是从文本中识别出特定意义的实体,例如日期、时间、地名、人名等,是自然语言处理的一个重要分支。本文采用HandLp提供的API创建实体分词器,首先引入HandLp库,将准备好的文档数据通过调用HandLp.segment方法将文本切分成多个独立的词语或短语。然后调用HandLp.extracNamedEn⁃ties方法遍历分词结果提取出命名实体和词法标注,再返回识别出的实体列表。对于命名实体识别数据量不足与数据质量不高等问题,数据增强技术被广泛应用于命名实体识别任务中[8]。
以下是分词和命名识别的关键代码。
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.mining.namedentity.Na⁃
medEntity; import java.util.List;
public class EntityRecognitionExample {
public static void main(String[] args) {
// 准备文本数据
String text = "甘孜自治州具备很多好玩的地方,吸引非常多的游客进行参观";
// 使用HanLP进行分词和命名实体识别
List<NamedEntity> namedEntities = HanLP.extract⁃NamedEntities(text);
// 打印识别出的命名实体
for (NamedEntity entity : namedEntities) {
System.out.println("实体: " + entity.getName() + ", 类型: " + entity.getType()); } } }
3.4 意图识别提取
意图识别是理解用户查询意图的关键步骤。用户提出的问题是由一个或多个句子组成的文本,而意图识别就是从这些文本中识别出用户的真实意图或需求。该系统编写程序构建FastText模型文本意图分类模型,FastText是Facebook开源的一款简单而高效的文本分类器,它使用浅层的神经网络实现了word2vec以及文本分类功能。因此,FastText在保持高度准确性的同时,能够提升模型的训练与测试效率。与依赖预先训练好的词向量的方法不同,Fast⁃Text具有自我训练词向量的能力,从而实现了更加灵活和高效的文本处理,非常适用于该系统。
3.5 问题解答模板的实现
在进行实体识别和意图识别之后,系统根据识别的文字结果匹配对应的问题模板,生成Cypher语句从Neo4J数据库中获取问题答案。为了方便识别用户的问题,该系统制作了30多个问题模板来分析用户输入的内容。例如:“甘孜州有哪些推荐游玩的地方?”“亚拉雪山是一个什么地方?”等问题模板,如图4所示。
3.6 搭建智能问答系统
该系统建设采用Browser/Server(浏览器/服务器)架构设计,选择开放、业内主流的Java语言作为开发核心技术,基于SpringBoot下的MVC模型(M是指业务模型,V是指用户界面,C则是控制器)的设计架构,采用N层的体系结构,同时以标准的数据库连接池接口规范自适应Neo4J数据库,保证系统未来良好的可维护性及可扩展性[9]。SpringBoot是一个旨在简化Spring 应用开发过程的框架,用来进行快捷Spring 应用开发,采用“约定大于配置”的原则,在使用SpringBoot时只须选择合适的框架或组件,SpringBoot就可以生成一个企业级的Spring应用项目[10]。
启动该问答系统进入界面之后,系统设置了一个问答机器人,用户可以将问题输入问题框进行发送,系统会针对问题进行分析,并从Neo4J数据库进行分词和关键字提取,匹配相应的模板,找出合适且比较接近的答案。以提问景点介绍的答案为例,输入“亚拉雪山”,系统会给出“亚拉雪山,藏语全称为‘夏学雅拉嘎波’(意为东方白牦牛山),系中国藏区四大神山之一。位于四川甘孜州康定、道孚和丹巴三县的交界处,海拔5 884米,与它西北方向的墨尔多神山遥遥相对。山顶终年积雪,是康巴地区一座著名的神山,雅拉河即发源于此。”效果如图5所示。
4 结束语
本文聚焦于甘孜旅游智能问答系统的构建。首先,对甘孜旅游相关知识进行整理和归纳,构建了甘孜旅游知识图谱。在此基础上,设计并实现了一个高效的甘孜旅游智能问答系统。对收集到的数据进行预处理后,进一步抽取出实体、实体属性以及实体之间的关联关系,将数据整理成CSV文件格式,以便批量导入至Neo4J数据库,从而构建甘孜旅游知识图谱。该问答系统采用Browser/Server(浏览器/服务器)架构设计,并基于SpringBoot框架进行搭建。通过自定义景区、旅游路线、酒店预订等实现抽象问题转化,然后基于模板进行匹配,输出合适的答案。该系统方便了游客对甘孜旅游知识的获取和查询。
致谢
感谢导师杜春为我提供了许多宝贵的建议,使我能够不断地完善自己的项目。还要特别感谢电子信息学科建设苗子工程培育项目(项目编号:23XKPY0009) 给予的资金支持。
参考文献:
[1] 许宁.面向旅游领域的智能问答系统设计与实现[D].呼和浩特:内蒙古大学,2021.
[2] 王荣坤.基于旅游知识图谱的智能问答系统设计与实现[D].青岛:青岛大学,2022.
[3] LI J,SUN A X,HAN J L,et al.A survey on deep learning for named entity recognition[J].IEEE Transactions on Knowledge and Data Engineering,2022,34(1):50-70.
[4] 杜春.基于知识图谱的乐山旅游智能问答系统研究及实现[J].电脑知识与技术,2023,19(29):46-48.
[5] BOLLACKER K,EVANS C,PARITOSH P,et al.Freebase:a col⁃laboratively created graph database for structuring human knowledge[C]//Proceedings of the 2008 ACM SIGMOD interna⁃tional conference on Management of data.Vancouver Canada.ACM,2008:1247-1250.
[6] LIN Y K,LIU Z Y,SUN M S,et al.Learning entity and relation embeddings for knowledge graph completion[J].Proceedings of the AAAI Conference on Artificial Intelligence, 2015, 29(1):2181-2187.
[7] 赵同明,钱佳琛,王翔,等.健康饮食知识图谱和问答系统构建研究[J].现代信息科技,2024,8(6):7-10.
[8] 林娜,岳希,唐聃.基于数据增强和损失平衡的机电领域命名实体识别[J/OL].计算机工程与应用,1-12[2024-04-28].https://kns.cnki.net/kcms2/article/abstract?v=3YV__sPfuhMUdBhTiW90sDnYkBJBnAm8JrJpXMuR-RgypX2c6HBZ-iAQZtY36kp_VBml3dAuksmu0MIFMzfPOpMjJsIqKciCLPgVVevZhVe1RqkJ5NlUTg==&uniplatform=NZKPT.
[9] 石雨昕,关家兴,邹博华,等.基于SpringBoot微服务架构设计与实现实验室开放课题管理系统[J].实验室检测,2024,2(1):101-106.
[10] 白茹鑫.基于SpringBoot+SSM框架的企业安全培训管理系统设计与实现[J].现代信息科技,2024,8(1):44-49.
【通联编辑:谢媛媛】
基金项目:乐山师范学院电子信息学科建设苗子工程培育项目:基于知识图谱的甘孜旅游文化智能问答系统(项目编号:23XKPY0009)