十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

lightKG知识表示学习实战:TransE模型训练、测试与TopK实体预测全流程

lightKG知识表示学习实战:TransE模型训练、测试与TopK实体预测全流程 lightKG知识表示学习实战TransE模型训练、测试与TopK实体预测全流程【免费下载链接】lightKG基于Pytorch和torchtext的知识图谱深度学习框架。项目地址: https://gitcode.com/gh_mirrors/li/lightKGlightKG 是一个基于 PyTorch 与 torchtext 的轻量级知识图谱深度学习框架内置知识表示学习、实体识别、关系抽取、语义角色标注等功能模块。本文以它内置的TransE 模型为主线带你用最短路径走完知识表示学习Knowledge Representation Learning全流程数据准备 → 模型训练 → 模型测试 → TopK 实体预测新手约 10 分钟即可完成第一个知识图谱向量化实验。 1 分钟理解为什么需要知识表示学习知识图谱通常以三元组(头实体, 关系, 尾实体)的形式存储知识例如(科学, 外文名, science)。知识表示学习的核心目标是把实体和关系编码成稠密向量从而能够判断任意三元组的可信程度知识补全、质量评估根据已知部分猜出缺失的实体或关系实体预测为相似性计算、知识推理打下基础其中TransE是最经典的翻译模型核心思想非常直观头实体向量 关系向量 ≈ 尾实体向量即 h r ≈ t如果这个平移关系成立说明该三元组可信偏差越大可信度越低。lightKG 的 TransE 实现会将实体与关系嵌入为 300 维向量并做归一化前向过程见 lightkg/krl/models/transE/model.py。框架支持四类推理任务任务输入输出三元组可信度打分头实体 关系 尾实体0~1 之间的概率尾实体 TopK 预测头实体 关系概率最高的 k 个实体头实体 TopK 预测关系 尾实体概率最高的 k 个实体关系 TopK 预测头实体 尾实体概率最高的 k 个关系 快速安装一条命令开始lightKG 基于 PyTorch 1.0通过 pip 即可安装pip install lightKG # 或使用国内镜像源 pip install -i https://pypi.douban.com/simple/ lightKG由于 pytorch、torchtext 等依赖可能不在 pypi 主源中需按 requirements.txt 所列版本单独安装 PyTorch 与最新版 torchtext。如果希望直接查看源码运行示例也可以克隆仓库git clone https://gitcode.com/gh_mirrors/li/lightKG 数据准备一个三列 CSV 就够了krl知识表示学习模块的训练数据是逗号分隔的三列 CSV依次为头实体、关系、尾实体科学,包涵,自然、社会、思维等领域 科学,外文名,science 科学,拼音,kē xué 物理宇宙学,对象,大尺度结构和宇宙形成项目内置了可直接使用的示例数据训练样例data/krl/train.sample.csv测试样例data/krl/test.sample.csv把自己的三元组整理成同样格式训练时替换路径即可。数据加载与词表构建由 lightkg/krl/tool.py 中的RLTool自动完成——框架会读取 CSV、建立实体/关系词表你无需手写任何数据处理代码。 TransE 模型训练4 行代码跑起来from lightkg.krl import KRL train_path data/krl/train.sample.csv model_type TransE krl KRL() krl.train(train_path, model_typemodel_type, dev_pathdata/krl/test.sample.csv, save_path./krl_TransE_saves)训练入口在 lightkg/krl/module.py 的KRL.train中背后自动完成了这几件事构建词表从训练集及验证集收集全部实体与关系初始化模型为每个实体、关系创建 300 维嵌入向量见 lightkg/krl/models/transE/model.py负采样每个 batch 随机替换头实体或尾实体构造负样本见 lightkg/krl/utils/get_neg_batch.py让模型学会区分真假三元组MarginRankingLoss 优化要求正样本得分比负样本高出一个 margin默认 2.0训练完自动保存权重。默认超参数学习率 0.02、30 轮、batch size 128、嵌入维度 300 等定义在 lightkg/krl/models/transE/config.py。如需调整train()支持通过关键字参数覆盖例如krl.train(train_path, epoch60, lr0.01)。✅ 模型测试加载权重并查看分数训练完成后加载权重并跑测试集只需两行krl.load(save_path./krl_TransE_saves, model_typeTransE) krl.test(data/krl/test.sample.csv)测试会输出test score——测试集上所有三元组可信度得分e⁻ᶠ⁽ʰʳᵗ⁾的平均值越接近 1 说明模型对真实知识越信服。训练时若提供dev_path每轮还会输出 dev score 供观察收敛情况实现见 lightkg/krl/module.py。 TopK 实体预测让知识图谱猜出你不知道的这是知识表示学习最直观的落地能力。以下示例结果来自官方文档 README.md# ① 判断给定三元组是否可信 print(krl.predict(head编译器, rel外文名, tailCompiler)) # 0.998942494392395 # ② 已知头实体和关系预测最可能的 Top3 尾实体 print(krl.predict_tail(head编译器, rel外文名)) # [(Compiler, 0.9989...), (20世纪50年代末, 0.3786...), (译码器, 0.3767...)] # ③ 已知头尾实体预测最可能的 Top3 关系 print(krl.predict_rel(head编译器, tailCompiler)) # [(外文名, 0.9989...), (英译, 0.8240...), (拼音, 0.4082...)] # ④ 已知关系和尾实体预测最可能的 Top3 头实体 print(krl.predict_head(rel外文名, tailCompiler)) # [(编译器, 0.9989...), (译码器, 0.3679...), (计算机单片机编程语言, 0.3678...)]从结果可以看到真实三元组(编译器, 外文名, Compiler)得分高达 0.9989而predict_tail也把正确答案排在首位——这正是 TransE向量平移能力带来的知识补全效果。四个预测方法predict/predict_tail/predict_head/predict_rel的完整实现位于 lightkg/krl/module.py均可通过topk参数调整候选数量默认 3。仓库的 examples/test_krl.py 提供了加载模型 四类预测的完整可运行示例。 项目结构速查核心文件在哪里路径作用lightkg/krl/module.pyKRL入口类train / load / test / 四种 predictlightkg/krl/models/transE/model.pyTransE 模型嵌入层 归一化 评分lightkg/krl/models/transE/config.py默认超参数lightkg/krl/utils/get_neg_batch.py负样本采样lightkg/krl/utils/score_func.pyL1 / L2 评分函数lightkg/base/训练/模型/工具抽象基类其余模块均继承于此data/krl/krl 示例训练/测试数据 实战技巧与常见问题预测返回 None说明传入的实体或关系不在训练集词表中——模型只能识别训练时见过的词。预测前请确认数据已覆盖。训练太慢样例数据很小分钟级即可完成真实语料可适当调低epoch或在有 GPU 的环境训练框架会自动检测 CUDA 设备。模型保存在哪由save_path指定默认./saves不同模型类型建议用不同目录避免覆盖。想继续探索lightKG 同一套base基类架构还封装了 NER、关系抽取TextCNN、语义角色标注BiLSTM-CRF等模块用法与本文高度相似可参考 README.md 中的示例。小结借助 lightKG知识表示学习的门槛被压到了准备一个 CSV 几行 Python的程度——训练、测试、TopK 实体预测三步走通你就拥有了为知识图谱打分、补全和推理的第一件工具。【免费下载链接】lightKG基于Pytorch和torchtext的知识图谱深度学习框架。项目地址: https://gitcode.com/gh_mirrors/li/lightKG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表