43 Star 398 Fork 137

OpenKG / DeepKE

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Documentation PyPI GitHub Documentation Open In Colab

English | 简体中文

基于深度学习的开源中文知识图谱抽取框架

DeepKE 是一个开源的知识图谱抽取与构建工具,支持cnSchema、低资源、长篇章、多模态的知识抽取工具,可以基于PyTorch实现命名实体识别关系抽取属性抽取功能。同时为初学者提供了文档在线演示, 论文, 演示文稿海报

如果您在安装DeepKE和DeepKE-LLM中遇到任何问题(一般是包的版本兼容性问题)不用心急,您可以查阅常见问题或直接提Issue,我们会尽全力帮助您解决问题

目录


新版特性

旧版新闻

预测演示

下面使用一个demo展示预测过程。该动图由Terminalizer生成,生成代码可点击获取。


模型架构

Deepke的架构图如下所示

  • DeepKE为三个知识抽取功能(命名实体识别、关系抽取和属性抽取)设计了一个统一的框架
  • 可以在不同场景下实现不同功能。比如,可以在标准全监督、低资源少样本、文档级和多模态设定下进行关系抽取
  • 每一个应用场景由三个部分组成:Data部分包含Tokenizer、Preprocessor和Loader,Model部分包含Module、Encoder和Forwarder,Core部分包含Training、Evaluation和Prediction

快速上手

DeepKE-LLM

大模型时代, DeepKE-LLM采用全新的环境依赖

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

  • DeepKE支持pip安装使用,下以常规关系抽取场景为例
  • DeepKE支持手动环境部署与容器部署,您可任选一种方法进行安装

🔧 手动环境部署

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安装,直接使用

pip install deepke

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 来加速您的部署

环境依赖

DeepKE

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

具体功能介绍

1. 命名实体识别NER

  • 命名实体识别是从非结构化的文本中识别出实体和其类型。数据为txt文件,样式范例为(用户可以基于工具DoccanoMarkTool标注数据,也可以通过DeepKE自带的弱监督功能自动得到数据):

    Sentence Person Location Organization
    本报北京9月4日讯记者杨涌报道:部分省区人民日报宣传发行工作座谈会9月3日在4日在京举行。 杨涌 北京 人民日报
    《红楼梦》由王扶林导演,周汝昌、王蒙、周岭等多位专家参与制作。 王扶林,周汝昌,王蒙,周岭
    秦始皇兵马俑位于陕西省西安市,是世界八大奇迹之一。 秦始皇 陕西省,西安市
  • 具体流程请进入详细的README中

    • 常规全监督STANDARD

      我们还提供了大模型支持和开箱即用的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: 模型训练

      数据集和参数配置可以分别在dataconf文件夹中修改

      python run.py

      Step3: 模型预测

      python predict.py
    • 少样本FEW-SHOT

      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中追加- predictpredict.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_rcnnvisual grounding工具分别抽取RCNN objects和visual grounding objects来作为局部视觉信息

      Step2 多模态场景下训练模型

      • 数据集和参数配置可以分别进入dataconf文件夹中修改
      • 如需从上次训练的模型开始训练:设置conf/train.yaml中的load_path为上次保存模型的路径,每次训练的日志默认保存在根目录,可用log_dir来配置
      python run.py

      Step3 模型预测

      python predict.py

