技术分享
用 NebulaGraph + DeepSeek 解锁元宵节文化知识图谱,你知道几个?
一、前言
“东风夜放花千树,更吹落,星如雨” —— 南宋词人辛弃疾笔下描绘的元宵盛景,穿越 800 年时空依然让我们心驰神往。这个起源于汉代太一神祭祀的古老节日,在历史长河中不断焕发新生:东汉时期与佛教燃灯习俗融合,唐代发展为全民狂欢的"上元节",宋代市井中诞生猜灯谜等民俗…元宵节作为中华民族历史悠久、内涵丰富的重要传统节日,其意义早已超越了“节日”的单一范畴,而成为家庭团圆、祈福迎祥的象征。
在漫长的历史演进中不断融合和创新,形成了历史、传说、民俗、美食、诗词等多重文化。这些文化要素构成了一幅多层次、跨领域、互联互通的文化全景图。我们如何用现代科技来传承和弘扬这一古老节日的文化内涵?本文将带你走进元宵节的文化世界,通过 NebulaGraph 和 DeepSeek 构建直观易懂的元宵节知识图谱。
二、元宵节的多重文化维度
在构建元宵知识图谱之前,我们必须对元宵节文化进行系统性拆解,将其内涵细分为多个独立但又相互关联的知识域。从知识图谱建模的角度来看,每一个知识域都可以视为一个节点类别(Tag),而这些类别之间的关系则由边(Edge)来表示。下面我们详细介绍元宵节的四大文化维度。
-- 插入类别节点
INSERT VERTEX `Category` (name) VALUES "元宵节传说";
INSERT VERTEX `Category` (name) VALUES "关于元宵的诗";
INSERT VERTEX `Category` (name) VALUES "民俗活动";
INSERT VERTEX `Category` (name) VALUES "美食文化";
2.1 历史传说
元宵节中流传着大量的传说和民间故事,这些传说不仅为节日增添了神秘色彩,同时也反映了古人对自然、神祇以及命运的理解。在图谱建模时,每一个传说故事都可以构建为一个节点,其属性包括传说名称、来源文献、相关朝代和地域。通过定义“传说关联”边,将不同传说故事与历史传承、民俗活动相互链接,形成完整的文化脉络。
# 历史传说(含时空维度)
CREATE TAG `HistoricalLegend` (
name string NOT NULL, # 传说名称
era string, # 所属朝代
region string DEFAULT "中国", # 地域分布
description string, # 详细描述
source string # 文献来源
) COMMENT = "历史传说实体";
2.2 民俗风情
元宵节作为民间传统节日,其民俗活动丰富多彩,涵盖了赏花灯、猜灯谜、踩高跷、扭秧歌等多个方面。每一种民俗活动都深深植根于地方文化,并具有鲜明的地域特色。在知识图谱中,民俗活动作为一个独立的知识领域,其节点属性包括活动名称、起始年份、流行指数、地域分布及文化意义等,通过“民俗关联”边将其与历史、传说等领域关联起来。
# 民俗活动(带时空特征)
CREATE TAG `FolkActivity` (
name string NOT NULL, # 活动名称
start_year int, # 起始年份
popularity double, # 流行度指数
spatial_scope string, # 地域分布
cultural_significance string # 文化意义
) COMMENT = "民俗活动实体";
2.3 美食文化
元宵节的美食是传统节日中不可或缺的一部分,每种食品都蕴含着独特的文化象征意义:
元宵/汤圆:象征团圆与和谐,寓意家庭和睦、生活甜蜜。
年糕:寓意年年高升、步步高升,是对美好未来的期盼。
在知识图谱中,美食文化节点需包含食品名称、热量、原料成分(以字符串形式存储多个原料)、及象征意义等属性。通过“美食关联”边,可以将美食与民俗活动、历史传承等关联起来,形成完整的文化生态链。
# 美食文化(含营养成分)
CREATE TAG `FoodCulture` (
name string NOT NULL, # 食物名称
calories double, # 热量(kcal)
ingredients string, # 原料成分
symbolic_meaning string # 象征意义
) COMMENT = "美食文化实体";
2.4 诗词雅韵
元宵节在文人墨客笔下同样是一座灵感的宝库。历代文人以元宵为题,创作了大量优美诗词,这些诗词不仅反映了当时的社会风貌,更承载了深厚的情感与审美:经典作品:如辛弃疾的《青玉案·元夕》、欧阳修的《生查子·元夕》等,均成为千古绝唱。在知识图谱中,诗词作品节点包括标题、作者、创作朝代、韵律模式、情感分析值和完整内容等,通过“诗词关联”边将诗词与民俗活动、历史传承、传说故事等多维信息建立联系。
# 诗词作品(带文学特征)
CREATE TAG `Poetry` (
title string NOT NULL, # 诗词标题
author string, # 作者
dynasty string, # 创作朝代
rhyme_scheme string, # 押韵模式
sentiment_analysis double, # 情感分析值
content string # 完整内容
) COMMENT = "诗词作品实体";
三、NebulaGraph + DeepSeek
构建元宵节知识图谱
3.1 数据建模
在构建元宵知识图谱过程中,我们首先需要对各个文化维度进行数据建模。基于前文介绍的四大维度,我们已经将数据分为以下四大节点类别:
HistoricalLegend(历史传说)属性:名称、朝代、地域、描述、文献来源。
FolkActivity(民俗活动)属性:活动名称、起始年份、流行指数、地域分布、文化意义。
FoodCulture(美食文化)属性:食品名称、热量、原料成分(字符串存储)、象征意义。
Poetry(诗词作品)属性:标题、作者、朝代、韵律模式、情感分析值、完整内容。
接下来,我们需要定义边类型来表达不同领域之间的关联:
# 定义多维关联边类型
# ================================================
# 时空关联边(带权重)
CREATE EDGE `HistoricalContinuity` (
start_year int, # 起始年份
end_year int, # 终止年份
influence_factor double # 影响力系数
) COMMENT = "历史延续性关联";
# 文化传播边(带地理编码)
CREATE EDGE `CulturalDiffusion` (
from_region string, # 发源地
to_region string, # 传播地
diffusion_path string # 传播路径
) COMMENT = "文化传播路径";
# 语义关联边(带置信度)
CREATE EDGE `SemanticLink` (
relation_type string, # 关系类型
confidence double, # 置信度
source string # 知识来源
) COMMENT = "语义关系关联";
# 创建边类型:RelatedTo
CREATE EDGE RelatedTo (
description string, # 关系描述
) COMMENT = "历史传说与民俗活动之间的关联关系";
# 创建边类型:AssociatedWith
CREATE EDGE AssociatedWith (
description string, # 关系描述
) COMMENT = "民俗活动与美食文化之间的关联关系";
# 创建边类型:WrittenFor
CREATE EDGE WrittenFor (
description string, # 关系描述
) COMMENT = "民俗活动与诗词作品之间的关联关系";
经过数轮和 DeepSeek 的沟通,得到了以下数据:
3.2 通过 DeepSeek 做元宵节文化知识抽取
在构建元宵知识图谱过程中,需要大量非结构化的元宵节文化文本转换为结构化数据,再通过图谱表达各实体与关系。以下介绍如何利用 DeepSeek 对元宵节文化文本进行知识抽取,并将抽取结果以 nGQL 语句导入 NebulaGraph。这里给出两种方法:
方法一:直接与 DeepSeek 对话
构建提问策略 根据元宵节文化知识的需求,设计几个关键问题,例如:
“元宵节的起源和历史背景是什么?”
“元宵节有哪些传统民俗活动?”
“元宵节的代表美食有哪些?它们分别象征什么?”
“请解析《青玉案·元夕》中描绘的元宵盛景。”
通过 DeepSeek 的在线接口或对话系统,直接输入上述问题。DeepSeek 会返回结构化或半结构化的回答,其中可能包含实体及其属性、关系等信息。例如,返回的数据可能类似于:
实体:元宵节 属性:起源 → “汉代祭祀太一神”、历史记载 → “《史记》记载…”
实体:赏花灯 属性:地域 → “华北,江南”、文化意义 → “象征光明与希望”
实体:元宵 属性:美食寓意 → “象征团圆与美满”
实体:青玉案·元夕 属性:作者 → “辛弃疾”、朝代 → “宋代”
同时,还会返回诸如:
("元宵节", "hasTradition", "赏花灯")
("元宵节", "hasFood", "元宵")
("赏花灯", "describedIn", "青玉案·元夕")
根据 DeepSeek 返回的结构化知识,我们整理出各个节点及关系,然后生成 nGQL 语句。例如:
# 建立元宵节与赏花灯的关联(例如,历史传承到民俗活动)
INSERT EDGE RelatedTo (description) VALUES "HL001" -> "FA001":("元宵节催生了赏花灯这一民俗活动");
# 建立赏花灯与元宵之间的关联(民俗活动与美食文化)
INSERT EDGE AssociatedWith (description) VALUES "FA001" -> "FC001":("赏花灯与元宵相辅相成,共同构成节日风貌");
# 建立赏花灯与诗词作品之间的关联 INSERT EDGE WrittenFor (description) VALUES "FA001" -> "P001":("《青玉案·元夕》描绘了赏花灯的盛景");
方法二:本地部署 DeepSeek
对于大规模数据或需要对抽取过程进行精细控制的场景(事实是总是遇到“服务器繁忙,请稍后再试”),可以选择在本地部署 DeepSeek。此方法适合批量处理、自动化知识库构建,步骤如下:
本机部署 DeepSeek-R1
i、下载安装 Ollama;
ii、运行:ollama run deepseek-r1;
iii、下载安装 ChatBox;
iV、在ChatBox 的设置中选择 "OllamaAPI" 并选择 DeepSeek-R1 模型
准备元宵节相关的海量语料,如历史文献、民间故事、网络文章、诗词资料等,并进行文本格式化处理。
文本预处理对语料进行清洗、分词,将预处理后的文本组织成适合 DeepSeek 模型输入的格式。
批量知识抽取运行本地部署的 DeepSeek 模型,对处理后的文本数据进行批量推理。模型会自动识别出文本中的关键实体、属性及其之间的关系,并生成结构化输出。
输出数据示例(JSON 格式):
{
"entity": "元宵节",
"attributes": {
"起源": "汉代祭祀",
"传统": "赏花灯,猜灯谜",
"美食": "元宵,汤圆",
"诗词": "青玉案·元夕"
},
"relations": [
{
"subject": "元宵节",
"predicate": "hasOrigin",
"object": "汉代"
},
{
"subject": "元宵节",
"predicate": "hasTradition",
"object": "赏花灯"
},
{
"subject": "元宵节",
"predicate": "hasFood",
"object": "元宵"
},
{
"subject": "赏花灯",
"predicate": "describedIn",
"object": "青玉案·元夕"
}
]
}
数据转换与 nGQL 导入,如:
# 插入美食文化节点:元宵
INSERT VERTEX FoodCulture(name, calories, ingredients, symbolic_meaning) VALUES "FC001":("元宵", 450, "糯米,芝麻,白糖", "象征团圆与美满");
# 插入诗词作品节点:青玉案·元夕
INSERT VERTEX Poetry(title, author, dynasty, rhyme_scheme, sentiment_analysis, content) VALUES "P001":("青玉案·元夕", "辛弃疾", "宋代", "xyz", 0.85, "东风夜放花千树,更吹落、星如雨...");
持续更新与调优根据实际抽取效果,不断优化 DeepSeek 模型参数和抽取策略,提升实体和关系的准确性。
3.3 数据导入与知识图谱构建
将 DeepSeek 提取的数据导入到 NebulaGraph 中,可以使用以下 nGQL:
# 1. 插入历史传说数据
INSERT VERTEX `HistoricalLegend` (
name, era, region, description, source
) VALUES
"HL001":("元宵节起源", "汉代", "中国",
"源于汉代祭祀太一神的活动,《史记·乐书》记载:'汉家常以正月上辛祠太一甘泉'",
"《史记》"),
"HL002":("燃灯习俗起源", "东汉", "洛阳",
"东汉明帝时期佛教传入,敕令正月十五燃灯表佛,《僧史略》载:'西域十二月三十日...汉明帝令烧灯,表佛法大明也'",
"《洛阳伽蓝记》"),
"HL003":("舞龙舞狮起源", "唐代", "中原",
"舞龙舞狮起源于唐代,最初是宫廷表演,后流传至民间,象征驱邪避灾、吉祥如意",
"《唐书》"),
"HL004":("踩高跷起源", "北宋", "北方",
"踩高跷起源于北宋时期,最初是民间表演艺术,后成为元宵节常见活动",
"《宋史》"),
"HL005":("扭秧歌起源", "明代", "北方",
"扭秧歌起源于明代,最初是农民庆祝丰收的舞蹈,后成为元宵节传统活动",
"《明史》");
# ================================================
# 2. 插入民俗活动数据
INSERT VERTEX `FolkActivity` (
name, start_year, popularity, spatial_scope, cultural_significance
) VALUES
"FA001":("赏花灯", 180, 0.95, ARRAY["华北","江南"], "象征光明与希望,促进社区凝聚力"),
"FA002":("猜灯谜", 960, 0.88, ARRAY["全国"], "智力活动与传统文化的结合体现"),
"FA003":("舞龙舞狮", 618, 0.92, ARRAY["中原","华南"], "寓意驱邪避灾、吉祥如意"),
"FA004":("踩高跷", 1046, 0.85, ARRAY["北方"], "传统表演艺术,增加节日欢乐气氛"),
"FA005":("扭秧歌", 1368, 0.90, ARRAY["北方"], "传统舞蹈,表达喜庆和丰收的喜悦");
# ================================================
# 3. 插入美食文化数据
INSERT VERTEX FoodCulture(name, calories, ingredients, symbolic_meaning)
VALUES
"FC001":("元宵", 450, "糯米,芝麻,白糖", "象征团圆与美满"),
"FC002":("汤圆", 350, "糯米,红豆,椰蓉", "寓意家庭和睦、生活甜蜜"),
"FC003":("年糕", 320, "糯米,红枣,花生", "象征年年高升,生活步步高"),
"FC004":("炸元宵", 500, "糯米,豆沙,植物油", "外酥里嫩,寓意生活红火"),
"FC005":("饺子", 280, "面粉,猪肉,白菜", "象征团圆和财富");
# ================================================
# 4. 插入诗词作品数据
INSERT VERTEX `Poetry` (
title, author, dynasty, rhyme_scheme, sentiment_analysis, content
) VALUES
"P001":("青玉案·元夕", "辛弃疾", "宋代", "xyz", 0.85, "东风夜放花千树,更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在、灯火阑珊处。"),
"P002":("生查子·元夕", "欧阳修", "宋代", "abd", 0.78, "去年元夜时,花市灯如昼。月上柳梢头,人约黄昏后。今年元夜时,月与灯依旧。不见去年人,泪湿春衫袖。"),
"P003":("正月十五夜", "苏味道", "唐代", "abc", 0.80, "火树银花合,星桥铁锁开。暗尘随马去,明月逐人来。游伎皆秾李,行歌尽落梅。金吾不禁夜,玉漏莫相催。"),
"P004":("十五夜观灯", "卢照邻", "唐代", "aabb", 0.82, "锦里开芳宴,兰缸艳早年。缛彩遥分地,繁光远缀天。接汉疑星落,依楼似月悬。别有千金笑,来映九枝前。"),
"P005":("元夕无月", "丘逢甲", "清代", "aabb", 0.75, "三年此夕月无光,明月多应在故乡。欲向海天寻月去,五更飞梦渡鲲洋。"),
"P006":("京都元夕", "元好问", "金代", "aabb", 0.80, "袨服华妆着处逢,六街灯火闹儿童。长衫我亦何为者,也在游人笑语中。"),
"P007":("鹧鸪天·元夕有所梦", "姜夔", "宋代", "aabb", 0.78, "肥水东流无尽期,当初不合种相思。梦中未比丹青见,暗里忽惊山鸟啼。春未绿,鬓先丝,人间别久不成悲。谁教岁岁红莲夜,两处沉吟各自知。"),
"P008":("清平乐·上元月蚀", "纳兰性德", "清代", "aabb", 0.85, "瑶华映阙,烘散蓂墀雪。比拟寻常清景别,第一团圆时节。影蛾忽泛初弦,分辉借与宫莲。七宝修成合璧,重轮岁岁中天。"),
"P009":("元夕二首", "王守仁", "明代", "aabb", 0.75, "故园今夕是元宵,独向蛮村坐寂寥。赖有遗经堪作伴,喜无车马过相邀。"),
"P010":("元夕影永冰灯", "唐顺之", "明代", "aabb", 0.80, "正怜火树千春妍,忽见清辉映月阑。出海鲛珠犹带水,满堂罗袖欲生寒。烛花不碍空中影,晕气疑从月里看。为语东风暂相借,来宵还得尽余欢。");
在建立关联关系和创建索引后,执行到数据库中,让我们看看效果~
环形关系图彩蛋 🎉 祝大家元宵节团团圆圆