Skip to content

Latest commit

 

History

History
283 lines (187 loc) · 17.2 KB

README_CN.md

File metadata and controls

283 lines (187 loc) · 17.2 KB

Documentation PyPI GitHub Documentation Open In Colab

English | 简体中文

DeepKE-LLM: A Large Language Model Based
Knowledge Extraction Toolkit


环境依赖

大模型时代, 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

新闻

  • [2024/04] 发布中英双语大模型知识抽取框架OneKE,同时开源基于Chinese-Alpaca-2-13B全参数微调的版本。
  • [2024/02] 发布大规模(0.32B tokens)双语(中文和英文)信息抽取(IE)指令数据集IEPile, 以及基于 IEPile 训练的两个模型baichuan2-13b-iepile-lorallama2-13b-iepile-lora
  • [2023/11] knowlm-13b-ie权重进行了更新,这次更新主要是调整了NAN输出,缩短了推理长度,并支持了不指定schema的指令。
  • [2023/10] 我们发布了一个新的双语(中文和英文)基于主题的信息抽取(IE)指令数据集,名为InstructIE论文
  • [2023/08] 推出了专门用于信息抽取(IE)的KnowLM版本,命名为knowlm-13b-ie
  • [2023/07] 发布了训练所使用的部分指令数据集,包括knowlm-keKnowLM-IE
  • [2023/06] 发布了第一版的预训练权重knowlm-13b-base-v1.0和第一版的zhixi-13b-lora
  • [2023/05] 我们启动了基于指令的信息抽取项目。

数据

现有数据集

名称 下载 数量 描述
InstructIE Google drive
Hugging Face
ModelScope
WiseModel
30w+ 双语(中文和英文)基于主题的信息抽取(IE)指令数据集
IEPile Google Drive
Hugging Face
WiseModel
ModelScpoe
200w+ 大规模(0.32B tokens)高质量双语(中文和英文)信息抽取(IE)指令微调数据集
InstructIE详细信息

一条数据的示例

{
  "id": "bac7c32c47fddd20966e4ece5111690c9ce3f4f798c7c9dfff7721f67d0c54a5", 
  "cate": "地理地区", 
  "text": "阿尔夫达尔(挪威语:Alvdal)是挪威的一个市镇,位于内陆郡,行政中心为阿尔夫达尔村。市镇面积为943平方公里,人口数量为2,424人(2018年),人口密度为每平方公里2.6人。", 
  "relation": [
    {"head": "阿尔夫达尔", "head_type": "地理地区", "relation": "面积", "tail": "943平方公里", "tail_type": "度量"}, 
    {"head": "阿尔夫达尔", "head_type": "地理地区", "relation": "别名", "tail": "Alvdal", "tail_type": "地理地区"}, 
    {"head": "内陆郡", "head_type": "地理地区", "relation": "位于", "tail": "挪威", "tail_type": "地理地区"}, 
    {"head": "阿尔夫达尔", "head_type": "地理地区", "relation": "位于", "tail": "内陆郡", "tail_type": "地理地区"}, 
    {"head": "阿尔夫达尔", "head_type": "地理地区", "relation": "人口", "tail": "2,424人", "tail_type": "度量"}
  ]
}

各字段的说明:

字段 说明
id 每个数据点的唯一标识符。
cate 文本的主题类别,总计12种不同的主题分类。
text 模型的输入文本,目标是从中抽取涉及的所有关系三元组。
relation 描述文本中包含的关系三元组,即(head, head_type, relation, tail, tail_type)。

需要参考数据转换

IEPile详细信息

IEPile 中的每条数据均包含 task, source, instruction, output 4个字段, 以下是各字段的说明

字段 说明
task 该实例所属的任务, (NERREEEEETEEA) 5种任务之一。
source 该实例所属的数据集
instruction 输入模型的指令, 经过json.dumps处理成JSON字符串, 包括"instruction", "schema", "input"三个字段
output 输出, 采用字典的json字符串的格式, key是schema, value是抽取出的内容

IEPile中, instruction 的格式采纳了类JSON字符串的结构,实质上是一种字典型字符串,它由以下三个主要部分构成: (1) 'instruction': 任务描述, 它概述了指令的执行任务(NERREEEEETEEA之一)。 (2) 'schema': 待抽取的schema(实体类型, 关系类型, 事件类型)列表。 (3) 'input': 待抽取的文本。

以下是一条数据实例

