English | 简体中文
DeepKE 是一个开源的知识图谱抽取与构建工具,支持cnSchema、低资源、长篇章、多模态的知识抽取工具,可以基于PyTorch实现命名实体识别、关系抽取和属性抽取功能。同时为初学者提供了文档,在线演示, 论文, 演示文稿和海报。
- ❗想用大模型做抽取吗?试试DeepKE-LLM和OneKE!
- ❗想自己全监督训抽取模型吗?试试快速上手, 我们提供实体识别模型 (例如LightNER(COLING'22), W2NER(AAAI'22))、关系抽取模型(例如KnowPrompt(WWW'22)), PRGC(ACL'21), PURE(NAACL'21)), 和基于cnSchema的开箱即用模型DeepKE-cnSchema!
- 推荐使用Linux,如果使用Windows,路径中请使用
\\
- 如果因为网络问题无法从HuggingFace下载模型,可以使用wisemodel和modescope
如果您在安装DeepKE和DeepKE-LLM中遇到任何问题(一般是包的版本兼容性问题)不用心急,您可以查阅常见问题或直接提Issue,我们会尽全力帮助您解决问题!
2024年4月
发布中英双语大模型知识抽取框架OneKE,同时开源基于Chinese-Alpaca-2-13B全参数微调的版本。2024年2月
发布大规模(0.32B
tokens)双语(中文和英文)信息抽取(IE)指令数据集IEPile, 以及基于IEPile
训练的两个模型baichuan2-13b-iepile-lora、llama2-13b-iepile-lora。2023年9月
为基于指令的知识图谱构建任务(Instruction-based KGC)发布了一个中英双语信息抽取(IE)指令数据集InstructIE
, 具体参见此处。2023年6月
为DeepKE-LLM新增多个大模型(如ChatGLM、LLaMA系列、GPT系列、抽取大模型智析)支持。2023年4月
新增实体关系抽取模型CP-NER(IJCAI'23), ASP(EMNLP'22), PRGC(ACL'21), PURE(NAACL'21), 支持事件抽取(中文、英文), 提供对Python库高级版本的支持 (例如Transformers)。2023年2月
支持大模型 (GPT-3),包含In-context Learning (基于 EasyInstruct)和数据生成,新增实体识别模型W2NER(AAAI'22)。
旧版新闻
-
2022年11月
新增实体识别、关系抽取的数据标注说明和弱监督数据自动标注(实体识别、关系抽取)功能,优化多GPU训练。 -
2022年9月
论文 DeepKE: A Deep Learning Based Knowledge Extraction Toolkit for Knowledge Base Population被EMNLP2022 System Demonstration Track录用。 -
2022年5月
发布DeepKE-cnschema特别版模型,支持基于cnSchema的开箱即用的中文实体识别和关系抽取。 -
2022年1月
发布论文 DeepKE: A Deep Learning Based Knowledge Extraction Toolkit for Knowledge Base Population -
2021年12月
加入dockerfile
以便自动创建环境 -
2021年11月
发布DeepKE demo页面,支持实时抽取,无需部署和训练模型 -
发布DeepKE文档,包含DeepKE源码和数据集等详细信息
-
2021年10月
pip install deepke
-
deepke-v2.0发布
-
2019年8月
pip install deepke
-
deepke-v1.0发布
-
2018年8月
DeepKE项目启动,deepke-v0.1代码发布
下面使用一个demo展示预测过程。该动图由Terminalizer生成,生成代码可点击获取。
Deepke的架构图如下所示
- DeepKE为三个知识抽取功能(命名实体识别、关系抽取和属性抽取)设计了一个统一的框架
- 可以在不同场景下实现不同功能。比如,可以在标准全监督、低资源少样本、文档级和多模态设定下进行关系抽取
- 每一个应用场景由三个部分组成:Data部分包含Tokenizer、Preprocessor和Loader,Model部分包含Module、Encoder和Forwarder,Core部分包含Training、Evaluation和Prediction
大模型时代, DeepKE-LLM采用全新的环境依赖,强烈建议使用linux环境安装
conda create -n deepke-llm python=3.9
conda activate deepke-llm
cd example/llm
pip install -r requirements.txt
注意!!是example/llm文件夹下的 requirements.txt
- DeepKE支持pip安装使用,下以常规关系抽取场景为例
- DeepKE支持手动环境部署与容器部署,您可任选一种方法进行安装
- 强烈建议使用linux环境安装!
Step 1:下载代码 git clone --depth 1 https://github.com/zjunlp/DeepKE.git
(别忘记star和fork哈!!!)
Step 2:使用anaconda创建虚拟环境,进入虚拟环境(提供Dockerfile源码和教程可自行创建镜像;可参考备注(常见问题)使用镜像加速)
conda create -n deepke python=3.8
conda activate deepke
1) 基于pip安装,直接使用 (不建议使用此方法,存在python包兼容冲突风险)
pip install deepke
- 请确保您当前的pip版本<=24.0
2) 基于源码安装
pip install -r requirements.txt
python setup.py install
python setup.py develop
Step 3 :进入任务文件夹,以常规关系抽取为例
cd DeepKE/example/re/standard
Step 4:下载数据集,或根据数据标注说明标注数据
wget 120.27.214.45/Data/re/standard/data.tar.gz
tar -xzvf data.tar.gz
支持多种数据类型格式,具体请见各部分子README。
Step 5 :模型训练,训练用到的参数可在conf文件夹内修改
DeepKE使用wandb支持可视化调参
python run.py
Step 6 :模型预测。预测用到的参数可在conf文件夹内修改
修改conf/predict.yaml
中保存训练好的模型路径。需使用模型的绝对路径。如xxx/checkpoints/2019-12-03_17-35-30/cnn_epoch21.pth
。
python predict.py
- ❗注意: 如果您在安装或使用过程中遇到任何问题,您可以查看备注(常见问题) 或提交 GitHub issue.
Step1 下载Docker客户端
从官网下载Docker客户端并启动Docker服务
Step2 拉取镜像并运行容器
docker pull zjunlp/deepke:latest
docker run -it zjunlp/deepke:latest /bin/bash
剩余步骤同手动环境部署一节中的Step 3及后续步骤相同
- ❗注意: 您可以参考 Tips 来加速您的部署
python == 3.8
- torch>=1.5,<=1.11
- hydra-core==1.0.6
- tensorboard==2.4.1
- matplotlib==3.4.1
- transformers==4.26.0
- jieba==0.42.1
- scikit-learn==0.24.1
- seqeval==1.2.2
- opt-einsum==3.3.0
- wandb==0.12.7
- ujson==5.6.0
- huggingface_hub==0.11.0
- tensorboardX==2.5.1
- nltk==3.8
- protobuf==3.20.1
- numpy==1.21.0
- ipdb==0.13.11
- pytorch-crf==0.7.2
- tqdm==4.66.1
- openai==0.28.0
- Jinja2==3.1.2
- datasets==2.13.2
- pyhocon==0.3.60
-
命名实体识别是从非结构化的文本中识别出实体和其类型。数据为txt文件,样式范例为(用户可以基于工具Doccano、MarkTool标注数据,也可以通过DeepKE自带的弱监督功能自动得到数据):
Sentence Person Location Organization 本报北京9月4日讯记者杨涌报道:部分省区人民日报宣传发行工作座谈会9月3日在4日在京举行。 杨涌 北京 人民日报 《红楼梦》由王扶林导演,周汝昌、王蒙、周岭等多位专家参与制作。 王扶林,周汝昌,王蒙,周岭 秦始皇兵马俑位于陕西省西安市,是世界八大奇迹之一。 秦始皇 陕西省,西安市 -
具体流程请进入详细的README中
-
我们还提供了大模型支持和开箱即用的DeepKE-cnSchema特别版,无需训练即可抽取支持cnSchema的实体
Step1: 进入
DeepKE/example/ner/standard
,下载数据集wget 120.27.214.45/Data/ner/standard/data.tar.gz tar -xzvf data.tar.gz
Step2: 模型训练
数据集和参数配置可以分别在
data
和conf
文件夹中修改python run.py
Step3: 模型预测
python predict.py
-
Step1: 进入
DeepKE/example/ner/few-shot
,下载数据集wget 120.27.214.45/Data/ner/few_shot/data.tar.gz tar -xzvf data.tar.gz
Step2:低资源场景下训练模型
模型加载和保存位置以及参数配置可以在
conf
文件夹中修改python run.py +train=few_shot
若要加载模型,修改
few_shot.yaml
中的load_path
;Step3:在
config.yaml
中追加- predict
,predict.yaml
中修改load_path
为模型路径以及write_path
为预测结果的保存路径,完成修改后使用python predict.py
-
Step1: 进入
DeepKE/example/ner/multimodal
, 下载数据集wget 120.27.214.45/Data/ner/multimodal/data.tar.gz tar -xzvf data.tar.gz
我们在原始图像上使用faster_rcnn和visual grounding工具分别抽取RCNN objects和visual grounding objects来作为局部视觉信息
Step2 多模态场景下训练模型
- 数据集和参数配置可以分别进入
data
和conf
文件夹中修改 - 如需从上次训练的模型开始训练:设置
conf/train.yaml
中的load_path
为上次保存模型的路径,每次训练的日志默认保存在根目录,可用log_dir
来配置
python run.py
Step3 模型预测
python predict.py
- 数据集和参数配置可以分别进入
-
-
关系抽取是从非结构化的文本中抽取出实体之间的关系,以下为几个样式范例,数据为csv文件(用户可以基于工具Doccano、MarkTool标注数据,也可以通过DeepKE自带的弱监督功能自动得到数据):
Sentence Relation Head Head_offset Tail Tail_offset 《岳父也是爹》是王军执导的电视剧,由马恩然、范明主演。 导演 岳父也是爹 1 王军 8 《九玄珠》是在纵横中文网连载的一部小说,作者是龙马。 连载网站 九玄珠 1 纵横中文网 7 提起杭州的美景,西湖总是第一个映入脑海的词语。 所在城市 西湖 8 杭州 2 -
❗NOTE: 如果您使用的同一个关系存在多种实体类型,可以采取对实体类型加关系前缀的方式构造输入。
-
具体流程请进入详细的README中,RE包括了以下三个子功能
-
我们还提供了大模型支持和开箱即用的DeepKE-cnSchema特别版,无需训练即可抽取支持cnSchema的关系
Step1:进入
DeepKE/example/re/standard
,下载数据集wget 120.27.214.45/Data/re/standard/data.tar.gz tar -xzvf data.tar.gz
Step2:模型训练
数据集和参数配置可以分别进入
data
和conf
文件夹中修改python run.py
Step3:模型预测
python predict.py
-
Step1:进入
DeepKE/example/re/few-shot
,下载数据集wget 120.27.214.45/Data/re/few_shot/data.tar.gz tar -xzvf data.tar.gz
Step2:模型训练
-
数据集和参数配置可以分别进入
data
和conf
文件夹中修改 -
如需从上次训练的模型开始训练:设置
conf/train.yaml
中的train_from_saved_model
为上次保存模型的路径,每次训练的日志默认保存在根目录,可用log_dir
来配置
python run.py
Step3:模型预测
python predict.py
-
-
Step1:进入
DeepKE/example/re/document
,下载数据集wget 120.27.214.45/Data/re/document/data.tar.gz tar -xzvf data.tar.gz
Step2:模型训练
- 数据集和参数配置可以分别进入
data
和conf
文件夹中修改 - 如需从上次训练的模型开始训练:设置
conf/train.yaml
中的train_from_saved_model
为上次保存模型的路径,每次训练的日志默认保存在根目录,可用log_dir
来配置;
python run.py
Step3:模型预测
python predict.py
- 数据集和参数配置可以分别进入
-
Step1: 进入
DeepKE/example/re/multimodal
, 下载数据集wget 120.27.214.45/Data/re/multimodal/data.tar.gz tar -xzvf data.tar.gz
我们在原始图像上使用faster_rcnn和visual grounding工具分别抽取RCNN objects和visual grounding objects来作为局部视觉信息
Step2 模型训练
- 数据集和参数配置可以分别进入
data
和conf
文件夹中修改 - 如需从上次训练的模型开始训练:设置
conf/train.yaml
中的load_path
为上次保存模型的路径,每次训练的日志默认保存在根目录,可用log_dir
来配置
python run.py
Step3 模型预测
python predict.py
- 数据集和参数配置可以分别进入
-
-
数据为csv文件,样式范例为:
Sentence Att Ent Ent_offset Val Val_offset 张冬梅,女,汉族,1968年2月生,河南淇县人 民族 张冬梅 0 汉族 6 诸葛亮,字孔明,三国时期杰出的军事家、文学家、发明家。 朝代 诸葛亮 0 三国时期 8 2014年10月1日许鞍华执导的电影《黄金时代》上映 上映时间 黄金时代 19 2014年10月1日 0 -
具体流程请进入详细的README中
-
Step1:进入
DeepKE/example/ae/standard
,下载数据集wget 120.27.214.45/Data/ae/standard/data.tar.gz tar -xzvf data.tar.gz
Step2:模型训练
数据集和参数配置可以分别进入
data
和conf
文件夹中修改python run.py
Step3:模型预测
python predict.py
-
-
事件抽取是指从一段无结构化的文本中抽取出某个事件的事件类型、事件触发词、论元角色以及论元。
-
数据为
.tsv
文件,样例为:Sentence Event type Trigger Role Argument 据《欧洲时报》报道,当地时间27日,法国巴黎卢浮宫博物馆员工因不满工作条件恶化而罢工,导致该博物馆也因此闭门谢客一天。 组织行为-罢工 罢工 罢工人员 法国巴黎卢浮宫博物馆员工 时间 当地时间27日 所属组织 法国巴黎卢浮宫博物馆 中国外运2019年上半年归母净利润增长17%:收购了少数股东股权 财经/交易-出售/收购 收购 出售方 少数股东 收购方 中国外运 交易物 股权 美国亚特兰大航展13日发生一起表演机坠机事故,飞行员弹射出舱并安全着陆,事故没有造成人员伤亡。 灾害/意外-坠机 坠机 时间 13日 地点 美国亚特兰
-
具体流程请进入详细的README中
-
Step1:进入
DeepKE/example/ee/standard
,下载数据集wget 120.27.214.45/Data/ee/DuEE.zip unzip DuEE.zip
Step2:模型训练
数据集和参数配置可以分别进入
data
和conf
文件夹中修改python run.py
Step3:模型预测
python predict.py
-
1.使用 Anaconda 时,建议添加国内镜像
,下载速度更快。如镜像。
2.使用 pip 时,建议使用国内镜像
,下载速度更快,如阿里云镜像。
3.安装后提示 ModuleNotFoundError: No module named 'past'
,输入命令 pip install future
即可解决。
4.使用语言预训练模型时,在线安装下载模型比较慢,更建议提前下载好,存放到 pretrained 文件夹内。具体存放文件要求见文件夹内的 README.md
。
5.DeepKE老版本位于deepke-v1.0分支,用户可切换分支使用老版本,老版本的能力已全部迁移到标准设定关系抽取(example/re/standard)中。
6.如果您需要在源码的基础上进行修改,建议使用python setup.py install
方式安装DeepKE,如未使用该方式安装,源码修改部分不会生效,见问题。
7.更多的低资源抽取工作可查阅论文 Knowledge Extraction in Low-Resource Scenarios: Survey and Perspective。
8.确保使用requirements.txt中对应的各依赖包的版本。
- 在DeepKE的下一个版本中发布优化后的中英双语抽取大模型
- 我们提供长期技术维护和答疑解惑。如有疑问,请提交issues
Data-Efficient Knowledge Graph Construction, 高效知识图谱构建 (Tutorial on CCKS 2022) [slides]
Efficient and Robust Knowledge Graph Construction (Tutorial on AACL-IJCNLP 2022) [slides]
PromptKG Family: a Gallery of Prompt Learning & KG-related Research Works, Toolkits, and Paper-list [Resources]
Knowledge Extraction in Low-Resource Scenarios: Survey and Perspective [Survey][Paper-list]
基于大模型提示学习的推理工作综述 [论文][列表][ppt]
Doccano、MarkTool、LabelStudio:实体识别关系抽取数据标注工具
LambdaKG: 基于预训练语言模型的知识图谱表示与应用工具
EasyInstruct: 一个基于指令使用大模型的工具
如果使用DeepKE,请按以下格式引用
@inproceedings{DBLP:conf/emnlp/ZhangXTYYQXCLL22,
author = {Ningyu Zhang and
Xin Xu and
Liankuan Tao and
Haiyang Yu and
Hongbin Ye and
Shuofei Qiao and
Xin Xie and
Xiang Chen and
Zhoubo Li and
Lei Li},
editor = {Wanxiang Che and
Ekaterina Shutova},
title = {DeepKE: {A} Deep Learning Based Knowledge Extraction Toolkit for Knowledge
Base Population},
booktitle = {Proceedings of the The 2022 Conference on Empirical Methods in Natural
Language Processing, {EMNLP} 2022 - System Demonstrations, Abu Dhabi,
UAE, December 7-11, 2022},
pages = {98--108},
publisher = {Association for Computational Linguistics},
year = {2022},
url = {https://aclanthology.org/2022.emnlp-demos.10},
timestamp = {Thu, 23 Mar 2023 16:56:00 +0100},
biburl = {https://dblp.org/rec/conf/emnlp/ZhangXTYYQXCLL22.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
张宁豫、王昊奋、黄非、熊飞宇、陶联宽、徐欣、桂鸿浩、张珍茹、谭传奇、陈强、王潇寒、习泽坤、李欣荣、余海阳、叶宏彬、乔硕斐、王鹏、朱雨琦、谢辛、陈想、黎洲波、李磊、梁孝转、姚云志、陈静、朱雨琦、邓淑敏、张文、郑国轴、陈华钧
开源社区贡献者: thredreams、eltociear、徐子文、黄睿、翁晓龙