ARTICLE DETAIL

资讯详情

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

DeepKE-cnSchema 实战指南:基于 cnSchema 的中文实体识别与关系抽取开箱即用

DeepKE-cnSchema 实战指南:基于 cnSchema 的中文实体识别与关系抽取开箱即用 人工智能NLP知识图谱深度学习【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址https://gitcode.com/gh_mirrors/de/DeepKE点击查看免费下载DeepKE-cnSchema 是开源知识抽取工具 DeepKE 面向中文知识图谱构建推出的开箱即用特别版内置基于中文预训练模型训练好的命名实体识别NER与关系抽取RE模型可抽取 28 种实体类型与 50 种关系类型。本文以 example/triple/cnschema 目录为对象完整讲解模型下载、基线效果、Schema 支持范围、快速加载流程以及源码级实现原理读完即可将任意中文文本端到端抽取为符合 cnSchema 语义的 JSON-LD 三元组。1. 背景什么是 DeepKE-cnSchemaDeepKE 是一个支持低资源、长篇章、多模态场景的开源知识抽取工具可基于 PyTorch 实现命名实体识别、关系抽取和属性抽取。为了促进中文领域知识图谱构建、降低使用门槛项目提供了预训练好、支持 cnSchema 的特别版DeepKE-cnSchema支持开箱即用的中文实体抽取与关系抽取无需自行标注、训练可抽取50 种关系类型和28 种实体类型实体类型覆盖人物、地点、城市、机构等通用类别关系类型覆盖祖籍、出生地、国籍、朝代等常见类别抽取结果直接映射到 cnSchema 语义体系可输出 JSON-LD 格式便于接入知识图谱构建流程。cnSchema 是面向中文信息处理、利用知识图谱与 NLP 技术融合结构化与文本数据的开放 Schema 体系支持跨数据源、跨领域、跨语言的开放数据自动化处理为智能机器人、语义搜索、智能计算等场景提供 schema 层面的支持。DeepKE-cnSchema 通过内置的relation.csv关系标签集、type.txt实体类型映射、url.txt关系到 cnSchema URI 的映射三份数据文件将模型输出与 cnSchema 语义体系衔接起来见 data 目录。2. 下载预训练中文模型DeepKE-cnSchema 为实体抽取与关系抽取分别提供了基于RoBERTa-wwm-ext, Chinese和BERT-wwm, Chinese训练的模型共 5 个可选模型模型简称功能Google 下载百度网盘下载DeepKE(NER), RoBERTa-wwm-ext, Chinese实体抽取PyTorchPytorch密码 u022DeepKE(NER), BERT-wwm, Chinese实体抽取PyTorchPytorch密码 1g0tDeepKE(NER), BiLSTM-CRF, Chinese实体抽取PyTorchPytorch密码 my4xDeepKE(RE), RoBERTa-wwm-ext, Chinese关系抽取PyTorchPytorch密码 78pqDeepKE(RE), BERT-wwm, Chinese关系抽取PyTorchPytorch密码 6psm下载建议中国大陆境内建议使用百度网盘下载点境外用户建议使用 Google 下载点。2.1 实体抽取NER模型的文件结构以 Pytorch 版DeepKE(NER), RoBERTa-wwm-ext, Chinese为例下载后得到的模型目录结构如下checkpoints_robert |- added_tokens.json # 额外增加词表 |- config.json # 整体参数 |- eval_results.txt # 验证结果 |- model_config.json # 模型参数 |- pytorch_model.bin # 模型权重 |- special_tokens_map.json # 特殊词表映射 |- tokenizer_config.bin # 分词器参数 |- vocab.txt # 词表其中config.json和vocab.txt与 Google 原版RoBERTa-wwm-ext, Chinese完全一致Pytorch 版本则额外包含pytorch_model.bin、config.json、vocab.txt三个关键文件。这一结构对应了 InferBert.py 中的InferNer.load_model它会从模型目录读取model_config.json获取label_map、max_seq_length、do_lower等配置再用BertForTokenClassification.from_pretrained(model_dir)与BertTokenizer.from_pretrained(model_dir, do_lower_case...)直接加载模型与分词器。2.2 关系抽取RE模型以 Pytorch 版DeepKE(RE), RoBERTa-wwm-ext, Chinese为例下载后为.pth 权重文件如re_bert.pth。该权重文件由 LMModel.py 中的LM.save生成加载时通过torch.load(path, map_locationdevice)还原。下载模型后即可直接进入第 5 节的快速加载流程进行实体关系抽取。3. 中文基线系统效果DeepKE 使用chinese-bert-wwm与chinese-roberta-wwm-ext作为基础模型训练得到 DeepKE-cnSchema 模型超参数均为预定义参数。以下为 README 公布的在中文实体识别与关系抽取数据集上的实验结果3.1 命名实体识别NER模型PRF1DeepKE(NER), RoBERTa-wwm-ext, Chinese0.80280.86120.8310DeepKE(NER), BERT-wwm, Chinese0.78410.85870.81973.2 关系抽取RE模型PRF1DeepKE(RE), RoBERTa-wwm-ext, Chinese0.78900.73700.7327DeepKE(RE), BERT-wwm, Chinese0.78610.75060.7473可见RoBERTa-wwm-ext在 NER 任务上全面占优F1 0.8310 vs 0.8197而 RE 任务中BERT-wwm的 F10.7473略高于RoBERTa-wwm-ext0.7327精度与召回各有取舍用户可按任务侧重点选择模型。4. 支持的 cnSchema 知识 Schema 类型DeepKE-cnSchema 面向中文知识图谱构建内置的 Schema 类型可以直接通过 data/type.txt 确认。该文件每行是中文类型名 英文代码的映射共定义了 28 种实体类型NER 模型输出的 BIO 标签如B-YAS、I-QEE即对应其中的英文代码代码实体类型代码实体类型YAS人物KEJ历史人物TOJ影视作品ZDI学校NGS目物种CAT企业QCV生物GCK出版社OKBNumberFQK书籍BQFDateBAK音乐专辑CAR国家RET城市ZFM网站QZP景点EMT网络小说QAQ电视综艺UER图书作品ZRE机构QEE歌曲TDZ作品UFT地点CVC语言GJS气候PMN学科专业SVA行政区ANOText关系侧data/relation.csv 定义了关系标签集对应文档所述 50 种关系类型。从 conf/embedding.yaml 中的num_relations: 51可以推断关系分类层输出维度为 51即 50 种关系类别外加 1 个额外类别如无关系LM.fc nn.Linear(cfg.hidden_size, cfg.num_relations)与之对应。而 data/url.txt 则将每种关系映射到 cnSchema 的规范 URI如歌手 →https://cnschema.openkg.cn/item/歌手/16693#viewPageContent供 JSON-LD 输出使用。5. 快速加载从文本到三元组的完整流程下载模型后用户可以直接使用 example/triple/cnschema 中的代码进行端到端三元组抽取只需两个步骤步骤 1修改预测配置编辑 conf/predict.yaml设置三个关键字段# text: 此次合作达成后上述艺人的歌曲已经可以在网易云音乐听到其中包括新生代们听到旋律就可以唱出歌词的田馥甄的《小幸运》、《寂寞寂寞就好》 text: 此外网易云平台还上架了一系列歌曲其中包括田馥甄的《小幸运》等 nerfp: xxx/checkpoints_bert refp: xxx/re_bert.pthtext待预测的中文句子nerfp已下载的 NER 模型文件夹地址refp已下载的 RE 模型 .pth 文件地址。步骤 2运行预测python predict.py预测期间会依次输出各中间步骤结果。以输入文本此外网易云平台还上架了一系列歌曲其中包括田馥甄的《小幸运》等为例完整的四段输出如下1NER 模型输出BIO 标签序列[(田, B-YAS), (馥, I-YAS), (甄, I-YAS), (小, B-QEE), (幸, I-QEE), (运, I-QEE)]2实体合并与类型映射后的结果{田馥甄: 人物, 小幸运: 歌曲}3RE 模型对实体对的关系判定与置信度田馥甄 和 小幸运 在句中关系为歌手置信度为0.92。4JSON-LD 格式化输出{ context: { 歌手: https://cnschema.openkg.cn/item/%E6%AD%8C%E6%89%8B/16693#viewPageContent }, id: 田馥甄, 歌手: { id: 小幸运 } }使用限制说明如果单句中存在超过两个以上的实体部分实体对可能预测不准原因是这些实体对并未出现在训练集中需要进一步人工判断。这是文档明确标注的使用边界批量抽取时建议对置信度较低或实体对较新的结果进行复核。6. 源码级拆解predict.py 的完整调用链快速加载的背后是 predict.py 中一条清晰的NER → 实体配对 → RE → JSON-LD流水线。逐段拆解如下6.1 类型与 URI 映射表的加载入口main(cfg)首先读取两份映射文件从type.txt构建label2word标签代码 → 中文类型名用于把 NER 的B-YAS标签翻译为人物从url.txt构建rel2url关系名 → cnSchema URI用于 JSON-LD 的context构造。6.2 NER 推理InferNerNER 模型由 InferBert.py 的InferNer类承载核心要点包括模型结构BertNer(BertForTokenClassification)在forward中利用valid_ids屏蔽子词token对应的序列位置仅保留真实词word位置的输出再经 dropout 与classifier得到每个字的分类 logits预处理tokenize将中文按字切分后交给BertTokenizer同时记录valid_positions每个原始字对应 token 序列中的首个 token 标 1前后补[CLS]/[SEP]padding 到max_seq_length预测predict中torch.argmax得到标签softmax得到逐字置信度再按valid_ids还原到原始字符序列最后只保留非O标签的(字, 标签)对。6.3 实体合并与两两配对predict.py随后按 BIO 规则合并实体遇到B-开头标签开启新实体连续I-同类型标签则累加字符合并完成后用label2word把标签代码映射为中文类型名得到{田馥甄: 人物, 小幸运: 歌曲}这样的实体字典。接着对所有实体做两两配对entity_len层嵌套循环为每个实体对构造包含sentence、head、tail、head_type、tail_type的实例。6.4 RE 推理LMBERT BiLSTM 分类层每个实体对都会调用_preprocess_data通过utils.load_csv见 utils.py读取relation.csvpreprocess._handle_relation_data构造关系标签集preprocess._lm_serialize完成 LM 侧的序列化实体类型/位置标记替换等对应replace_entity_with_type、replace_entity_with_scope配置。随后由 LMModel.py 的LM模型完成分类BERT 编码 → BiLSTM取最后一层隐状态→ Dropout → Linear(51)BERT 部分通过BertModel.from_pretrained(cfg.lm_file, num_hidden_layerscfg.num_hidden_layers)加载lm_file默认指向hfl/chinese-bert-wwmBiLSTM 部分由RNN类实现支持LSTM/GRU/RNN三种单元、双向、pack_padded_sequence处理变长序列最终torch.softmax取最大概率即关系类别与置信度输出田馥甄 和 小幸运 在句中关系为歌手置信度为0.92。6.5 JSON-LD 输出get_jsonld(head, rel, tail, url)调用pyld.jsonld.compact将{id: head, rel: {id: tail}}与{rel: url}上下文压缩为标准的 JSON-LD 文档rel2url确保context中的关系 URI 直接指向 cnSchema 词条从而让抽取结果可以直接汇入知识图谱。7. 配置文件全景与参数详解该目录采用 Hydra 配置体系conf/config.yaml 通过defaults聚合全部子配置cwd: ??? defaults: - hydra/output: custom - preprocess - train - embedding - predict - model: lm各子配置的职责与关键参数如下7.1 数据预处理 conf/preprocess.yaml参数默认值说明preprocessTrue是否需要预处理数据参数未变化时可关闭以节省时间data_pathdata原始数据存放位置out_pathdata/out预处理后文件存放位置chinese_splitTrue是否需要中文分词replace_entity_with_typeTrue是否用实体类型替换实体词replace_entity_with_scopeTrue是否用三元组头尾标记替换实体词min_freq3构建 vocab 时的最低词频pos_limit30句长限制指句子中词语相对 entity 的位置限制如[-30, 30]embed 时整体 31 变为[1, 61]共 62 个 position token0 留给 pad7.2 训练超参数 conf/train.yaml参数默认值说明seed1随机种子use_gpu/gpu_idTrue / 0GPU 使用开关与设备号epoch50训练轮数batch_size32批大小learning_rate3e-4学习率lr_factor0.7学习率衰减率lr_patience3学习率衰减的等待 epoch 数weight_decay1e-3L2 正则early_stopping_patience6早停等待轮数log_interval10日志打印间隔plot_utilsmatplot绘图工具可选 matplot / tensorboard7.3 词嵌入 conf/embedding.yamlword_dim: 60、pos_dim: 10、dim_strategy: sum可选cat/sum控制词向量与位置向量的融合方式num_relations: 51定义了关系分类层输出维度50 种关系 1 个额外类别。7.4 LM 模型参数 conf/model/lm.yamllm_file: hfl/chinese-bert-wwm预训练语言模型来源注释中亦给出bert-base-chinese下载用法与pretrained本地加载两种方式num_hidden_layers: 1Transformer 层数base BERT 为 12 层数据量较小时调低收敛更快、效果更好type_rnn: LSTMRNN 单元类型可选RNN/GRU/LSTMinput_size: 768BERT 输出维度hidden_size: 100必须为偶数num_layers: 1dropout: 0.3bidirectional: Truelast_layer_hn: True。7.5 预测配置 conf/predict.yaml即第 5 节所述text、nerfp、refp三个字段。config.yaml中cwd: ???为运行时由hydra.utils.get_original_cwd()填充。8. 二次开发与运行环境依赖目录下 requirements.txt 声明了运行所需依赖NER 侧依赖pytorch_transformersRE 侧依赖transformers、torchJSON-LD 输出依赖pyld预处理predict.py引用的_handle_relation_data、_lm_serialize位于 preprocess.py如需调整实体标记策略如关闭replace_entity_with_type可配合preprocess.yaml修改后重新生成数据自行训练若需在自有数据上训练conf下已提供完整的train.yaml、embedding.yaml、model/lm.yaml训练配置LMModel.py中的LM.save定义了权重保存逻辑输出checkpoints/时间戳/lm_epoch{N}.pth可参考标准任务的训练入口构建训练脚本运行前提预训练模型需按第 2 节下载并解压到本地NER 模型路径指向文件夹含model_config.jsonRE 模型路径指向.pth 文件。9. 注意事项多实体句子的局限单句中实体超过两个时未在训练集中出现过的实体对可能预测不准建议进一步人工复核免责声明该项目内容仅供技术研究参考不作为任何结论性依据用户可在许可证范围内自由使用模型但项目不对因使用造成的直接或间接损失负责引用如果本项目资源或技术对研究有帮助欢迎在论文中引用 DeepKE 论文Ningyu Zhang 等EMNLP 2022 System DemonstrationsDeepKE: A Deep Learning Based Knowledge Extraction Toolkit for Knowledge Base Population。综上DeepKE-cnSchema 以下载即用的方式把中文 NER 与 RE 的工程门槛降到了最低同时通过 cnSchema 类型体系与 JSON-LD 输出无缝衔接知识图谱构建链路是中文知识抽取场景下值得直接落地的开箱即用方案。赞分享人工智能NLP知识图谱深度学习【免费下载链接】DeepKE[EMNLP 2022] An Open Toolkit for Knowledge Graph Extraction and Construction项目地址https://gitcode.com/gh_mirrors/de/DeepKE点击查看免费下载相关推荐DeepKE-cnSchema 开箱即用指南基于 cnSchema 的中文实体与关系知识抽取实战DeepKE cnSchema 开箱即用指南基于 cnSchema 的中文实体与关系知识抽取实战 DeepKE cnSchema 是开源知识抽取工具包 Dee人工智能NLP知识图谱深度学习DeepKE-cnSchema 开箱即用实战基于 cnSchema 的中文实体识别、关系抽取与三元组联合抽取指南DeepKE cnSchema 开箱即用实战基于 cnSchema 的中文实体识别、关系抽取与三元组联合抽取指南 DeepKE 是开源的 知识图谱抽取与构建工人工智能NLP知识图谱深度学习DeepKE-cnSchema 实践指南中文知识图谱开箱即用的实体抽取与关系抽取DeepKE cnSchema 实践指南中文知识图谱开箱即用的实体抽取与关系抽取 DeepKE 是一个基于 PyTorch 的开源知识图谱抽取与构建工具而人工智能NLP知识图谱深度学习上一篇Windows Subsystem for Android实战指南在Windows 11无缝运行Android应用 | 写给开发者的跨平台解决方案下一篇BrewUI ViewModel 规范如何划清被动视图与 *Item 展示类型的边界创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表