{
  "task": "NER", 
  "source": "MSRA", 
  "instruction": "{\"instruction\": \"你是专门进行实体抽取的专家。请从input中抽取出符合schema定义的实体,不存在的实体类型返回空列表。请按照JSON字符串的格式回答。\", \"schema\": [\"组织机构\", \"地理位置\", \"人物\"], \"input\": \"对于康有为、梁启超、谭嗣同、严复这些从旧文化营垒中走来的年轻“布衣”,他们背负着沉重的历史包袱,能够挣脱旧传统的束缚,为拯救民族的危亡而献身,实在是中华民族的脊梁。\"}", 
  "output": "{\"组织机构\": [], \"地理位置\": [\"中华\"], \"人物\": [\"康有为\", \"梁启超\", \"谭嗣同\", \"严复\"]}"
}

该数据实例所属任务是 NER, 所属数据集是 MSRA, 待抽取的schema列表是 ["组织机构", "地理位置", "人物"], 待抽取的文本是"对于康有为、梁启超、谭嗣同、严复这些从旧文化营垒中走来的年轻“布衣”,他们背负着沉重的历史包袱,能够挣脱旧传统的束缚,为拯救民族的危亡而献身,实在是中华民族的脊梁。", 输出是 {"组织机构": [], "地理位置": ["中华"], "人物": ["康有为", "梁启超", "谭嗣同", "严复"]}

模型

OneKE

中英双语大模型知识抽取框架OneKE和基于Chinese-Alpaca-2-13B全参数微调的版本: 使用指南

LLaMA系列

LLaMA

LLaMA,它是一组从7B到65B参数的基础语言模型。我们还提供了基于KnowLM框架的抽取大模型智析的支持。其首先(1)使用中英双语语料首先对LLaMA(13B)进行进一步全量预训练,在尽可能保留原来的英文和代码能力的前提下,进一步提高模型对于中文理解能力和知识储备;接着(2)使用指令数据集对第一步的模型微调,来提高语言模型对于人类指令的理解。模型详细信息请参考KnowLM.

案例一:LoRA微调LLaMA完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

案例二:使用智析完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

ChatGLM

ChatGLM

案例一:LoRA微调ChatGLM完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

案例二:P-Tuning微调ChatGLM完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

MOSS

ChatGLM

案例一:Lora微调Moss完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

Baichuan

Baichuan

Case 1: Lora微调Baichuan完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

CPM-Bee

案例一:OpenDelta微调CPM-Bee完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

MOSS

Qwen

案例一:Lora微调Qwen完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

GPT系列

GPT

案例一:ICL使用大语言模型进行信息抽取 英文 | 中文

案例二:ICL使用大语言模型进行数据增强 英文 | 中文

案例三:ICL使用大语言模型完成CCKS2023指令驱动的知识图谱构建 英文 | 中文

案例四:ICL释放大型语言模型进行少样本关系抽取中的能力 英文 | 中文

案例五:CodeKGC-基于代码语言模型的知识图谱构建 英文 | 中文

为了更好地处理知识图谱构建中的关系三元组抽取(RTE)任务,我们设计了代码形式的提示建模关系三元组的结构,并使用代码语言模型(Code-LLM)生成更准确的预测。代码形式提示构建的关键步骤是将(文本,输出三元组)对转换成Python中的语义等价的程序语言。

方法

方法一:In-Context Learning(ICL)

In-Context Learning 是一种指导大语言模型的方法,可以提升其在特定任务上的表现。它通过在特定上下文中进行迭代学习,对模型进行微调和训练,以使其更好地理解和应对特定领域的需求。通过 In-Context Learning,我们可以让大语言模型具备信息抽取、数据增强以及指令驱动的知识图谱构建等功能。

方法二:LoRA

LoRA通过学习秩分解矩阵对来减少可训练参数的数量,同时冻结原始权重。这大大降低了适用于特定任务的大型语言模型的存储需求,并在部署期间实现了高效的任务切换,而无需引入推理延迟。详细可查看原论文LoRA: Low-Rank Adaptation of Large Language Models.

方法三:P-Tuning

PT方法,即P-Tuning方法,参考ChatGLM官方代码 ,是一种针对于大模型的soft-prompt方法。 P-Tuning,仅对大模型的Embedding加入新的参数。 P-Tuning-V2,将大模型的Embedding和每一层前都加上新的参数。

引用

如果您使用了本项目代码, 烦请引用下列论文:

@misc{knowlm,
  author = {Ningyu Zhang and Jintian Zhang and Xiaohan Wang and Honghao Gui and Kangwei Liu and Yinuo Jiang and Xiang Chen and Shengyu Mao and Shuofei Qiao and Yuqi Zhu and Zhen Bi and Jing Chen and Xiaozhuan Liang and Yixin Ou and Runnan Fang and Zekun Xi and Xin Xu and Lei Li and Peng Wang and Mengru Wang and Yunzhi Yao and Bozhong Tian and Yin Fang and Guozhou Zheng and Huajun Chen},
  title = {KnowLM Technical Report},
  year = {2023},
 url = {http://knowlm.zjukg.cn/},
}