AI原生应用开发:知识图谱与机器学习的融合
关键词:知识图谱、机器学习、AI原生应用、知识推理、语义理解
摘要:在AI技术高速发展的今天,“AI原生应用”(AI-Native Application)正成为下一代软件的核心形态——它们从设计之初就深度依赖AI能力,而非传统功能叠加。本文将聚焦知识图谱与机器学习的融合,这对"智能大脑"的核心组件如何共同构建更强大的AI原生应用。我们将用生活故事拆解技术概念,用代码示例展示融合方法,最终帮你理解:为什么说知识图谱是AI的"知识库",机器学习是"学习引擎",两者的融合能让AI真正"懂知识、会思考"。
背景介绍
目的和范围
你是否遇到过这样的情况?智能助手能回答"北京的天气",却无法理解"北京的秋天适合穿什么";推荐系统能推你买过的书,却不知道你刚读完《三体》可能对"刘慈欣的其他科幻作品"感兴趣。这些问题的根源在于:传统AI要么依赖无结构数据(如文本)的机器学习,要么依赖结构化知识库(如数据库),但缺乏对"知识"的深度理解与动态学习能力。
本文将聚焦"知识图谱+机器学习"的融合方案,覆盖以下范围:
- 知识图谱与机器学习的核心概念(用故事讲明白)
- 两者融合的技术原理与数学模型
- 实际开发中的代码示例(用Python实现)
- 典型应用场景(如智能问答、个性化推荐)
预期读者
- 想入门AI原生应用开发的程序员/产品经理
- 对知识图谱和机器学习关系感兴趣的技术爱好者
- 希望优化现有AI系统(如推荐、客服)的技术负责人
文档结构概述
本文将按照"故事引入→概念拆解→原理融合→实战演练→应用展望"的逻辑展开。先通过一个"智能导游"的故事引出问题,再用生活比喻解释知识图谱(知识地图)、机器学习(学习小能手)的核心概念,接着讲它们如何像"大脑的记忆与学习功能"一样配合,最后用代码带大家实现一个简单的融合系统。
术语表
- 知识图谱(Knowledge Graph):用"实体-关系-实体"的三元组(如"北京-属于-中国")组织知识的网络,类似一张"知识地图"。
- 机器学习(Machine Learning):让计算机从数据中"学习规律"的技术,比如通过用户点击数据学习"用户偏好"。
- AI原生应用:从设计之初就以AI能力为核心的应用(如ChatGPT、智能驾驶系统),区别于传统软件"功能优先,AI辅助"。
- 知识嵌入(Knowledge Embedding):将知识图谱中的实体/关系转化为向量(数字表示),方便机器学习模型处理。
- 联合训练(Joint Training):同时用知识图谱数据和业务数据训练模型,让模型同时"记住知识"和"学习规律"。
核心概念与联系:用"智能导游"的故事讲明白
故事引入:小王的"不智能"导游APP
小王是一名来北京旅游的大学生,他下载了某"智能导游"APP,希望它能推荐"适合秋天、年轻人喜欢、离地铁近的景点"。但APP的推荐让他哭笑不得:
- 推荐了"故宫"(经典景点),但没提"故宫的秋天银杏很美";
- 推荐了"798艺术区"(年轻人喜欢),但没说"最近有科幻主题展览";
- 当小王问"从798到故宫怎么走",APP只给了路线,没提"途经南锣鼓巷可以顺便逛"。
问题出在哪儿?原来,这款APP的推荐逻辑是:
- 用机器学习模型分析用户历史点击数据(比如年轻人喜欢798);
- 用数据库查询景点基础信息(比如地址、开放时间)。
但它缺少一张"能关联所有知识的网"——比如"秋天→银杏→故宫"的关联,“798→科幻展览→刘慈欣"的关联,这些需要知识图谱来组织;同时,它也缺少"动态学习用户新需求"的能力——比如小王今天的提问隐含"喜欢文化+便捷”,需要机器学习来捕捉。
核心概念解释(像给小学生讲故事)
核心概念一:知识图谱——知识的"立体地图"
想象你有一本超级大的字典,但字典里的每个词(实体)都不是孤立的:“北京"不仅有"中国的首都"的定义,还关联着"秋天→银杏”、“景点→故宫”、“交通→地铁1号线"等关系。知识图谱就是这样一张"立体的知识地图”,用"实体-关系-实体"的三元组(如(北京, 秋天特色, 银杏)
)把所有知识连起来。
生活类比:就像你小学的"知识树"黑板报——中心是"北京",分支是"景点"、“季节”、“交通”,每个分支上又挂着具体的知识点(如"景点"分支下挂着"故宫",“季节"分支下挂着"秋天银杏”)。知识图谱就是把这些树状结构变成更复杂的网状结构,让知识能"关联查询"。
核心概念二:机器学习——会"找规律"的小能手
假设你有一叠卡片,每张卡片写着"用户A点击了景点X"、“用户B没点击景点Y”,机器学习就像一个"找规律的小能手",它能从这些卡片中总结出:“年轻人(用户A/B的年龄)+ 秋天(时间)→ 喜欢艺术区(X是798)”。当新用户出现时,它能根据这个规律推荐类似景点。
生活类比:就像你学骑自行车——一开始会摔倒(数据中的错误),但慢慢发现"车把往左偏时,身体要稍微右倾"(规律),下次骑车就能更稳(预测更准)。机器学习就是让计算机通过数据"学规律",然后用规律解决新问题。
核心概念三:AI原生应用——会"思考"的智能助手
传统APP像"工具包":你需要查天气,它调用天气接口;你需要路线,它调用地图接口。AI原生应用则像"会思考的助手":它能理解你说"秋天去北京",主动联想到"银杏、秋装",结合你的历史偏好(机器学习学的规律)和知识图谱里的关联知识(比如"故宫的银杏在慈宁宫"),给出"上午逛故宫看银杏,下午去798看科幻展"的完整方案。
生活类比:就像你家的"智能小管家"——它知道你喜欢喝奶茶(机器学习学的偏好),知道今天下雨(实时数据),还知道"楼下奶茶店第二杯半价"(知识图谱里的信息),所以会提醒你:“今天下雨,要不要点楼下奶茶?第二杯半价哦~”
核心概念之间的关系:知识图谱是"知识库",机器学习是"学习引擎"
知识图谱为机器学习提供"先验知识"
传统机器学习像"零基础学生",只能从给的"练习题"(数据)里学规律。但如果有知识图谱,就像给学生一本"知识手册"——比如训练推荐模型时,模型不仅知道"用户点击了798",还知道"798属于艺术区"、“艺术区通常受年轻人喜欢”(知识图谱的关系),这样模型学规律会更快、更准。
生活类比:你学数学时,如果知道"三角形内角和是180度"(先验知识),再做"求等腰三角形顶角"的题(数据),会比完全不知道这个知识学得更快。
机器学习为知识图谱注入"动态学习能力"
知识图谱的知识是"静态的"(比如"故宫建于1406年"),但现实中知识会变化(比如"2023年故宫新增了数字展厅")。机器学习可以从新数据(比如用户评论"故宫的数字展厅很好玩")中提取新关系((故宫, 新增设施, 数字展厅)
),自动更新知识图谱,让知识保持新鲜。
生活类比:你家的百科全书每年更新(静态知识),但如果有个"小助手"每天看新闻,发现"今年熊猫基地有新熊猫宝宝",就自动把这条信息加到百科全书里(动态更新),这样百科全书就永远是最新的。
两者共同支撑AI原生应用的"智能性"
AI原生应用要解决的问题(比如"推荐秋天北京的景点")需要同时"调用知识"(知识图谱的关联)和"学习规律"(机器学习的预测)。就像做蛋糕:知识图谱是"食材库"(鸡蛋、面粉、糖的存放位置和用途),机器学习是"烘焙技巧"(温度、时间的控制规律),两者结合才能做出好吃的蛋糕(智能的应用功能)。
核心概念原理和架构的文本示意图
融合后的系统架构可以概括为:
数据层(用户行为、文本、结构化数据)→
知识图谱构建(抽取实体关系,形成三元组网络)→
机器学习建模(将知识图谱的向量与业务数据结合,训练融合模型)→
应用层(智能推荐、问答、决策)
Mermaid 流程图
graph TD
A[原始数据] --> B[知识抽取]
B --> C[知识图谱构建]
C --> D[知识嵌入(转成向量)]
E[业务数据(如用户点击)] --> F[特征提取(转成向量)]
D --> G[融合模型训练]
F --> G
G --> H[AI原生应用(推荐/问答)]
核心算法原理 & 具体操作步骤:如何让知识图谱与机器学习"对话"?
要让知识图谱和机器学习融合,关键是让两者"语言相通"——知识图谱的实体/关系需要转化为机器学习能处理的向量(数字表示),这个过程叫"知识嵌入"(Knowledge Embedding)。下面以经典的TransE算法为例,讲解知识嵌入的原理,并用Python代码展示如何将知识图谱与机器学习模型结合。
知识嵌入算法:TransE(翻译嵌入)
TransE的核心思想很简单:把知识图谱中的实体和关系看作向量,让"头实体向量 + 关系向量 ≈ 尾实体向量"。比如,对于三元组(北京, 属于, 中国)
,如果"北京"的向量是v_北京
,"属于"的向量是v_属于
,那么理想情况下应该满足:
v
北
京
+
v
属
于
≈
v
中
国
v_北京 + v_属于 ≈ v_中国
v北京+v属于≈v中国
数学模型:
损失函数(衡量预测误差)定义为:
L
=
∑
(
h
,
r
,
t
)
∈
S
∑
(
h
′
,
r
,
t
′
)
∈
S
′
[
m
a
r
g
i
n
+
f
(
h
,
r
,
t
)
−
f
(
h
′
,
r
,
t
′
)
]
+
L = \sum_{(h,r,t)∈S} \sum_{(h',r,t')∈S'} [margin + f(h,r,t) - f(h',r,t')]_+
L=(h,r,t)∈S∑(h′,r,t′)∈S′∑[margin+f(h,r,t)−f(h′,r,t′)]+
其中:
- ( S ) 是真实三元组集合;
- ( S’ ) 是"破坏三元组"(比如把
(北京, 属于, 中国)
改成(北京, 属于, 日本)
); - ( f(h,r,t) = ||v_h + v_r - v_t||_2 )(头+关系与尾的距离);
margin
是一个超参数(比如设置为1),确保真实三元组的距离比破坏三元组更小。
机器学习模型:以BERT为例的文本理解
假设我们要做一个"景点推荐"模型,需要同时理解用户的文本查询(如"秋天适合年轻人去的北京景点")和知识图谱中的景点关联(如"故宫-秋天-银杏")。我们可以用BERT处理文本,同时用TransE处理知识图谱,最后将两者的向量拼接后输入全连接层预测推荐分数。
Python代码示例:融合知识图谱与BERT的推荐模型
import torch
import torch.nn as nn
from transformers import BertModel
# 1. 定义知识嵌入层(用TransE预训练的向量)
class KnowledgeEmbedding(nn.Module):
def __init__(self, entity_num, relation_num, embedding_dim):
super().__init__()
self.entity_emb = nn.Embedding(entity_num, embedding_dim) # 实体向量
self.relation_emb = nn.Embedding(relation_num, embedding_dim) # 关系向量
def forward(self, head, relation):
head_vec = self.entity_emb(head)
relation_vec = self.relation_emb(relation)
return head_vec + relation_vec # 头+关系向量(对应尾的预测向量)
# 2. 定义BERT文本处理层
class TextProcessor(nn.Module):
def __init__(self):
super().__init__()
self.bert = BertModel.from_pretrained('bert-base-uncased')
def forward(self, input_ids, attention_mask):
outputs = self.bert(input_ids, attention_mask=attention_mask)
return outputs.pooler_output # 提取文本的全局向量
# 3. 融合模型:知识向量 + 文本向量 → 推荐分数
class FusionModel(nn.Module):
def __init__(self, entity_num, relation_num, embedding_dim=128):
super().__init__()
self.knowledge_emb = KnowledgeEmbedding(entity_num, relation_num, embedding_dim)
self.text_processor = TextProcessor()
self.classifier = nn.Sequential(
nn.Linear(embedding_dim + 768, 256), # 知识向量(128)+ BERT向量(768)
nn.ReLU(),
nn.Linear(256, 1) # 输出推荐分数(越高越推荐)
)
def forward(self, head, relation, input_ids, attention_mask):
knowledge_vec = self.knowledge_emb(head, relation) # 知识向量(128维)
text_vec = self.text_processor(input_ids, attention_mask) # 文本向量(768维)
combined = torch.cat([knowledge_vec, text_vec], dim=1) # 拼接向量(906维)
score = self.classifier(combined) # 推荐分数
return score
# 示例使用
entity_num = 1000 # 假设知识图谱有1000个实体
relation_num = 50 # 50种关系
model = FusionModel(entity_num, relation_num)
# 输入示例:查询"秋天适合年轻人去的北京景点"
input_ids = torch.tensor([[101, 2365, 679, ...]]) # BERT的输入ID(经过分词)
attention_mask = torch.tensor([[1, 1, 1, ...]]) # 注意力掩码
head = torch.tensor([0]) # 实体"北京"的ID(假设是0)
relation = torch.tensor([5]) # 关系"秋天特色"的ID(假设是5)
score = model(head, relation, input_ids, attention_mask)
print(f"推荐分数:{score.item()}") # 分数越高,推荐优先级越高
代码解读:
KnowledgeEmbedding
层:用预训练的TransE模型将实体和关系转为向量,模拟"头+关系≈尾"的逻辑。TextProcessor
层:用BERT提取用户查询的文本向量,理解"秋天"“年轻人”"北京"等关键词。FusionModel
层:将知识向量和文本向量拼接,通过全连接层输出推荐分数,同时利用知识图谱的先验知识(如"北京-秋天特色-银杏")和文本的语义理解(用户需求)。
数学模型和公式:为什么融合后效果更好?
假设传统机器学习模型的预测函数是 ( f(x) = w^T x )(线性模型),其中 ( x ) 是用户行为特征(如点击次数)。而融合知识图谱后,模型可以利用知识向量 ( k )(如"北京-秋天特色"的向量),预测函数变为:
f
(
x
,
k
)
=
w
T
x
+
u
T
k
+
b
f(x, k) = w^T x + u^T k + b
f(x,k)=wTx+uTk+b
其中 ( u ) 是知识向量的权重,( b ) 是偏置。
优势:
- 当用户行为数据较少时(比如新用户),知识向量 ( k ) 可以提供先验知识(如"年轻人喜欢艺术区"),避免模型乱推荐;
- 当用户行为数据充足时,模型可以同时学习 ( w )(行为规律)和 ( u )(知识重要性),让推荐更精准。
项目实战:开发一个"智能景点推荐"系统
开发环境搭建
- 硬件:普通笔记本(CPU即可,如需GPU加速可选NVIDIA显卡)。
- 软件:
- Python 3.8+
- PyTorch 1.9+(机器学习框架)
- Neo4j(知识图谱存储,可本地安装)
- transformers库(BERT模型)
- openke(知识嵌入工具,可选,用于预训练TransE)
源代码详细实现和代码解读
我们将分三步实现:
- 构建景点知识图谱;
- 预训练知识嵌入(TransE);
- 训练融合模型(BERT+知识嵌入)。
步骤1:构建知识图谱(用Neo4j)
在Neo4j中创建以下实体和关系:
- 实体类型:
景点
(如故宫、798)、季节
(春天、秋天)、人群
(年轻人、家庭)。 - 关系类型:
适合季节
(如故宫-适合季节-秋天
)、适合人群
(如798-适合人群-年轻人
)、附近景点
(如798-附近景点-南锣鼓巷
)。
示例Cypher语句(Neo4j的查询语言):
CREATE (p:景点 {name: '故宫'})
CREATE (s:季节 {name: '秋天'})
CREATE (p)-[:适合季节]->(s)
步骤2:预训练知识嵌入(TransE)
使用openke
库加载知识图谱数据,训练TransE模型,得到实体和关系的向量。
from openke.config import Trainer, Tester
from openke.module.model import TransE
from openke.module.loss import MarginLoss
from openke.module.strategy import NegativeSampling
from openke.data import TrainDataLoader, TestDataLoader
# 加载训练数据(知识图谱的三元组)
train_dataloader = TrainDataLoader(
in_path="./data/", # 数据路径(包含train2id.txt等文件)
nbatches=100,
threads=8,
sampling_mode="normal",
bern_flag=1,
filter_flag=1,
neg_ent=25,
neg_rel=0
)
# 定义模型
transe = TransE(
ent_tot=train_dataloader.get_ent_tot(), # 实体总数
rel_tot=train_dataloader.get_rel_tot(), # 关系总数
dim=128, # 向量维度
p_norm=1, # L1距离
norm_flag=True # 归一化向量
)
# 定义损失函数和训练策略
model = NegativeSampling(
model=transe,
loss=MarginLoss(margin=5.0),
batch_size=train_dataloader.get_batch_size()
)
# 训练模型
trainer = Trainer(model=model, data_loader=train_dataloader, train_times=1000, alpha=1.0, use_gpu=True)
trainer.run()
transe.save_checkpoint('./transe.ckpt') # 保存预训练模型
步骤3:训练融合模型(BERT+知识嵌入)
加载预训练的TransE和BERT模型,用用户点击数据训练融合模型。
import pandas as pd
from torch.utils.data import DataLoader, Dataset
# 假设我们有用户点击数据(csv文件):user_id, query_text, clicked_attraction_id
data = pd.read_csv('user_clicks.csv')
# 自定义数据集类
class RecommendDataset(Dataset):
def __init__(self, data, tokenizer, entity2id, relation2id):
self.data = data
self.tokenizer = tokenizer
self.entity2id = entity2id # 实体名到ID的映射(如"故宫"→0)
self.relation2id = relation2id # 关系名到ID的映射(如"适合季节"→5)
def __getitem__(self, idx):
row = self.data.iloc[idx]
query = row['query_text'] # 如"秋天适合年轻人去的北京景点"
clicked_attraction = row['clicked_attraction_id'] # 如0(故宫的ID)
# 处理文本:用BERT分词
inputs = self.tokenizer(query, return_tensors='pt', padding='max_length', max_length=64)
input_ids = inputs['input_ids'].squeeze()
attention_mask = inputs['attention_mask'].squeeze()
# 处理知识图谱:假设查询关联的关系是"适合季节"和"适合人群"
head = torch.tensor([self.entity2id['北京']]) # 头实体是"北京"
relation = torch.tensor([self.relation2id['适合季节']]) # 关系是"适合季节"
return input_ids, attention_mask, head, relation, torch.tensor([1.0]) # 点击标记为1(正样本)
# 初始化模型和训练参数
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
entity2id = {'北京': 0, '故宫': 1, '798': 2, ...} # 实体ID映射
relation2id = {'适合季节': 5, '适合人群': 6, ...} # 关系ID映射
dataset = RecommendDataset(data, tokenizer, entity2id, relation2id)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
model = FusionModel(entity_num=len(entity2id), relation_num=len(relation2id))
optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)
criterion = nn.BCEWithLogitsLoss() # 二分类损失(点击/未点击)
# 训练循环
for epoch in range(10):
model.train()
total_loss = 0
for batch in dataloader:
input_ids, attention_mask, head, relation, labels = batch
scores = model(head, relation, input_ids, attention_mask)
loss = criterion(scores, labels)
loss.backward()
optimizer.step()
optimizer.zero_grad()
total_loss += loss.item()
print(f"Epoch {epoch}, Loss: {total_loss/len(dataloader)}")
代码解读:
- 知识图谱构建:用Neo4j存储景点的关联知识,方便后续查询和嵌入。
- TransE预训练:将知识图谱的实体和关系转为向量,让机器学习模型能处理。
- 融合模型训练:将用户查询的文本向量(BERT处理)和知识向量(TransE处理)结合,预测用户是否会点击某个景点,从而实现更智能的推荐。
实际应用场景
1. 智能客服:从"答问题"到"懂需求"
传统客服系统用机器学习识别用户问题类型(如"退货"),但无法理解"我买的裙子洗后缩水了"中的隐含知识(“缩水→可能质量问题”)。融合知识图谱后,系统可以关联"裙子-材质-棉"(知识图谱)和"棉材质-易缩水"(知识),自动判断"质量问题"并优先处理。
2. 医疗诊断:从"概率推荐"到"循证诊断"
机器学习可以预测"发热+咳嗽→可能感冒",但知识图谱能补充"感冒→常见病原体→推荐抗生素类型"的知识。融合后,系统不仅能给出诊断概率,还能提供"基于《内科学》第9版的用药建议",提升可解释性。
3. 金融风控:从"历史数据"到"关联风险"
传统风控模型用机器学习分析用户还款记录,但知识图谱可以关联"用户A-朋友-用户B"(社交关系)、“用户B-近期逾期”(风险事件),从而提前预警"用户A可能受影响逾期",避免仅依赖历史数据的滞后性。
工具和资源推荐
知识图谱工具
- Neo4j:最流行的图数据库,支持可视化查询和知识存储(官网)。
- GraphDB:支持RDF/OWL的知识图谱数据库,适合需要逻辑推理的场景(官网)。
- OpenKE:知识嵌入工具库,支持TransE、TransH等经典算法(GitHub)。
机器学习框架
融合工具包
未来发展趋势与挑战
趋势1:多模态融合
未来的AI原生应用将不仅处理文本,还会融合图像、视频、语音等多模态数据。例如,知识图谱可以关联"故宫-图片-银杏落叶",机器学习模型可以同时分析用户的文本查询(“秋天故宫”)和上传的照片(银杏叶),给出更精准的推荐。
趋势2:实时知识更新
知识图谱需要从实时数据(如新闻、用户评论)中自动更新。例如,某景点突然举办"科幻展",系统需要实时提取(798, 近期活动, 科幻展)
的三元组,并更新机器学习模型的推荐逻辑。
挑战1:知识的质量与一致性
知识图谱的构建依赖数据抽取(如从文本中提取实体关系),但抽取可能出错(比如误将"北京的秋天"中的"秋天"作为实体)。如何保证知识的准确性是关键挑战。
挑战2:计算资源与效率
融合模型(如BERT+TransE)的计算复杂度较高,在移动端或边缘设备上部署时需要轻量化。例如,通过模型压缩(剪枝、量化)降低计算量,同时保持性能。
总结:学到了什么?
核心概念回顾
- 知识图谱:用"实体-关系-实体"的三元组组织知识的网络,是AI的"知识库"。
- 机器学习:从数据中学习规律的技术,是AI的"学习引擎"。
- AI原生应用:从设计之初就依赖AI能力的应用,需要知识图谱和机器学习的融合支撑其智能性。
概念关系回顾
- 知识图谱为机器学习提供"先验知识",解决"数据少、规律难学"的问题;
- 机器学习为知识图谱注入"动态学习能力",解决"知识更新慢"的问题;
- 两者的融合让AI原生应用能"懂知识、会思考",真正理解用户需求。
思考题:动动小脑筋
-
假设你要开发一个"智能读书助手",用户输入"我喜欢《三体》,推荐类似的书",你会如何用知识图谱和机器学习的融合解决这个问题?(提示:知识图谱可以关联"《三体》-作者-刘慈欣"、“刘慈欣-其他作品-《球状闪电》”;机器学习可以学习"喜欢《三体》的用户也喜欢硬科幻"的规律。)
-
知识图谱的"关系"可能非常复杂(如"因果关系"“时间顺序”),你认为在融合模型中,如何让机器学习更好地利用这些复杂关系?(提示:可以考虑设计更复杂的嵌入模型,或引入图神经网络处理关系路径。)
附录:常见问题与解答
Q:知识图谱和传统数据库(如MySQL)有什么区别?
A:传统数据库用表结构存储数据(如"景点表"有名称、地址字段),但无法直接表示"故宫-适合季节-秋天"这样的关联。知识图谱用"图结构"存储,每个实体(如故宫)可以连接到多个其他实体(季节、交通方式等),更适合需要"关联查询"的场景。
Q:机器学习需要多少知识图谱数据才能有效?
A:这取决于任务复杂度。简单任务(如推荐)可能需要几千个三元组,复杂任务(如医疗诊断)可能需要百万级三元组。关键是知识的相关性——比如推荐景点时,"景点-季节-人群"的关系比"景点-建造时间"更相关。
Q:融合模型训练时,知识图谱数据和业务数据的比例应该怎么调?
A:通常建议先预训练知识嵌入(用知识图谱数据),再用业务数据微调融合模型。如果业务数据少,可以增大知识向量的权重;如果业务数据多,可以让模型更多学习数据中的规律。
扩展阅读 & 参考资料
- 书籍:《知识图谱:方法、实践与应用》(王昊奋等著)——系统讲解知识图谱的构建与应用。
- 论文:《Knowledge Graph Embedding by Translating on Hyperplanes》(TransH算法)——深入理解知识嵌入的技术细节。
- 博客:Hugging Face官方文档(https://huggingface.co/docs)——学习BERT等预训练模型的使用。
- 项目:DGL官方示例(https://docs.dgl.ai/en/1.1.x/)——图神经网络与知识图谱融合的实战案例。