ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DeepKE UnleashLLMRE 实战:利用大语言模型上下文学习与数据增强攻克少样本关系抽取

DeepKE UnleashLLMRE 实战:利用大语言模型上下文学习与数据增强攻克少样本关系抽取 人工智能NLP知识图谱深度学习【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址https://gitcode.com/gh_mirrors/de/DeepKE点击查看免费下载本篇技术指南围绕 DeepKE 仓库 example/llm/UnleashLLMRE 模块展开系统讲解如何借助 GPT-3 / GPT-3.5 等大语言模型LLM通过上下文学习In-Context Learning, ICL完成少样本few-shot关系抽取并通过LLM 自动生成有标签数据缓解少样本场景下标注数据稀缺的问题。读完本文你将掌握两套提示设计TEXT PROMPT 与 INSTRUCT PROMPT、可附加实体类型 schema、gpt3ICL.py与gpt3DA.py的完整命令行用法与参数语义以及其背后的源码级实现原理与评估逻辑。模块定位DeepKE-LLM 中的少样本关系抽取方案该模块属于 DeepKE 面向大语言模型的扩展工具集 DeepKE-LLMexample/llm/README_CN.md 中的GPT 系列案例四即ICL 释放大型语言模型进行少样本关系抽取中的能力。其方法论核心是In-Context Learning不更新任何模型参数仅通过在提示中提供若干示例demonstrations引导大语言模型理解并执行关系抽取任务同时利用模型自身的生成能力构造更多带标注数据。模块目录example/llm/UnleashLLMRE仅包含四个文件功能高度聚焦文件作用gpt3ICL.py基于 GPT-3 的上下文学习ICL关系抽取主脚本支持 k-shot 示例gpt3DA.py基于 GPT-3 的少样本关系抽取数据增强Data Augmentation脚本LLM.png提示设计示意图直观展示两类 ICL 提示与数据生成提示的结构README.md / README_CN.md中英文使用说明该方案源自论文How to Unleash the Power of Large Language Models for Few-shot Relation Extraction?SustaiNLP 2023是 DeepKE 在少样本知识抽取方向给出的零训练、纯提示路线。环境准备与数据集环境配置使用 OpenAI 大语言模型如 GPT-3、GPT-3.5需要 OpenAI API key并安装官方客户端 pip install openai在脚本中通过--api_key/-ak参数传入 key代码内部以openai.api_key args.api_key完成鉴权见 gpt3ICL.py 与 gpt3DA.py。数据集模块面向以下三个经典英文关系抽取数据集均以 JSON 格式存放每条样本包含 token 序列、头尾实体 span 及其类型、关系标签等字段TACRED大规模监督关系抽取数据集覆盖多种句子级关系类型TACREV对 TACRED 标注噪声进行修正的版本RE-TACRED在 TACRED 基础上重新标注、改善质量的数据集。从 gpt3DA.py 的entity_types字典可以看出三个数据集的实体类型 schema 并不完全一致例如 TACRED 含MISCELLANEOUSTACREV 与 RE-TACRED 则无这正是脚本按--dataset区分处理的原因。提示设计TEXT PROMPT 与 INSTRUCT PROMPT模块设计了两种上下文学习提示并为每种提示提供是否附加实体类型 schema 的变体共四个选项对应gpt3ICL.py中--prompt参数的取值text/text_schema/instruct/instruct_schemaTEXT PROMPT仅包含关系抽取任务最基本的必要信息。提示以候选关系列表开头There are candidate relations: ...随后是若干条上下文 头尾实体 关系示例最后给出待预测样本并让模型补全关系。INSTRUCT PROMPT在 TEXT PROMPT 基础上增加明确的任务指令Given a context, a pair of head and tail entities in the context, decide the relationship between the head and tail entities from candidate relations: ...以更显式的方式引导模型理解任务。Schema 信息*_schema变体在示例与待预测样本中额外携带头尾实体的实体类型如PERSON、ORGANIZATION即实体类型作为 schemas 信息加入提示可获得更好的抽取效果。从 gpt3ICL.py 可以看到两种提示的构建差异是否instruct决定开头是否输出任务指令句是否schema决定每个示例中实体附近是否附带headtype/tailtype例如The relation between PERSON X and ORGANIZATION Y ...。典型 TEXT 型提示单条样本的形态为Context: 句子 The relation between 头实体 and 尾实体 in the context is 关系标签.而带 schema 的形态为Context: 句子 The relation between person 头实体 and organization 尾实体 in the context is 关系标签.上下文学习gpt3ICL.py 完整使用指南命令行用法 python gpt3ICL.py -h usage: gpt3ICL.py [-h] --api_key API_KEY --train_path TRAIN_PATH --test_path TEST_PATH --output_success OUTPUT_SUCCESS --output_nores OUTPUT_NORES --prompt {text,text_schema,instruct,instruct_schema} [--k K] optional arguments: -h, --help show this help message and exit --api_key API_KEY, -ak API_KEY --train_path TRAIN_PATH, -tp TRAIN_PATH The path of training / demonstration data. --test_path TEST_PATH, -ttp TEST_PATH The path of test data. --output_success OUTPUT_SUCCESS, -os OUTPUT_SUCCESS The output directory of successful ICL samples. --output_nores OUTPUT_NORES, -on OUTPUT_NORES The output directory of failed ICL samples. --prompt {text,text_schema,instruct,instruct_schema} --k K k-shot demonstrations参数详解结合源码参数简写必填默认值含义--api_key-ak是无OpenAI API key--train_path-tp是无训练/演示数据路径JSON 格式--test_path-ttp是无测试数据路径JSON 格式--output_success-os是无成功 ICL 样本输出目录生成os.json--output_nores-on是无失败 ICL 样本输出目录生成no.json--prompt无是无提示类型text/text_schema/instruct/instruct_schema--k无否1k-shot 演示示例数量即每个关系类别抽取的示例条数源码级运行流程gpt3ICL.py 的主流程可分为六个阶段① 数据加载与按关系分组读取训练集后按relation字段构建label_list每个关系对应若干样本并为每个关系分配 idrel2id。② 标签词规范化labelword将原始关系标签如org:founded_by、per:city_of_birth转换为更适合语言模型理解的标签词规则包括转小写、将_与-替换为空格并把常见缩写展开为完整词per → person、org → organization、stateor → state orgpt3ICL.py。这一映射rel2labelword与反向的labelword2rel后续既用于构造提示也用于把模型输出映射回关系标签。③ 提示构建对每条测试样本先随机打乱关系列表然后为每个关系类别随机抽取args.k条样本作为示例拼入提示最后追加待预测样本并留出补全位置。④ 调用模型使用 OpenAI 补全接口关键参数为response openai.Completion.create( modeltext-davinci-003, promptprompt, temperature0, max_tokens128 )即采用text-davinci-003模型、temperature0贪婪解码保证结果确定性、max_tokens128足够输出一个关系标签。⑤ 结果解析与容错取生成文本按.分割取首段并转小写作为预测标签若命中labelword2rel则记为成功样本写入os.json并附加pr字段保存预测标签。针对英文复数形态做了专门容错当输出含city、country、province且替换为复数形式cities/countries/provinces后能命中标签词时同样判定为成功gpt3ICL.py。其余情况写入失败样本文件no.json。遇到配额超限错误You exceeded your current quota...会直接中断循环其他异常则等待 30 秒后继续gpt3ICL.py。⑥ 评估脚本运行结束后基于f1_score函数打印整体指标见下文评估指标小节。典型运行示例 python gpt3ICL.py \ --api_key sk-xxx \ --train_path ./data/tacred_train.json \ --test_path ./data/tacred_test.json \ --output_success ./output/success \ --output_nores ./output/nores \ --prompt instruct_schema \ --k 5用 LLM 生成数据gpt3DA.py 完整使用指南为了弥补少样本场景下关系抽取有标签数据的缺失模块设计了带有数据样式描述的提示指导大语言模型根据已有少样本数据自动生成更多有标签数据如图中最后一条提示所示实现数据增强。命令行用法 python gpt3DA.py -h usage: gpt3DA.py [-h] --api_key API_KEY --demo_path DEMO_PATH --output_dir OUTPUT_DIR --dataset {tacred,tacrev,retacred} [--k K] optional arguments: -h, --help show this help message and exit --api_key API_KEY, -ak API_KEY --demo_path DEMO_PATH, -dp DEMO_PATH The directory of demonstration data. --output_dir OUTPUT_DIR The output directory of generated data. --dataset {tacred,tacrev,retacred} --k K k-shot demonstrations参数详解结合源码参数简写必填默认值含义--api_key-ak是无OpenAI API key--demo_path-dp是无演示数据目录JSON 格式作为生成示例--output_dir无是无生成数据输出目录生成generated.json--dataset无是无数据集类型tacred/tacrev/retacred决定实体类型 schema--k无否3k-shot 演示数量注意与 ICL 脚本默认值不同数据生成提示结构从 gpt3DA.py 的实现看每个关系的生成提示由四部分拼接而成数据样式描述声明一条关系抽取样本由 relation、context、一对头尾实体及其实体类型构成并给出当前数据集的全部实体类型列表取自entity_types[datasetname]k 个真实示例每个示例按Relation: rel. Context: 句子 Head Entity: 头实体. Head Type: 类型. Tail Entity: 尾实体. Tail Type: 类型.的格式给出实体 span 从 token 序列中按subj_start/subj_end、obj_start/obj_end切出见 gpt3DA.py生成指令Generate more samples like above for the relation rel.模型调用参数与 ICL 不同数据生成采用temperature1鼓励多样性与创造性、max_tokens3500单次生成大量候选样本见 gpt3DA.py。源码级结果解析与校验模型生成结果逐行解析gpt3DA.py每条候选样本需通过层层字段校验才会被保留关系校验提取Relation:后的关系名必须与当前正在生成的关系k一致否则丢弃字段提取依次按Context:、Head Entity:、Head Type:、Tail Entity:、Tail Type:的关键词切分提取文本与类型类型合法性头/尾实体类型必须在当前数据集的entity_types中支持_与空格互换匹配并通过规范化还原为数据集原始标注如MISCELLANEOUS → MISC、STATE OR PROVINCE → STATE_OR_PROVINCE见 gpt3DA.py实体可定位性头/尾实体字符串必须出现在生成文本中并通过子串匹配计算其在文本中的起始与结束位置subj_start/subj_end、obj_start/obj_end。通过校验的样本以 JSON 行格式追加写入generated.json字段包含text、subj、subj_start、subj_end、obj、obj_start、obj_end、relation、subj_type、obj_type与 TACRED 系列数据集的原始格式保持一致可直接并入训练数据。典型运行示例 python gpt3DA.py \ --api_key sk-xxx \ --demo_path ./data/tacred_demo.json \ --output_dir ./data/augmented \ --dataset tacred \ --k 3评估指标f1_score 的实现细节gpt3ICL.py 内置的f1_score函数在脚本结束时输出四项指标acc整体准确率预测与真实一致的样本占比micro_p微平均精确率预测为正类且正确 / 预测为正类总数micro_r微平均召回率预测为正类且正确 / 真实正类总数micro_f12 * p * r / (p r)。函数会自动识别负类NA 类标签——依次在[NA, na, no_relation, Other, Others, false, unanswerable]中查找当前数据集使用的负类名称gpt3ICL.py计算 P/R/F1 时排除负类与关系抽取领域以非 NA 类为关注对象的评测惯例一致。实现细节与注意事项PTB token 还原TACRED 系列数据集的 token 采用 PTB 分词标记脚本通过convert_token将-lrb-、-rrb-、-lsb-、-rsb-、-lcb-、-rcb-还原为(、)、[、]、{、}等正常字符保证送入模型的句子可读gpt3ICL.py。实体类型规范化示例中的实体类型统一转为小写空格形式其中MISC展开为miscellaneous避免缩写造成模型理解偏差gpt3ICL.py。随机性ICL 提示构建前对关系列表与每个关系内的示例做random.shuffle多次运行可抽样不同演示组合数据生成前同样对演示数据整体洗牌。适用前提与限制两个脚本均基于 OpenAI 旧版补全接口openai.Completion.create与text-davinci-003模型依赖openaiPython 包API 的可用性、计费配额与接口演进可能影响脚本的长期可用性。在迁移到ChatCompletion或更新模型时需相应调整调用方式。只读仓库说明本仓库为只读镜像上述脚本仅用于本地查看、安装依赖与运行运行前请确认数据集已按 JSON 格式准备好且字段与脚本预期一致。引用若使用本项目代码请引用下述论文完整书目信息见 README_CN.mdarticle{UnleashLLMRE, author {Xin Xu and Yuqi Zhu and Xiaohan Wang and Ningyu Zhang}, title {How to Unleash the Power of Large Language Models for Few-shot Relation Extraction?}, journal {The 4th Workshop on Simple and Efficient Natural Language Processing (SustaiNLP 2023)}, year {2023}, publisher Association for Computational Linguistics }赞分享人工智能NLP知识图谱深度学习【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址https://gitcode.com/gh_mirrors/de/DeepKE点击查看免费下载相关推荐DeepKE 实战如何用 GPT-3 大语言模型解锁少样本关系抽取UnleashLLMRE 完整指南DeepKE 实战如何用 GPT 3 大语言模型解锁少样本关系抽取UnleashLLMRE 完整指南 导读 本文基于 DeepKE 开源工具包中的 Unl人工智能NLP知识图谱深度学习DeepKE LLMICL基于大语言模型的少样本信息抽取、数据增强与指令式知识图谱构建实战DeepKE LLMICL基于大语言模型的少样本信息抽取、数据增强与指令式知识图谱构建实战 本指南围绕 DeepKE 仓库的 LLM 模块 example/l人工智能NLP知识图谱深度学习DeepKE 少样本关系抽取数据增强实战基于 nlpaug / nlpcda 的 DA 工具链完整指南DeepKE 少样本关系抽取数据增强实战基于 nlpaug / nlpcda 的 DA 工具链完整指南 本文聚焦 DeepKE 仓库中 example/re/人工智能NLP知识图谱深度学习上一篇黑苹果终极安装指南5步轻松实现PC完美运行macOS下一篇告别WebView2依赖噩梦手把手打造一体化部署方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表