西藏非遗舞蹈知识图谱可视化研究*
2023-10-30邓文茂杨佳婷雒伟群
邓文茂 杨佳婷 雒伟群
西藏民族大学信息工程学院,陕西 咸阳 712082
藏民族是我国民族大家庭中历史悠久、文化灿烂的民族之一,藏舞更是源远流长,丰富多彩。藏舞的主要特色在于流动性、活力、节奏感和色彩变化,以此表现出藏族传统文化的独特魅力。随着互联网时代的快速发展,互联网数据规模呈现几何式的增长[1]。在IT 时代的背景下,在数字化的冲击下,重视藏舞的保护与传承尤为重要。
知识图谱可视化技术发展现状:在国外,知识图谱可视化技术也得到了广泛的关注和研究。许多知名的研究机构和大学都在进行相关研究。例如,斯坦福大学的“D3.js”项目提供了一套强大的可视化工具,可以用于展示和分析知识图谱数据。此外,还有一些开源的知识图谱可视化工具,如“Gephi”和“Cytoscape”等等,也引起了广泛应用。在国内,知识图谱可视化技术已经得到了广泛的应用。许多大型互联网公司和研究机构都在开展相关研究和应用。例如,百度的知识图谱可视化平台“百度知识图谱”可以将知识图谱数据以图形化的方式展示出来,帮助用户进行知识的探索和发现。根据我们的文献调查,对于非遗舞蹈的数字化保护,一般都是建立一个数据库系统,将文字内容与图片存入数据库中,然后通过查询看到相关图片,以及一些文字说明,对于舞蹈相关知识之间的联系,以及隐含知识的发掘,在功能方面还存在缺陷。本文建立了非遗知识图谱,通过两种技术可视化了知识图谱,展示了非遗舞蹈知识实体之间的联系,是对现有非遗数字化成果的拓展。在此虽然各界学者对藏族舞蹈的研究已经取得了一定的成果。但是,目前对藏族舞蹈的数字化保护和可视化实体联系研究却是非常少见。知识图谱是一个可视化的系统概念,用于将结构化和非结构化数据连接起来形成一个可交互式的信息网络,用于更好更有效地管理、使用和理解关于特定主题的海量知识。知识图谱会标注数据的本体和语义,强调的是实体以及实体之间的关联[2],通常,知识图谱由“node”和“edge”组成,可以用来支持复杂的知识表示和推理。所以在此现状下,笔者使用Neo4j 和D3.js 两种技术实现以非遗藏舞为例的知识图谱可视化。
1 知识图谱构建
1.1 数据获取
网络爬虫是一种自动搜集网页信息的技术[3],可以帮助我们更有效地获取信息。Python 爬虫通过使用各种不同的编程技术,从网络上抓取和解析文本、图像、表格等信息,以统计、监控和报告信息所需要的各种数据。它可以爬取网页中的文字、图片和链接,也可以提取网页的某些部分,并将其转换为可以用于数据分析的形式。
在研究中,我们采用通用爬虫技术在中国非物质文化遗产网:https://www.ihchina.cn/进行数据收集,爬虫的流程如下:
图1 Python爬虫流程图
部分代码如下:
数据爬取结果如下:
表1 Python爬取的数据表
1.2 数据处理
1.2.1 数据清洗。获得原始数据后,需要进行数据清洗以确保数据的质量和一致性。这包括去除重复数据、处理缺失值,解决异常值,使其符合知识图谱的要求。在处理缺失值时我们用三种方法,第一,删除缺失值,在缺失值较少的情景下,对结果影响不大;第二,替换缺失值,利用均值与中位数替换,优替换的优点是总体数据不变,没有影响结果;第三,插补缺失值,使用蒙特卡洛方法补充缺失数据,用拉格朗日插值法或牛顿插值法进行插补。在解决异常值时,我们先剔除含有异常值的特征记录,然后视为缺失值,之后便可用均值替换修正。
1.2.2 数据标准化。数据标准化是数据预处理的一个重要步骤,它的目的是将不同尺度、不同范围的数据转化为统一的标准尺度,以便于后续的数据分析。在本次标准化中,只存在文本数据和关系数据。笔者将数据的格式进行统一,将舞蹈名称的全部同类舞蹈(例如羌姆)统一为特定的编码或术语。对于文本型数据,使用独热编码(One-Hot Encoding)将其转化为数值型数据。独热编码将每个类别转化为一个二进制向量,向量的长度等于类别的数量,其中对应类别的位置为1,其他位置为0。例如,西藏舞蹈数据中有一个特征是类型,包括“新增”“扩展”,将其转化为以下形式的独热编码:“新增”:[1,0],“扩展”:[0,1]。对于数值型数据,对其进行范围规范化,确保数据在一定范围内,例如公布时间的数值型数据只存在2006、2008、2011、2014、2021。数据命名规范化:对于数据项的命名,进行规范化,确保命名的一致性和易读性。
1.2.3 数据分类。把清洗后的数据进行排序,我们可以得到一些数值型变量的最大值与最小值,并且我们可以按照不同的数据类型进行分类排序。如按照“公布时间”进行排序,可以清晰地看到西藏舞蹈类别的第一批非遗是2006 年,最后一批非遗是2021 年;按照“类型”分类,可以知道西藏舞蹈非遗项目分为新增项目与扩展项目。比如山南昌果卓舞是新增项目,而琼结久河卓舞是扩展项目。
图2 数据向量分类
1.2.4 数据审核。主要为四个小部分:非遗藏舞准确性审核、非遗藏舞完整性审核、非遗藏舞及时性审核、非遗藏舞一致性审核。非遗藏族舞蹈准确性审核就是看此次获取的数据是否真实准确,准确性指数据与藏族舞蹈真实情况或实际事实的符合程度。准确性包括对实体和关系的正确识别和描述,以及属性值的精确性;非遗藏族舞蹈完整性审核是指审核数据中是否包含了全部需要记录的信息,确保没有遗漏,完整性高的数据意味着数据集中的实体和关系涵盖了所研究领域的所有重要方面;非遗藏舞及时性审核指数据更新的频率和延迟程度。及时性高的数据意味着数据能够及时反映现实世界的藏族舞蹈的变化。对于一些需要实时更新的数据可以及时做出反应;非遗藏舞一致性审核指数据中的实体、关系和属性之间的逻辑和语义保持一致,一致性高的数据意味着数据中的实体、关系和属性之间的关联关系是正确和合理的。在藏族舞蹈知识图谱中,一个实体的属性值应该与其所属的关系相吻合,不应出现矛盾或冲突。
图3 数据审核的四性
1.3 三元组构建
在构建三元组之前,先整理一下数据字段和类型:
表2 数据字段类型
三元组构建中需要进行实体抽取和关系抽取。实体抽取是从文本数据中识别和提取出具有特定语义含义的实体,如舞蹈名称、类别、公布时间等。笔者手工命名实体类型,然后对其实例化后获得具体的实体。关系抽取是从文本中识别和提取实体之间的关系,如舞蹈与类别的关联、舞蹈与公布时间的关系等。三元组是一个“实体”-关系-“实体”模型,在实体抽取部分,借助jieba 分词器进行分词,根据分词标注的词性结果,标注为名词、时间、组织单位等的一般都是实体。之后再进行手工拆分抽取,将数据分开,第一列为项目序号,第二列为编号,第三列为舞蹈名称,第四列为舞蹈类别,第五列为公布时间,第六列为抽象概念,第七列为地点,第八列为组织单位,同时用手工参与抽取其实也具有更高的准确性。实体抽取的对应类型为序号、舞蹈名称、舞蹈类别、抽象概念、数字、时间、地点、组织单位。接下来我们就进行关系抽取,主要就是将各个实体之间的联结关系进行抽取表现。关系抽取采用基于规则的方法,利用事先定义的语法规则或模式来匹配和抽取特定的关系,定义的模式有:“西藏舞蹈”-整体-部分-“舞蹈名称”,“舞蹈名称”-属性关系-“项目序号”,“舞蹈名称”-属性关系-“项目编号”,“舞蹈名称”-分类关系-“舞蹈类别”,“舞蹈名称”-时序关系-“公布时间”,“舞蹈名称”-地理关系-“组织单位”,“舞蹈名称”-属于关系-“地点”。通过这些定义的模式就可以抽取得到实体间的关系。
在上面的基础上,进行三元组的构建,即将每个属性与其对应的实体进行关联。例如,将锅庄舞与其对应的舞蹈实体进行关联,关联关系有项目序号、类别、保护单位、类型、舞蹈名称、公布时间等等。然后则是用三元组的实体之间的关系进行组合关联。在实现实体联系、属性搭配后,最后将各个属性之间的关系一起构建三元组。
首先整体与部分关系的实体展示如下:
表3 整体-部分关系实体实例
然后则是其他各种关系的实体展示如下,此处以“锅庄舞”为例:
表4 以“锅庄舞”为例的其他实体关系
2 知识图谱可视化
2.1 D3.js知识图谱可视化
D3.js 是一个基于Web 标准的开源JavaScript库[4],同时使用HTML、SVG 和CSS 构建交互式数据可视化框架。它提供了一系列的非常有用的工具来帮助用户快速创建时尚、引人注目的数据可视化,这些工具包括动态图表、3D 图表、地图、散点图等等。D3中,数据转换与绘制是相互独立的[5],它使用面向对象编程技术来操纵DOM(文档对象模型),从而以一种灵活、自由、可控制的方式创建数据可视化。这次的西藏非遗舞蹈知识图谱可视化展示的第一种方法就是用D3.js进行构建并且展示。
在D3.js 知识图谱可视化之前,需要进行Web 的动态框架开发。构建动态网站和应用程序的开发框架,可以有效帮助处理前端和后端之间的数据交互、业务逻辑和页面渲染等任务。首先,配置合适的开发环境,安装pycharm、mysql、hbuilder。接下来进行了路由和URL 映射,动态框架通过路由机制来将URL 请求映射到相应的处理函数或控制器上。然后进行数据模型和持久化建设,在动态框架中,通常需要与数据库进行数据交互。这包括定义数据模型,即定义数据库表格的结构和关系。通过使用ORM(对象关系映射)工具,将数据库中的数据映射为编程语言中的对象,方便进行数据操作和查询,再然后配置中间件和拦截器,动态框架通常提供中间件和拦截器机制,用于在请求处理过程中添加额外的功能或进行验证和授权等操作。中间件可以在请求到达控制器之前或之后执行特定的处理逻辑,而拦截器则可以拦截请求并进行预处理或后处理。最后进行调试和测试,在开发过程中,需要进行调试和测试以确保应用程序的正确性和稳定性。
在进行D3.js 的知识图谱可视化时,先进行index的首页展示设计,设定语言、编码格式、菜单名,以及导入我的bundle.js 和data.js,这一部分最后还设置了div 容器盒子参数设定-幕布设置(id 以及style),然后用target 提取我的知识图谱容器,链接data 文件里面的nodes 和links,这里写了三个测试事件分别为method1、method2和method3。接下来配合data文件里面的一些调参,实现根节点。然后进行menu 菜单设置,定义根节点下面的首个子节点名字以及类型和鼠标触发事件,这样就可以在接下来进入到另一个非遗藏舞展示的界面。此处效果展示如下:
图4 D3.js的index展示1
图5 D3.js的index展示2
然后将项目id 为kg 的进行初始化(init),插入前面的nodes 与links 点线框架、写好menu 菜单、以及鼠标事件events,这里的events 包括canvas 与node,画布的点击事件和node 数据输入都以后端数据库的data数据进行功能输入。node以及前面的事件都在data.js文件进行数据写入,index 做框架。并以根节点“Enter藏舞”为例做web事件测试:
图6 知识图谱web框架测试
最后进行本次项目爬取的所有非遗藏舞的数据导入以及index的展示。之前存储在excel数据库里面的藏族舞蹈数据都以D3.js 插件通过js 编程导入data.js 文件,33 种舞蹈都以此方式导入,此处是以“芒康弦子舞”为例:
图7 在vscode里的data.js数据导入代码
在进行完data.js 文件功能输入后,需要注意的是,鼠标右键单击可以固定图谱,左键可以释放图谱,鼠标左键单击然后拖拽可以使其移动,右键单击在固定的同时会点开菜单栏。根节点展示如下:
图8 D3.js知识图谱最终完成图
2.2 Neo4J数据库存储与可视化
Neo4j 是一种用来存储与处理数据的可视化图数据库,它是基于Java 的高性能、高可靠性、可扩展性强的开源图数据库[6]来实现的。同时,Neo4j又是依靠节点和边来共同组建,具有高度的可靠性和数据一致性。
此次西藏非遗舞蹈知识图谱可视化展示的第二种方法就是采用图数据库Neo4j 进行展示。Neo4j 存储数据可以采用多种导入方式,本项目存储采用将CSV数据导入Neo4j中进行存储,具体做法如下:
2.2.1 创建数据。Neo4j 在构建知识图谱时需要创建节点数据和关系数据。
2.2.1.1 节点文件
表5 CSV中心节点
表6 以弦子舞和锅庄舞为例的CSV分支节点
第一列为属性名,是属性名_Id;中间列为属性值;最后一列为:实体LABEL。
2.2.1.2 关系文件
表7 csv关系类型实例
:START_ID,:END_ID 为关系文件列,引用节点ID,;最后一列为:TYPE(关系类型)
2.2.1.3 csv 文件。在excel 中生成后,点击文件->另存为->保存类型为CSV UTF-8的格式
2.2.1.4 csv 文件存储。将生成的csv 文件存入neo4j的import 文件夹下。D:files eo4j eo4j-community-3.5.5-windows eo4j-community-3.5.5import.
2.2.2 导入csv文件。
2.2.2.1 打开PowerShell,进入到neo4j的bin目录下。
2.2.2.2 输入命令。neo4j-admin import --mode=csv--database=onepic.db--nodes D:dwmyjt eo4j-community-4.2.4 -wins neo4j-community-4.2.4 importcenter.csv --nodes D:dwmyjt eo4j-community-4.2.4-wins eo4j-community-4.2.4import ame.csv --relationships D: dwm yjt neo4j-community-4.2.4-wins eo4j-community-4.2.4import es.csv
此命令将import中的csv文件全部导入neo4j中。
2.2.2.3 输入命令。neo4j.bat console,点击网址http://localhost:7474/,进入到neo4j 浏览器中。首先查看Database Information,这里我们可以看到已有的结点数,有多少条关系,占用的存储空间等数据库信息。
图9 在Neo4j数据库查看节点与关系
2.2.2.4 输入MATCH (n) RETURN n LIMIT 1000,即可查看知识图谱可视化内容,将鼠标移到对应节点和关系上,底部会出现相应的属性。如图10 就是采用Neo4j图数据库存储与可视化的结果。
图10 Neo4j知识图谱最终完成图
3 结论与展望
本文使用网络爬虫技术从网络中获取了西藏非遗舞蹈数据,通过对数据清洗获得有效数据,然后按照定义的实体类型和关系类型,抽取了知识图谱三元组,使用Neo4j 数据库存储了知识图谱并实现了可视化,本文也通过web开发的动态框架进而使用D3.js技术进行了知识图谱可视化。西藏非遗藏舞知识图谱的应用前景非常广阔,建立其上的语义搜索、智能推荐、知识问答等应用服务将为藏族舞蹈的保护、传承和发展作出重要贡献。