【目的】基于中国历代人物传记资料库(CBDB)数据, 利用知识图谱的原理和方法描述宋代文人的学术师承关系, 为人文领域的知识发现提供新的技术实现方式和研究视角。【应用背景】聚焦当前数字化结果可读性较低、难以被直观应用的现状, 通过可视化表达CBDB数据库中的人物关系, 为相关历史研究者和爱好者提供知识发现和探索的数据入口。【方法】构建宋代学术师承本体, 并对数据库中的文人关系数据进行语义化转换。在此基础上开发“宋代学术语义网络”平台展示知识图谱的知识架构和数据内容。【结果】生成的知识图谱中共有5个类, 39个关系, 囊括48 018位人物和6 599条地理信息。“宋代学术语义网络”平台集成了RelFinder可视化工具, 用于检索和动态展示知识图谱中人物、地理实体间的关系。【结论】本研究为CBDB数据的语义化工作提供了理论和实践经验, 为历史学相关问题的研究提供了直观、高效、易用的工具。
[Objective] The study constructs a knowledge graph of academic relationships among scholars in China’s Song Dynasty, aiming to provide new techniques for knowledge exploration in humanity research. [Context] Our study addresses the usability and visualization issues facing digital collections (i.e. the China Biographical Database Project), and establishes a knowledge portal for history researchers and amateurs. [Methods] First, we built the ontology of ancient Chinese scholars. Then, we transformed their relationship to RDF data for the knowledge graph. Finally, we created an online platform to demonstrate the visualization results. [Results] We created the knowledge graph with five classes and 39 relationships based on 48,018 peoples and 6,599 geographic data. The Song’s Academic Inheritance Platform integrates the RelFinder visualization tool to display the entities’ relationships in the knowledge graph. [Conclusions] This study offers practical solutions for semantic research on the China Biographical Database Project and related fields in history.
宋代是中国传统文化与学术发展的鼎盛时期, 其时诸家并起、百家争鸣, 王国维亦称“宋代学术, 方面最多, 进步亦最著”[1]。南宋文哲朱熹在中国思想史上第一次提出了“道统”之说, 学术传承的梳理自此成为儒家学术发展的重要话题, 一直延续至今。
中国历代人物传记资料库(China Biographical Database Project, CBDB)[2], 收录了中国各朝代人物及人物关系, 为研究我国传统社会提供了重要的数据参考。CBDB数据库中宋代时期的数据包含6万余条人物基本信息和百万余条人物关系信息, 其中学术关系达82种, 亲属关系多达479种, 体量庞大且缺乏概念整合的数据为用户的理解和查询带来困难。此外, CBDB以关系型数据结构建模存储, 致使多人物间的间接关系查询处理较为复杂, 制约了深层的知识发现和可视化应用的开发。
本文以CBDB数据库中的宋代人物为研究对象, 应用知识图谱对宋代人物间的师承关系数据进行语义化描述, 并以可视化方式呈现。语义化过程将“面向关系”转化为“面向对象”, 每一位人物的属性和关系都可以看作一个独立的数据单元, 由此能够更便捷地实现多人物多层次的关系查询, 同时人物关系的语义化定义也为基于知识图谱的语义推理和查询建立了基础。
随着文献处理技术和文本、图像分析能力的进步, 数字人文领域在国内外迅猛发展, 并得到越来越多的关注。目前针对中国历史文化的数字人文研究多处于数字化及数据构建阶段[3]。在数据建设方面, 出现了一批面向中国历史数据的数字系统及数据库, 例如中国历代人物传记资料库(CBDB)从非结构化的文献中提取元素并以关系型数据库组织存储; 中国历史地理信息系统(CHGIS)[4]、中华文明之时空基础架构(CCTS)[5] 等整合时空概念, 并结合GIS工具提供分析手段。这些数据资料的建设为人文领域学者的研究带来极大便利。在数据分析方面, 多数研究基于非结构化文本展开, 按照研究问题大体可以分为两类:
(1) 第一类为针对文本挖掘算法的研究, Liu等[6]关注于古文本文献信息的实体抽取和挖掘分析, 尝试利用语言模型和CRF模型从古文原文中抽取实体并补充至CBDB数据库中; 王东波等[7]以部分先秦时期文献为语料, 对其中的人名、地名、时间等实体进行内部数量统计和外部特征分析, 并构建特征模板进行测试。
(2) 第二类研究借助文本挖掘技术对文本内容展开分析, 例如欧阳剑[8]开发了统计分析平台, 实现对大规模古籍文本的特征提取和统计分析; 还有研究更加聚焦于特定话题, Allen等[9]利用主题模型分析汉典古籍中的话题和词语分布, 并着重讨论了“阴阳”的演化; Nichols等[10]将“遥读”与“细读”相结合, 利用主题模型对比孔子、孟子与荀子著作的词语分布。此外也有研究直接将数据分析建立在结构化处理后的数据上, 例如严承希等[11]基于CBDB中的人物政治关系数据, 利用社会网络分析的方法解读宋代党争关系, 探究宋代政治格局。
应对人文领域数据内涵多样、数据关系繁杂的特点, 知识图谱的方法逐渐被应用于人文数据。一部分研究者关注于利用本体组织特定问题中的概念和关系, 为知识、实体、事件建立具备逻辑内涵的描述体系, 例如Kyvernitou等[12]提取美术品的抽象审美特征构建了女性内容表达本体; Huang等[13,14]基于文本驱动的方法从中国唐代诗歌和宋代诗人苏轼的作品中提取概念并构建关于动植物实体的本体。还有研究者和研究机构着眼于以“关联数据”组织大规模开放数据, 建立关联数据平台及分析工具[15,16]。
为有效组织数据并呈现人物学术关系, 本研究遍历了从数据处理、组织到应用的完整过程, 全部建构工作可以分为4个层次: 概念层、本体层、语义数据层和应用层。概念层的工作为知识图谱的需求解析, 包括对相关文献资料的调研以及结合数据库底层架构的概念分析; 本体层结合CBDB数据库架构和公用本体概念完成本体设计; 语义数据层实现基于本体的数据处理和数据转化; 应用层旨在为用户提供便捷的知识图谱应用, 以可视化的方式展示知识图谱的结构并提供数据检索入口。各层次间的工作流如图1所示。
宋代学术师承本体的实体构建以人物为核心, 围绕“时间”、“空间”和“人物”三个维度构建本体结构。为了增加本体的可读性和普适性, 本体构建中尽可能多地复用已有本体, 定义及复用列表如表1所示。
知识图谱中的关系定义基于CBDB数据结构, 对其中的部分关系进行概念整合和重定义。
CBDB中人与人之间的关系分为两类: 社会关系与亲属关系。社会关系包括社会关系(笼统)、学术关系、朋友关系、政治关系、著述关系等10类, 该10类关系与其下的小类共同形成社会关系的树状等级列表。总计462种社会关系, 13万余条关系数据。在整合和处理社会关系时发现以下问题:
(1) 数据库中的关系名称直接提取自原材料, 因此存在关系名称不同但概念相同的情况, 例如“为···之弟子”与“为···之学生”均表示师生关系, 需在本体中统一;
(2) 时代变迁或应用场景的不同导致同一个关系名可能具有多种关系含义, 如“政治关系”与“学术关系”下均包含“批评”关系, 需予以区分;
(3) 由于体系设计的视角不同, 且CBDB数据库中的社会关系结构存在概念重合的现象, 与学术传承相关的关系可能分散在多个社会关系中。例如 “学术主题相近”中的“论学”关系与“学术交往”中的“指教”关系在某种程度上也可被归入“学术交往”和“师生关系”类, 需在本体关系设计时进行整合;
(4) 为了明确主被动关系, CBDB对大多数关系做了双向定义, 例如“指教······”与“被······指教”等, 在生成本体数据时需要剔除冗余信息。
面向宋代学术师承关系, 本研究仅提取社会关系中的学术关系, 并尤其关注“学术关系类”下的“师生关系”与“学术交往”类目。通过对10种“师生关系”和30种“学术交往”关系的语义辨析, 将学术关系分为学术师承与学术交往两类。学术师承关系要求关系人双方在学术领域具有比较明确的传承和教授的关系, 学术交往意味着关系双方在学术层面有一定的交流或影响。在学术师承关系下, 又根据师生双方的教学关系, 进一步细分师生关系、指教关系与传承关系。
考虑到宋代文人家学传承与学术发展的密切关系, 本研究将亲属关系引入学术师承知识图谱。CBDB数据库中的亲属关系包含历史资料中具有亲缘或抚养关系的信息, 关系类型共479种, 关系数据48万余条。
亲属关系处理过程中需要解决的问题有:
(1) 数据中存在大量含义重复或相互包含的关系, 例如“子”与“三子” , 又如“同父异母姊妹”与“同父异母姊”。
(2) 一些关系名称包含的信息对本研究的本体构建没有意义, 例如“唯一幸存的儿子”。因此需要基于以上问题进一步清理CBDB中的亲属关系, 使其更加简明清晰。
参考schema: Person词表中关于亲属关系的属性定义, 本研究将所有亲属关系划分为两个大类: 直系亲属关系与非直系亲属关系。直系关系包括父母、配偶、子女、兄弟姐妹、同父异母姊妹、继女等, 每一个直系关系均有唯一的本体关系与其对应, 例如schema:spouse代表配偶关系; 而非直系关系, 例如三世祖、侄女、叔伯等, 统一以“kv:relative”表示。
除人物类间关系外, 知识图谱中还包括人-地关系, 如出生地(kv:birthplace)、祖籍地(kv:nativeplace); 地-地关系即政治区域划分等。最终生成的知识图谱中共包括5个类, 39个关系, 各关系描述及数量如表2所示。
语义数据层的数据处理和转换是承接本体结构和上层应用的关键。将宋代人物关系由关系型数据转换为RDF格式, 具有三方面优势:
(1) 在数据层面, 以三元组格式存储的数据彼此之间相对独立, 因此相比于关系型数据受数据存储结构逻辑的制约较小, 尤其能够适应异构数据源的整合;
(2) 在应用层面, 三元组数据作为图结构数据, 支持基于图的SPARQL检索, 可以实现较SQL检索更复杂的关系和知识发现, 以及进一步的知识应用。
(3) 数据转为RDF格式是发布为关联数据的基础, 之后可进一步与公开发布的LOD(Linked Open Data)建立联系, 吸收外界数据资源的同时补充网络世界的关联数据云。
本研究使用的数据来自CBDB数据库中的三类数据: 人物、地点、关系。各类数据的梳理方式如下所述。
(1) 人物: 在数据库中, 以“c_dy”字段为筛选条件, 提取所有宋代人物的姓名、性别、生卒年、民族特征。共筛选出48 018条人物数据, 对于其中的137条缺少人名或人名不全的记录, 做删除处理。
(2) 地点: 宋代的行政区划设置较为繁杂, 且北宋至南宋的300年间有较大的区划调整, CBDB数据库中存储的宋代地理类型除基本的“路”、“州”、“县”外还包括“城”、“寨”等特殊类型以及部分少数民族地区的部落类型, 更为数据的分析整理带来困扰。为增加关联数据的复用性, 本研究的本体设计忽略行政区域类型和名称, 只关注行政区域间的从属关系, 共得到6 599条地理信息和7 038条地理从属关系数据。
(3) 关系: 基于本体构建结构, 从数据库中提取人物间学术关系、亲属关系及人与地理区域的关系。在数据库中, 有些关系两端的实体处于不同时代, 例如后朝人物A对前朝人物B的推崇、评价等, 在筛选关系时只保留宋代人物之间的关系数据。对于一部分具有正向定义和对应反向定义的人物关系, 例如A为B的老师, B为A的学生, 保留“主动关系”(如A指教B)或数据量显著较多的关系。最终共筛选出56 386对人物关系, 删除数据库中指数年为空的人物后剩余49 056对人物关系数据。
分析所提取的宋代人物关系的数量分布, 可以看到明显的长尾特征。在三万余位存在关系数据的宋代历史人物中, 近八成人物的关系少于或等于三条, 而关系数量超过10的人仅占1%。图2、图3列出了关系数量较多的代表人物, 可以发现师生关系在本研究的数据中占比最大, 师生关系数量最多的三个人为朱熹、吕祖谦和陆九渊。除师生关系外占比较大的为赵氏即皇姓家族关系。
将关系型数据转换为RDF数据的过程即RDB2RDF过程, 简单来说, 可以将其看作一个表格结构向三元组结构的映射, 如表3所示。
本研究借助D2RQ工具实现RDF数据的构建。在基本映射结构的基础上, 通过映射文件对RDF的定义和格式做了规范。以实体在数据库中的ID作为唯一标识定义实体URI, 格式为“http://{ip}:{port}/resource/ {classname}/{id}”; 设置本研究中定义的本体或关系URI前缀为“@prefix kv: http://www.kvlab.org/resource/”; 取实体名称(如人名、地名)中、英文作为RDF文件中的实体标签(rdfs:label)。
利用OpenLink的Virtuoso数据库存储RDF文件, 分别以不同的图名称命名并发布。用户可通过SPARQL端口实现对数据的检索。
基于前面知识图谱构建工作, 在应用层设计了宋代学术语义网络平台(http://dh.kvlab.org/cbdb_kg/), 旨在借助可视化方法描述宋代学术关系知识图谱的基本结构, 并实现对数据的可视化检索。
传统的本体结构可视化常用网络图呈现类定义及类间关联, 这一方式存在三个问题: 难以直观展现类和关系的层级结构; 关系较多时线条重叠信息呈现不明确; 在数据层面上, 无法表现类间关系的数量区别。为解决这些问题, 本文在知识图谱平台中应用echarts.js、d3.js工具以旭日图和弦图两种方式展现知识图谱结构。
(1) 层次体系可视化
图4以类和关系为主体, 借助旭日图描述父类、子类以及父关系、子关系之间的关系, 并将数据型关系置于其所属类的下位。当用户点击图中的某一扇形区域时, 可以进一步展开该类下的子层结构。可以看到人-地关系包含的子关系最多, 其次为人-人关系; 在各个类中, 人物类的属性定义最为全面。
(2) 类间关系及规模可视化
图5用弦图表现各个类之间的连接关系, 补充对本体数据状态的描述。圆弧被分为人物、地点、年份、朝代、族群5个部分。弧间连线的粗细标示关系数量。从图中看到, 人物类与其他各个类均有关联, 是整个知识图谱的核心; 人物类与地理类关系的量最多且存在自连关系。
丰富的人物关系是CBDB数据的特色之一, 本研究所关注的学术师承关系是其中的重要类型。为了更好地呈现关系数据及其特点, 本研究在所设计的平台中嵌入了开源工具RelFinder[29], 该工具通过Virtuoso的SPARQL端口实现对RDF数据的查询和可视化。它的运行基于开源框架Adobel Flex, 曾被应用于多个知识图谱项目中[30,31]。平台提供两个数据集, 能够支持RelFinder的中、英文检索。通过RelFinder可以实现以下功能:
(1) 多对象的关系查询
该工具以力导向图的形式呈现任意两个或多个实例间的多种关系。例如, 图6为“胡瑗”、“苏轼”和“王安石”的检索结果, 其中人物、地点实体与师生、父子、丈婿、出生地等关系共同构成复杂的学术和家族网络, 由此得以一窥宋代活跃的文人圈。
(2) 支持检索结果的筛选过滤
利用左侧查询框下的筛选工具栏, 依据关系链长度、实例类型、关系类型、连通度这4个指标筛选检索结果, 例如仅查看检索结果中的师生关系; 或去除结果中的地理节点仅保留人物关系等。
(3) 支持检索结果的高亮显示
在检索结果页面, 圆角矩形代表实例, 矩形代表属性, 箭头代表实例之间的关系。用户可以根据需求选中相应实例, 高亮关系链。
本文应用知识图谱组织和呈现宋代的学术师承和亲属关系, 所构建的语义化网络为历史学相关问题的研究提供了直观、高效、易用的新工具。一方面本体和关联数据的构建过程对CBDB数据库的关系整合和知识图谱建设具有借鉴意义; 另一方面, 本研究所开发的宋代学术语义网络平台达到了实用水平, 能满足宋代人物学术关系的查询和知识发现, 为历史研究者和爱好者检索并了解历史人物间的复杂关系提供了新的视角和方法。
本研究的关注点在于学术师承的关系发现, 但用户可以基于平台中整合的数据和关系自主发掘其他主题的信息, 例如某一个家族的人物关系等。目前的数据范围为CBDB数据库中的宋代数据, 关系限于学术传承关系和亲属关系。未来可探索CBDB中其他学术与社会关系的本体化和语义化, 并开发集成化可视化查询界面, 满足深层次的知识浏览和知识发现需求。
杨海慈: 研究实施, 系统开发, 论文撰写;
王军: 设计构思, 论文修改和修订。
所有作者声明不存在利益冲突关系。
支撑数据由作者自存储, E-mail: haici_yang@pku.edu.cn。
[1] 杨海慈, 王军. Song_CBDB_Aca_Inheri.rdf . CBDB宋代人物及师承关系关联数据.
[1] |
[本文引用:1]
|
[2] |
URL
[本文引用:1]
|
[3] |
[本文引用:1]
|
[4] |
URL
[本文引用:1]
|
[5] |
URL
[本文引用:1]
|
[6] |
[本文引用:1]
|
[7] |
[本文引用:1]
|
[8] |
[本文引用:1]
|
[9] |
[本文引用:1]
|
[10] |
[本文引用:1]
|
[11] |
[本文引用:1]
|
[12] |
URL
[本文引用:1]
|
[13] |
[本文引用:1]
|
[14] |
[本文引用:1]
|
[15] |
[本文引用:1]
|
[16] |
[本文引用:1]
|
[17] |
[本文引用:1]
|
[18] |
[本文引用:1]
|
[19] |
URL
[本文引用:1]
|
[20] |
[本文引用:1]
|
[21] |
[本文引用:1]
|
[22] |
[本文引用:1]
|
[23] |
[本文引用:1]
|
[24] |
[本文引用:1]
|
[25] |
[本文引用:1]
|
[26] |
[本文引用:1]
|
[27] |
URL
[本文引用:1]
|
[28] |
URL
[本文引用:1]
|
[29] |
[本文引用:1]
|
[30] |
[本文引用:1]
|
[31] |
URL
[本文引用:1]
|