3. 金融知识图谱基础:实体、关系、属性的概念;典型金融图谱结构(公司、人物、事件)
在构建金融知识图谱并进行样本偏差校验之前,必须首先理解知识图谱的核心构成要素。金融知识图谱本质上是一种语义网络,它通过实体(Entity)、关系(Relation)和属性(Attribute)三个基本元素,将金融领域中的离散数据转化为结构化的知识体系。本章将系统阐述这三个核心概念,并解析典型的金融图谱结构。
3.1 核心概念定义
知识图谱的三要素构成了其底层数据模型的基础。理解它们的定义与区别,是后续进行数据质量评估和偏差校验的前提。
| 概念 | 定义 | 金融领域示例 | 数据质量关注点 |
|---|---|---|---|
| 实体 | 客观存在且可相互区分的对象,是图谱中的节点。 | “贵州茅台酒股份有限公司”、“张三”、“2024年三季报” | 实体唯一性、别名合并、缺失检测 |
| 关系 | 实体之间的语义连接,是图谱中的边。 | “持股”、“担任”、“隶属于”、“发生” | 关系方向性、冗余关系、关系类型错误 |
| 属性 | 描述实体或关系的特征信息,通常以键值对形式存在。 | 实体属性:“注册资本”、“成立日期”;关系属性:“持股比例”、“任职起始日” | 属性值缺失、格式不一致、异常值 |
3.2 实体、关系、属性的详细解析
3.2.1 实体(Entity)
实体是知识图谱中的基本单元。在金融领域,实体通常具有明确的业务含义和唯一标识符(ID)。常见的金融实体类型包括:
- 公司实体: 上市公司、非上市公司、子公司、母公司等。
- 人物实体: 高管、股东、实际控制人、分析师、监管人员等。
- 金融产品实体: 股票、债券、基金、期货、保险产品等。
- 事件实体: 并购、增发、股权质押、违约、分红等。
- 宏观实体: 行业、地区、指数、监管政策等。
3.2.2 关系(Relation)
关系定义了实体之间的语义连接,通常表示为(头实体,关系,尾实体)的三元组形式。关系可以是有向的,也可以是无向的。金融图谱中的典型关系包括:
- 股权关系: “A公司 持股 B公司”、“张三 持有 A公司股票”。
- 任职关系: “张三 担任 A公司 董事长”。
- 交易关系: “A公司 收购 B公司”、“A公司 向 C银行 贷款”。
- 隶属关系: “A公司 属于 白酒行业”、“张三 是 高净值客户”。
- 事件关联: “A公司 发生 股权质押事件”、“张三 涉及 内幕交易案”。
3.2.3 属性(Attribute)
属性为实体和关系提供更细致的描述。属性值通常是具体的数值、日期、字符串或枚举值。属性质量直接影响图谱的分析能力。
- 实体属性示例:
- 公司:{“注册资本”: “100亿”, “上市日期”: “2001-08-27”, “员工人数”: 20000}
- 人物:{“出生年份”: 1965, “学历”: “硕士”, “国籍”: “中国”}
- 关系属性示例:
- 持股关系:{“持股比例”: 0.25, “持股起始日”: “2020-01-01”, “股份性质”: “流通A股”}
- 任职关系:{“任职起始日”: “2018-06-15”, “任职终止日”: “2024-06-14”, “职务类型”: “独立董事”}
3.3 典型金融图谱结构
基于上述三要素,金融知识图谱通常围绕核心实体构建复杂的网络结构。以下展示两种最典型的图谱结构:公司-人物-事件关联网络和供应链上下游网络。
3.3.1 公司-人物-事件关联网络
这是金融风控和投研中最常用的图谱结构。它通过人物(高管、股东)将公司与各类事件连接起来,形成“人-企-事”的三角关系。
3.3.2 供应链上下游网络
在产业链分析中,公司之间的供应、销售、竞争关系构成了另一类重要图谱。这种结构有助于识别系统性风险和行业集中度偏差。
3.4 图谱结构在样本偏差校验中的意义
理解上述图谱结构对于样本偏差校验至关重要。不同的图谱结构会导致不同的偏差类型:
- 度分布偏差: 在“公司-人物”网络中,少数核心人物(如实际控制人)可能拥有极高的连接度(Degree),导致图采样时过度代表这些中心节点,而忽略边缘节点。
- 关系类型不平衡: 如果图谱中“持股”关系占比超过90%,而“担保”、“关联交易”等关系极少,则基于关系的样本可能无法反映真实的风险分布。
- 属性缺失偏差: 在事件实体中,如果“违约事件”的属性(如违约金额、违约日期)大量缺失,则基于该事件构建的训练样本将存在系统性偏差。
3.5 三元组数据模型示例
在实际存储中,知识图谱通常以三元组(Triple)的形式组织。以下是一个简单的Python数据模型示例,用于表示金融图谱中的三元组:
# 金融知识图谱三元组数据模型示例
from dataclasses import dataclass
from typing import Optional, Dict, Any
@dataclass
class Triple:
head_id: str # 头实体ID
relation: str # 关系类型
tail_id: str # 尾实体ID
attributes: Optional[Dict[str, Any]] = None # 关系属性
# 示例:构建一个持股关系三元组
triple = Triple(
head_id="company_600519",
relation="持股",
tail_id="person_zhangsan",
attributes={
"持股比例": 0.05,
"持股起始日": "2022-03-15",
"股份性质": "流通A股"
}
)
print(f"三元组: ({triple.head_id}, {triple.relation}, {triple.tail_id})")
print(f"关系属性: {triple.attributes}")
该数据模型清晰地展示了实体(通过ID引用)、关系(字符串类型)和属性(字典)的分离。在样本偏差校验中,我们可以基于此模型统计不同关系类型的样本量、属性缺失率等关键指标。