把一摞新闻变成知识图谱:零基础用DeepKE开源框架跑通全流程
把一摞新闻变成知识图谱:零基础用DeepKE开源框架跑通全流程
【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址: https://gitcode.com/gh_mirrors/de/DeepKE
假设你手上有几百篇行业新闻,想抽出里面的人名、机构名和事件关系,拼成一张属于自己的知识图谱。纯靠人工阅读加表格整理,一周都未必干得完;自己写正则规则,又会不断被各种反常识的句式打败。DeepKE正是为这个场景而生的开源知识抽取框架——它基于深度学习,把命名实体识别、关系抽取、属性抽取甚至事件抽取收进同一套体系,训练、预测一条龙,直接服务于知识图谱构建。
这篇文章是我自己从零跑通的实战手记,不堆概念,只讲步骤和踩过的坑。读完你也能搭出第一张图谱。🚀
出发前,先看清这套框架的全貌
DeepKE的定位一句话就能讲清:给知识图谱的"抽取"环节提供开箱即用的深度学习方案。它由浙江大学团队维护,相关论文入选了EMNLP 2022系统展示轨道。最打动我的是它对场景的覆盖相当完整:
| 任务 \ 场景 | 标准 | 少样本 | 文档级 | 多模态 |
|---|---|---|---|---|
| 实体识别 | ✅ | ✅ | — | ✅ |
| 关系抽取 | ✅ | ✅ | ✅ | ✅ |
| 属性抽取 | ✅ | ✅ | — | — |
| 事件抽取 | ✅ | — | — | — |
标准场景适合标注充足的项目;少样本场景(Few-shot)面向数据稀缺的低资源任务;文档级支持跨句子抽取长文本关系;多模态则让图片与文本联合发力。后面你会在实战中一个个遇到它们。
第一步:10分钟把环境跑起来
环境搭建最劝退新手,但DeepKE给了两条退路,任选其一。
路线A:源码安装(我更推荐)
git clone https://gitcode.com/gh_mirrors/de/DeepKE conda create -n deepke python=3.8 conda activate deepke cd DeepKE pip install -r requirements.txt python setup.py develop路线B:Docker一键起
docker pull zjunlp/deepke:latest docker run -it zjunlp/deepke:latest /bin/bash我选了路线A,全程没碰到依赖冲突。一个小提醒:项目默认面向Linux,Windows用户记得把配置文件里的路径分隔符换成\\,否则容易在读取数据时报错。
第二步:看一眼数据格式,不用重新造轮子
训练前先搞懂数据长什么样。以实体识别为例,原始输入就是一个文本文件,一句话一行(如上图),再配一个同结构的标签文件即可;关系抽取则支持JSON、CSV、XLSX等常见格式,示例数据都放在 example 目录下。就算你的数据和示例长得不一样也别慌——仓库里既有数据预处理脚本,也有弱监督自动标注脚本:先让程序打一批"粗糙标签",你再人工校正,能省下大量标注时间。
第三步:跑通第一个实体识别模型
进入示例目录直接开训:
cd example/ner/standard python run.py所有可调参数都在 conf 文件夹里,想换模型只需改一行配置,就能在 BERT、BiLSTM-CRF、W2NER 之间切换。我用轻量的 BiLSTM-CRF 在CPU上先跑通了流程,再换成 W2NER,在人民日报中文语料上F1能到96以上,识别效果相当能打。想盯着训练过程,开启 wandb 就能实时看到loss曲线和各项指标。
第四步:拿新文本做预测
训练收尾后,把 predict.yaml 里的模型路径改成刚才的checkpoint,运行:
python predict.py几秒钟后,输入文本里的人名、地名、机构名就被逐个框出来。看到自己的数据被模型"读懂"的那一刻,成就感是真实的。同样的套路,切到 example/re/standard 就能做关系抽取——输入换成"实体对+句子",输出是实体之间的关系类型。
数据不够?它的后路比你想的多
很多人做知识图谱,卡住不是因为不会用模型,而是没数据。DeepKE在这里给足了兜底方案:
- 少样本模型:LightNER、KnowPrompt 这类模型专为低资源场景设计,几十条标注也能出不错的效果;
- 数据增强:example/re/few-shot/DA 目录提供了中英文数据增强脚本,帮你把有限的标注"变多";
- 大模型兜底:example/llm 下的 DeepKE-LLM 支持调用 GPT 系列、ChatGLM、LLaMA 等大模型做抽取和数据生成,还开源了 OneKE 抽取大模型,配合 IEPile 指令数据集可以自己微调一套抽取能力。
上面这张雷达图是 OneKE 与 GPT-4 等多个大模型在中文文实体、关系、事件抽取任务上的对比——不依赖外部API,你也能自己部署一整套抽取能力。
三个新手高频疑问
Q:没有GPU能跑吗?能。BiLSTM-CRF这类轻量模型在CPU上就能训练,只是慢一些;想上BERT或W2NER,建议备一张消费级显卡,训练时间能差出十几倍。
Q:和手写正则比,深度学习抽取强在哪?规则只对"格式规整"的文本有效,换个说法立刻失效;模型则能泛化到没见过的表达,而且同一套框架改改配置就能适配不同任务,不必为每个任务重写一遍解析逻辑。
Q:想快速上线验证,有现成模型吗?有。example/triple/cnschema 提供了基于中文知识体系cnSchema的现成抽取模型,下载即用,特别适合先跑产品Demo、再谈优化。
写在最后
知识图谱的构建,难不在算法,而在怎么把流程干净地串起来。DeepKE已经把安装、数据、训练、预测、评估这条链路铺好了,你要做的只是决定抽取什么,然后跑一遍。想深入的话,仓库里的 docs/ 目录有完整文档,example/ 下每个任务都有可运行的示例,pretrained/ 目录整理了预训练模型的下载指引。
这篇文章里的每一步我都实际跑通过。现在轮到你动手了——从 clone 仓库开始,把属于你的第一张知识图谱建出来。💪
【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址: https://gitcode.com/gh_mirrors/de/DeepKE
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
