DeepKE知识图谱抽取实战指南:30分钟跑通实体识别与关系抽取
【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址: https://gitcode.com/gh_mirrors/de/DeepKE
DeepKE是一个开源的深度学习知识图谱抽取框架,基于PyTorch实现命名实体识别、关系抽取与属性抽取,能帮你把非结构化文本自动变成结构化知识。无论你是刚入门NLP的新手,还是需要快速构建知识库的工程师,这篇教程都将带你从零开始,在30分钟内跑通一个完整的知识抽取项目。
一个真实痛点:非结构化文本中的知识为何总被浪费
先问自己一个问题:公司积累的合同、研究报告、新闻稿件、论文摘要……这些文本数据里的关键信息,你靠什么提取?人工逐条录入?太慢。正则表达式硬匹配?太脆,换个句式就失效。于是大量高价值信息沉没在文档里,迟迟无法进入你的业务系统。
这正是知识图谱抽取要解决的问题:把文本中的人名、地名、机构、事件以及它们之间的关系,自动抽取为结构化三元组,例如(马云, 创办, 阿里巴巴)。有了这些结构化的"知识卡片",检索、问答、推荐、风控等上层应用才有了可靠的数据底座。
DeepKE 正是为此而生的开源工具。它把学术界验证过的优秀模型(BERT、CNN、LSTM、W2NER、KnowPrompt 等)工程化封装,让你不用从零写模型代码,也能用上顶会级的效果。更重要的是,它默认支持中文场景,对国内开发者极其友好。🚀
DeepKE 核心能力速览:它能做哪些知识抽取任务
在动手之前,先用一张表看清 DeepKE 的能力版图。它围绕"从文本到知识"这条主线,覆盖了四大核心任务,并且为每个任务提供了从数据、模型到训练评估的完整闭环:
| 能力模块 | 解决什么问题 | 代表模型 | 典型场景 |
|---|---|---|---|
| 命名实体识别(NER) | 找出人名、地名、机构等实体 | BiLSTM-CRF、BERT、W2NER、LightNER | 新闻信息抽取、病历结构化 |
| 关系抽取(RE) | 判断实体间的语义关系 | CNN、GCN、Transformer、KnowPrompt | 人物关系挖掘、产业链分析 |
| 属性抽取(AE) | 提取实体的属性描述 | PCNN、Capsule、LM | 人物档案补全、商品信息整理 |
| 事件抽取(EE) | 识别事件触发词与论元 | DEGREE、BERT-CRF | 舆情监控、金融事件预警 |
此外,DeepKE 还针对标准全监督、少样本低资源、文档级、多模态四类场景分别提供了解决方案——这意味着无论你的数据是"很充足"还是"只有几百条",都能找到合适的武器。
DeepKE 为三大抽取任务设计了统一框架:Data(数据)、Model(模型)、Core(训练评估预测)三层各司其职,便于扩展与复用。
一句话总结:DeepKE 把"文本→知识"的整条流水线都给你备好了,你要做的只是填数据、调参数。核心源码统一位于src/deepke/目录下,按任务拆分为name_entity_re、relation_extraction、attribution_extraction、event_extraction等模块,结构清晰,方便阅读与二次开发。
DeepKE 环境配置与安装:三分钟搭好运行环境
理解能力之后,先解决"怎么跑起来"的问题。DeepKE 提供两种安装方式,这里推荐源码安装(兼容性最稳)。官方也提供了 Docker 镜像方案(见docker/目录),适合想跳过环境折腾的同学。
# 克隆仓库(国内用户推荐) git clone --depth 1 https://gitcode.com/gh_mirrors/de/DeepKE # 用 conda 创建独立虚拟环境,避免污染系统 Python conda create -n deepke python=3.8 conda activate deepke # 安装依赖并完成本地开发安装 pip install -r requirements.txt python setup.py develop三个小提醒:
- 强烈建议在Linux环境下运行,这是官方推荐配置;
- 如果你的 pip 版本高于 24.0,直接用
pip install deepke可能遇到依赖冲突,此时源码安装更稳妥; - 环境就绪后,各个任务的运行入口都放在
example/目录下,按任务/场景分层组织,找起来非常直观。
命名实体识别与关系抽取实战:三步跑通第一个项目
环境搭好了,下面以常规关系抽取为例,走一遍"数据→训练→预测"的最小闭环。全程约 20 分钟,你就能亲眼看到模型从文本中抽出结构化三元组。
第1步:准备数据,看懂输入格式
关系抽取的示例数据在example/re/standard/data/中,支持json、csv、xlsx三种格式。训练前把文件放入data/origin/目录,需要四份数据:
| 文件 | 作用 |
|---|---|
train.csv | 训练集,包含句子及实体关系标注 |
valid.csv | 验证集,用于训练中评估 |
test.csv | 测试集,用于最终效果检验 |
relation.csv | 全部关系类型清单 |
如果不方便下载官方数据,也可以参考data/下的example.*文件格式自行构造。非 CSV 格式的数据可用src/deepke/transform_data.py中的json2csv函数统一转换。数据标注工作则推荐配合开源的doccano工具完成——DeepKE 提供了完整的标注说明文档,从创建项目、定义标签到逐条标注都有配图指引:
用 doccano 逐句标注实体与关系,标注结果可直接转换为 DeepKE 的训练格式。
第2步:一键训练,参数都给你留好了
进入任务目录并启动训练:
cd DeepKE/example/re/standard # 训练(参数都在 conf 目录下,默认配置即可跑通) python run.py- 训练日志保存在
logs/,模型权重保存在checkpoints/; - 想换模型?
conf/model/下已备好cnn、rnn、gcn、transformer、lm、capsule等 6 种配置,改一行配置文件即可切换; - 支持多卡训练,在
train.yaml中设置use_multi_gpu=True并指定gpu_ids即可。
第3步:预测,验证抽取效果
训练完成后,修改conf/predict.yaml中的模型路径为checkpoints里的.pth文件(记得用绝对路径),然后执行:
python predict.py模型会输出句子中实体对及其关系类别,你就能直观看到"知识被抽取出来"的全过程。整个终端操作流程可以参考下面这段演示动图:
到此,你已经完成了第一个 DeepKE 知识抽取项目。核心心法只有一句:改配置文件,而不是改源码。数据、模型、训练超参数全部通过 yaml 配置暴露,让实验迭代变得非常轻量。🎯
进阶玩法:少样本、多模态与大模型驱动的知识抽取
跑通基础流程只是开始。如果你的数据或场景更复杂,DeepKE 还准备了多套进阶武器:
进阶一:少样本场景,数据不足也能训练
实际业务中,标注数据往往稀缺。DeepKE 的 few-shot 方案(example/re/few-shot/、example/ner/few-shot/)针对低资源场景设计,其中KnowPrompt通过将知识注入提示词,在仅有几十条样本时也能保持不错的抽取效果,还内置了中英文数据增强工具(DA/),帮你低成本扩充训练集。
进阶二:文档级与多模态抽取
- 文档级关系抽取(
example/re/document/):适用于多实体、跨句子建模的复杂文档,代表模型 DocuNet; - 多模态抽取(
example/ner/multimodal/、example/re/multimodal/):同时利用文本与图片信息,对图文并茂的社交媒体、电商页面等场景效果显著; - 实体识别进阶:W2NER 采用多粒度膨胀卷积,是当前中文 NER 的强基线,代码位于
example/ner/standard/w2ner/。
进阶三:大模型时代,用 LLM 做抽取
DeepKE 团队还发布了DeepKE-LLM(example/llm/),支持 ChatGLM、LLaMA、Qwen、GPT 等主流大模型,覆盖 In-context Learning、指令微调等玩法;以及基于 Chinese-Alpaca-2-13B 微调的OneKE大模型知识抽取框架,中英双语开箱即用。如果你的算力充足、追求极限效果,这条路值得探索。
进阶四:开箱即用的中文特别版
不想训练?直接下载DeepKE-cnSchema特别版预训练模型(见README_CNSCHEMA_CN.md),它基于 cnSchema 体系训练,支持50 种关系类型和 28 种实体类型,覆盖人物、地点、机构、出生地、国籍、朝代等常见类别,加载即用,特别适合快速验证业务想法。
避坑指南:知识抽取训练中常见的五个坑与解决办法
结合社区反馈,这五个问题出现频率最高,提前了解能帮你省下大把时间:
- 依赖版本冲突⚠️ 最常见!DeepKE 对
torch、transformers、hydra-core等版本有严格要求,版本漂移会导致各种诡异报错。对策:严格按requirements.txt锁定版本,并坚持用 conda 虚拟环境隔离。 - 模型下载超时/失败预训练权重默认从 HuggingFace 拉取,国内网络常不稳定。对策:使用
hf-mirror.com镜像下载到本地,再修改conf/hydra/model/*.yaml中的模型路径指向本地文件。 - Windows 路径报错部分场景下 Windows 反斜杠路径会导致配置解析失败。对策:路径中统一使用
\\,或直接换用 Linux 环境。 - wandb 初始化卡住训练脚本集成了 wandb 可视化,无账号时可能阻塞启动。对策:按提示登录或设置离线模式,不影响训练本身。
- 预测时模型加载失败常因
predict.yaml中的权重路径写成了相对路径。对策:务必使用.pth文件的绝对路径。
遇到问题先查README_CN.md的常见问题章节,再不行就提 Issue——这个项目的社区响应非常积极,不用自己硬扛。💪
总结与延伸学习:从入门到部署的完整路线
30 分钟,你已经走完了"安装 → 数据准备 → 训练 → 预测"的完整链路,掌握了 DeepKE 这个开源知识图谱抽取工具的核心用法。回顾一下这趟旅程:
- 选工具:DeepKE 统一封装了 NER、RE、AE、EE 四大任务,中文友好、模型丰富;
- 跑起来:源码安装 + 配置文件驱动,三步完成最小实战;
- 玩进阶:少样本、多模态、文档级、大模型、开箱即用模型,总有一款匹配你的场景。
接下来,你可以按这条路线继续深入:
| 学习目标 | 对应资源 |
|---|---|
| 查看完整文档与 API 参考 | docs/source/ |
| 系统学习各任务示例 | example/(含 ner、re、ae、ee、llm 等) |
| 阅读源码与二次开发 | src/deepke/ |
| 下载预训练模型 | pretrained/ |
| 大模型抽取方案 | example/llm/(含 OneKE、InstructKGC) |
知识图谱的构建,如今不再是算法专家才能触碰的领域。从今天开始,用 DeepKE 把你的第一份文本数据变成结构化知识吧——先跑通一个最小项目,再逐步叠加进阶能力,你会发现,知识抽取这件事,比想象中简单得多。🚀
【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址: https://gitcode.com/gh_mirrors/de/DeepKE
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考