2. 关系抽取RE

  • 关系抽取是从非结构化的文本中抽取出实体之间的关系,以下为几个样式范例,数据为csv文件(用户可以基于工具DoccanoMarkTool标注数据,也可以通过DeepKE自带的弱监督功能自动得到数据):

    Sentence Relation Head Head_offset Tail Tail_offset
    《岳父也是爹》是王军执导的电视剧,由马恩然、范明主演。 导演 岳父也是爹 1 王军 8
    《九玄珠》是在纵横中文网连载的一部小说,作者是龙马。 连载网站 九玄珠 1 纵横中文网 7
    提起杭州的美景,西湖总是第一个映入脑海的词语。 所在城市 西湖 8 杭州 2
  • ❗NOTE: 如果您使用的同一个关系存在多种实体类型,可以采取对实体类型加关系前缀的方式构造输入。

  • 具体流程请进入详细的README中,RE包括了以下三个子功能

    • 常规全监督STANDARD

      我们还提供了大模型支持和开箱即用的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:模型训练

      数据集和参数配置可以分别进入dataconf文件夹中修改

      python run.py

      Step3:模型预测

      python predict.py
    • 少样本FEW-SHOT

      Step1:进入DeepKE/example/re/few-shot,下载数据集

      wget 120.27.214.45/Data/re/few_shot/data.tar.gz
      
      tar -xzvf data.tar.gz

      Step2:模型训练

      • 数据集和参数配置可以分别进入dataconf文件夹中修改

      • 如需从上次训练的模型开始训练:设置conf/train.yaml中的train_from_saved_model为上次保存模型的路径,每次训练的日志默认保存在根目录,可用log_dir来配置

      python run.py

      Step3:模型预测

      python predict.py
    • 文档级DOCUMENT

      Step1:进入DeepKE/example/re/document,下载数据集

      wget 120.27.214.45/Data/re/document/data.tar.gz
      
      tar -xzvf data.tar.gz

      Step2:模型训练

      • 数据集和参数配置可以分别进入dataconf文件夹中修改
      • 如需从上次训练的模型开始训练:设置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_rcnnvisual grounding工具分别抽取RCNN objects和visual grounding objects来作为局部视觉信息

      Step2 模型训练

      • 数据集和参数配置可以分别进入dataconf文件夹中修改
      • 如需从上次训练的模型开始训练:设置conf/train.yaml中的load_path为上次保存模型的路径,每次训练的日志默认保存在根目录,可用log_dir来配置
      python run.py

      Step3 模型预测

      python predict.py

3. 属性抽取AE

  • 数据为csv文件,样式范例为:

    Sentence Att Ent Ent_offset Val Val_offset
    张冬梅,女,汉族,1968年2月生,河南淇县人 民族 张冬梅 0 汉族 6
    诸葛亮,字孔明,三国时期杰出的军事家、文学家、发明家。 朝代 诸葛亮 0 三国时期 8
    2014年10月1日许鞍华执导的电影《黄金时代》上映 上映时间 黄金时代 19 2014年10月1日 0
  • 具体流程请进入详细的README中

    • 常规全监督STANDARD

      Step1:进入DeepKE/example/ae/standard,下载数据集

      wget 120.27.214.45/Data/ae/standard/data.tar.gz
      
      tar -xzvf data.tar.gz

      Step2:模型训练

      数据集和参数配置可以分别进入dataconf文件夹中修改

      python run.py

      Step3:模型预测

      python predict.py

4.事件抽取

  • 事件抽取是指从一段无结构化的文本中抽取出某个事件的事件类型、事件触发词、论元角色以及论元。

  • 数据为.tsv文件,样例为:

    Sentence Event type Trigger Role Argument
    据《欧洲时报》报道,当地时间27日,法国巴黎卢浮宫博物馆员工因不满工作条件恶化而罢工,导致该博物馆也因此闭门谢客一天。 组织行为-罢工 罢工 罢工人员 法国巴黎卢浮宫博物馆员工
    时间 当地时间27日
    所属组织 法国巴黎卢浮宫博物馆
    中国外运2019年上半年归母净利润增长17%:收购了少数股东股权 财经/交易-出售/收购 收购 出售方 少数股东
    收购方 中国外运
    交易物 股权
    美国亚特兰大航展13日发生一起表演机坠机事故,飞行员弹射出舱并安全着陆,事故没有造成人员伤亡。 灾害/意外-坠机 坠机 时间 13日
    地点 美国亚特兰
  • 具体流程请进入详细的README中

    • 常规全监督STANDARD

      Step1:进入DeepKE/example/ee/standard,下载数据集

      wget 120.27.214.45/Data/ee/DuEE.zip
      unzip DuEE.zip

      Step2:模型训练

      数据集和参数配置可以分别进入dataconf文件夹中修改

      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]

相关工具

DoccanoMarkToolLabelStudio:实体识别关系抽取数据标注工具

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

阿里巴巴:熊飞宇、陈强

阿里巴巴达摩院:张珍茹、谭传奇、黄非

实习生:徐子文、黄睿、翁晓龙

其它知识抽取开源工具

MIT License Copyright (c) 2021 ZJUNLP Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

DeepKE是由浙江大学团队维护开源知识图谱抽取工具集。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/openkg/deepke.git
git@gitee.com:openkg/deepke.git
openkg
deepke
DeepKE
main

搜索帮助