www.teandq.com
晓安科普

知识图谱生成器(知识图谱软件)深度揭秘

2023-10-04Aix XinLe

文本匹配任务在自然语言处理领域中是非常重要的基础任务,一般用于研究两段文本之间的关系。

知识图谱生成器(知识图谱软件)深度揭秘

 

文本匹配任务在自然语言处理领域中是非常重要的基础任务,一般用于研究两段文本之间的关系文本匹配任务存在很多应用场景,如信息检索、问答系统、智能对话、文本鉴别、智能推荐、文本数据去重、文本相似度计算、自然语言推理、问答系统、信息检索等,这些自然语言处理任务在很大程度上都可以抽象成文本匹配问题,比如信息检索可以归结为搜索词和文档资源的匹配,问答系统可以归结为问题和候选答案的匹配,复述问题可以归结为两个同义句的匹配。

而在知识融合过程中的关键技术是实体对齐,又被称为实体匹配,其旨在推断来自不同数据集合中的不同实体是否映射到物理世界中同一对象的处理过程实体对齐的终极目标是将多源知识库中的实体建立映射关系,也正因如此,文本匹配算法可以在知识融合过程中针对非结构化文本进行较好的语义对齐,建立映射关系,具体方案如下图所示。

在粗选阶段,我们需要根据知识库寻找相似实体对,通过精准匹配和部分匹配的方式进行实体簇的粗选其中,精准匹配主要采用同名召回、同音召回、别名召回三类策略部分匹配主要采用 jaccard 距离等方法构建倒排,根据阈值进行挑选。

在精排阶段,我们根据粗选出来的实体对,构建 Pair-wise 类特征,进行精细算分根据特征的种类,可以划分为标签、属性、非结构化文本三类特征在实际对齐任务中,头尾部的实体经常缺失各种关键属性,难以判断实体是否可以对齐,此时就利用非结构化文本提供关键信息,这里就可以通过使用飞桨ERNIE-Gram模型将根据计算的三类特征进行实体对齐。

由于各领域的 schema 不同,涉及到的属性类特征也不尽相同故根据对数据的分析,为 schema 相差较大的领域设计不同的 GBDT模型,最终完成对齐本文主要讲解精排阶段的文本匹配算法,更多方案和技术细节请参考下述项目。

项目链接https://aistudio.baidu.com/aistudio/projectdetail/5456683?channelType=0&channel=0项目合集https://aistudio.baidu.com/aistudio/projectdetail/5427356?contributionType=1

01融合方案操作步骤▎环境版本要求环境安装需根据 Python 和飞桨框架的版本要求进行选择■ Python3版本要求python3.7及以上版本,参考 https://www.python.org/■

飞桨框架版本要求飞桨框架2.0+版本,参考https://www.paddlepaddle.org.cn/documentation/docs/zh/install/pip/macos-pip.html

■ 飞桨环境的安装需首先保证 Python 和 pip 是64bit,且处理器架构为 x86_64(或称作 x64、Intel 64、AMD64)目前飞桨暂不支持 arm64架构(mac M1 除外,飞桨已支持 Mac M1 芯片)。

▎数据集简介LCQMC[1]是百度知道领域的中文问题匹配数据集,以解决中文领域大规模问题匹配该数据集从百度知道的不同领域用户问题中抽取构建数据部分数据集展示如下:西安下雪了?是不是很冷啊? 西安的天气怎么样啊?还在下雪吗? 0。

第一次去见女朋友父母该如何表现?第一次去见家长该怎么做 0猪的护心肉怎么切 猪的护心肉怎么吃 0显卡驱动安装不了,为什么? 显卡驱动安装不了怎么回事 1一只蜜蜂落在日历上(打一成语) 一只蜜蜂停在日历上(猜一成语) 1

▎模型情况在 ERNIE-Gram模型[2]发布以前,学界工作主要集中在将 BERT 的掩码语言建模(MLM)的目标从 Mask 单个标记扩展到 N 个标记的连续序列,但这种连续屏蔽方法忽略了对粗粒度语言信息的内部依赖性和相互关系的建模。

作为一种改进方法 ERNIE-Gram 采用了一种显式 n-gram 掩码方法,以加强对预训练中粗粒度信息的整合在 ERNIE-Gram 中,n-grams 被 Mask 并直接使用明确的 n-gram 序列号而不是 n 个标记的连续序列进行预测。

此外,ERNIE-Gram 采用了一个生成器模型,对可信的 n-gram 序列号进行采样,作为可选的 n-gram 掩码,并以粗粒度和细粒度的方式进行预测,以实现全面的 n-gram 预测和关系建模在论文中实验表明,ERNIE-Gram 在很大程度上优于 XLNet 和 RoBERTa 等预训练模型。

其中掩码的流程见下图所示

ERNIE-Gram模型充分地将粗粒度语言信息纳入预训练,进行了全面的 n-gram 预测和关系建模,消除之前连续掩蔽策略的局限性,进一步增强了语义 n-gram 的学习n-gram 关系建模的详细架构如下图所示,子图(b)中是一个 n-gram 抽样的例子,其中虚线框代表抽样模块,绿色的文本是原始 n-gram,蓝色的斜体文本是抽样的 n-gram。

本文不一一展开,更多算法原理和技术细节请参考原论文

为让同学们快速上手,本项目使用语义匹配数据集 LCQMC 作为训练集,基于 ERNIE-Gram 预训练模型训练了单塔 Point-wise 语义匹配模型,用户可以直接基于这个模型对文本对进行语义匹配的二分类任务。

(在文本匹配任务数据的每一个样本通常由两个文本组成 query 和 title类别形式为0或1,0表示 query 与 title 不匹配,1表示匹配)同时考虑到在不同应用场景下的需求,下面也将简单讲解一下不同类型的语义匹配模型和应用场景。

基于单塔 Point-wise 范式的语义匹配模型 Ernie_Matching模型精度高、计算复杂度高, 适合直接进行语义匹配二分类的应用场景基于单塔 Pair-wise 范式的语义匹配模型 Ernie_Matching模型精度高、计算复杂度高,对文本相似度大小的序关系建模能力更强,适合将相似度特征作为上层排序模块输入特征的应用场景。

基于双塔 Point-Wise 范式的语义匹配模型计算效率更高,适合对延时要求高、根据语义相似度进行粗排的应用场景▎模型训练与预测以中文文本匹配公开数据集 LCQMC 为示例数据集,可在训练集(train.tsv)上进行单塔 Point-wise 模型训练,并在开发集(dev.tsv)验证。

■ 模型训练%cd ERNIE_Gram !unset CUDA_VISIBLE_DEVICES !python -u -m paddle.distributed.launch --gpus "0" train_pointwise.py \

--device gpu \--save_dir ./checkpoints \--batch_size 32 \--learning_rate 2E-5\--save_step 1000 \--eval_step 200 \

--epochs 3# save_dir:可选,保存训练模型的目录;默认保存在当前目录checkpoints文件夹下# max_seq_length:可选,ERNIE-Gram 模型使用的最大序列长度,最大不能超过512, 若出现显存不足,请适当调低这一参数;默认为128。

# batch_size:可选,批处理大小,请结合显存情况进行调整,若出现显存不足,请适当调低这一参数;默认为32# learning_rate:可选,Fine-tune的最大学习率;默认为5e-5# weight_decay:可选,控制正则项力度的参数,用于防止过拟合,默认为0.0。

# epochs: 训练轮次,默认为3# warmup_proption:可选,学习率warmup策略的比例,如果0.1,则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减,默认为0.0。

# init_from_ckpt:可选,模型参数路径,热启动模型训练;默认为None# seed:可选,随机种子,默认为1000.# device: 选用什么设备进行训练,可选cpu或gpu如使用gpu训练则参数gpus指定GPU卡号。

预测结果部分展示globalstep3920,epoch:1,batch:3920,loss:0.13577,accu:0.92109,speed:22.31step/sglobalstep3930,epoch:

1,batch:3930,loss:0.15333,accu:0.91971,speed:18.52step/sglobalstep3940,epoch:1,batch:3940,loss:0.10362

,accu:0.92031,speed:21.68step/sglobalstep3950,epoch:1,batch:3950,loss:0.14692,accu:0.92146,speed:21.74

step/sglobalstep3960,epoch:1,batch:3960,loss:0.17472,accu:0.92168,speed:19.54step/sglobalstep3970,epoch:

1,batch:3970,loss:0.31994,accu:0.91967,speed:21.06step/sglobalstep3980,epoch:1,batch:3980,loss:0.17073

,accu:0.91875,speed:21.22step/sglobalstep3990,epoch:1,batch:3990,loss:0.14955,accu:0.91891,speed:21.51

step/sglobalstep4000,epoch:1,batch:4000,loss:0.13987,accu:0.91922,speed:21.74step/seval dev loss:0.30795

,accu:0.87253如果想要使用其他预训练模型如 ERNIE、BERT、RoBERTa 等,只需更换 model 和 tokenizer 即可# 使用 ERNIE-3.0-medium-zh 预训练模型。

model = AutoModel.from_pretrained(ernie-3.0-medium-zh) tokenizer = AutoTokenizer.from_pretrained(ernie-3.0-medium-zh)

# 使用 ERNIE 预训练模型# ernie-1.0#model = AutoModel.from_pretrained(ernie-1.0-base-zh))#tokenizer = AutoTokenizer.from_pretrained(

ernie-1.0-base-zh) # ernie-tiny# model = AutoModel.from_pretrained(ernie-tiny))# tokenizer = AutoTokenizer.from_pretrained(

ernie-tiny) # 使用 BERT 预训练模型# bert-base-chinese# model = AutoModel.from_pretrained(bert-base-chinese)

# tokenizer = AutoTokenizer.from_pretrained(bert-base-chinese) # bert-wwm-chinese# model = AutoModel.from_pretrained(

bert-wwm-chinese)# tokenizer = AutoTokenizer.from_pretrained(bert-wwm-chinese) # bert-wwm-ext-chinese

# model = AutoModel.from_pretrained(bert-wwm-ext-chinese)# tokenizer = AutoTokenizer.from_pretrained(

bert-wwm-ext-chinese) # 使用 RoBERTa 预训练模型# roberta-wwm-ext# model = AutoModel.from_pretrained(roberta-wwm-ext

)# tokenizer = AutoTokenizer.from_pretrained(roberta-wwm-ext) # roberta-wwm-ext# model = AutoModel.from_pretrained(

roberta-wwm-ext-large)# tokenizer = AutoTokenizer.from_pretrained(roberta-wwm-ext-large)NOTE:如需恢复模型训练,则可以设置 init_from_ckpt,如

init_from_ckpt=checkpoints/model_100/model_state.pdparams如需使用 ernie-tiny 模型,则需提前先安装 sentencepiece 依赖,如 pip install sentencepiece。

■ 模型预测!unset CUDA_VISIBLE_DEVICES!python -u -m paddle.distributed.launch --gpus "0" \predict_pointwise.py

\ --device gpu \ --params_path "./checkpoints/model_4000/model_state.pdparams"\ --batch_size 128 \ --max_seq_length 64 \ --input_file /home/aistudio/LCQMC/test.tsv

预测结果部分展示:{query: 这张图是哪儿, title: 这张图谁有, pred_label: 0} {query: 这是什么水果?, title: 这是什么水果怎么吃?, pred_label: 1} {

query: 下巴长痘痘疼是什么原因, title: 下巴长痘痘是什么原因?, pred_label: 1} {query: 北京的市花是什么?, title: 北京的市花是什么花?, pred_label

: 1} {query: 这个小男孩叫什么?, title: 什么的捡鱼的小男孩, pred_label: 0} {query: 蓝牙耳机什么牌子最好的?, title: 什么牌子的蓝牙耳机最好用, pred_label

: 1} {query: 湖南卫视我们约会吧中间的歌曲是什么, title: 我们约会吧约会成功歌曲是什么, pred_label: 0} {query: 什么鞋子比较好, title: 配什么鞋子比较好…

, pred_label: 1} {query: 怎么把词典下载到手机上啊, title: 怎么把牛津高阶英汉双解词典下载到手机词典上啊, pred_label: 0} {query: 话费充值哪里便宜

, title: 哪里充值(话费)最便宜?, pred_label: 1} {query: 怎样下载歌曲到手机, title: 怎么往手机上下载歌曲, pred_label: 1} {query: 苹果手机丢了如何找回?

, title: 苹果手机掉了怎么找回, pred_label: 1} {query: 考试怎么考高分?, title: 考试如何考高分, pred_label: 1}在深度学习模型构建上,飞桨框架支持动态图编程和静态图编程两种方式,两种方式下代码编写和执行方式均存在差异。

动态图编程体验更佳、更易调试,但是因为采用 Python 实时执行的方式,开销较大,在性能方面与 C++有一定差距静态图调试难度大,但是将前端 Python 编写的神经网络预定义为 Program 描述,转到 C++端重新解析执行,从而脱离了对 Python 的依赖,往往执行性能更佳,并且预先拥有完整网络结构也更利于全局优化。

同时,你可以进行基于静态图的部署预测和模型导出使用动态图训练结束之后,可以使用静态图导出工具 export_model.py 将动态图参数导出成静态图参数实现方式可参考如下指令:!pythonexport_model。

.py--params_pathcheckpoints/model_4000/model_state.pdparams --output_path=./output# 其中params_path是指动态图训练保存的参数路径,output_path是指静态图参数导出路径。

# 预测部署# 导出静态图模型之后,可以基于静态图模型进行预测,deploy/python/predict.py 文件提供了静态图预测示例执行如下命令:!python deploy/predict.py --model_dir ./output。

02结论▎项目小结该项目中还涉及部分对无监督模型以及有监督模型的对比内容,如下图所示。

结论如下:SimCSE模型适合缺乏监督数据,但是又有大量无监督数据的匹配和检索场景相比于 SimCSE模型,DiffCSE模型会更关注语句之间的差异性,具有精确的向量表示能力DiffCSE模型同样适合缺乏监督数据又有大量无监督数据的匹配和检索场景。

明显看到有监督模型中 ERNIE-Gram 比之前所有模型性能的优秀受篇幅限制影响,这里不详细展开模型的对比详情,感兴趣的同学可以点击下方链接详细了解同时欢迎同学们在飞桨AI Studio平台发挥自己的创造力和想象力。

项目链接https://aistudio.baidu.com/aistudio/projectdetail/5456683?channelType=0&channel=0项目合集https://aistudio.baidu.com/aistudio/projectdetail/5427356?contributionType=1

▎未来展望本项目主要围绕着特定领域知识图谱(Domain-specific Knowledge Graph,DKG)融合方案中的一环讲解了基于 ERNIE-Garm 的文本匹配算法希望看到这篇项目的开发者们,能够在此基础上共同努力共建知识图谱领域,走通知识抽取、知识融合、知识推理和质量评估的完整流程。

▎参考文献[1] Xin Liu, Qingcai Chen, Chong Deng, Huajun Zeng, Jing Chen, Dongfang Li, Buzhou Tang, LCQMC: A Large-scale Chinese Question Matching Corpus,COLING2018.

[2] Xiao, Dongling, Yu-Kun Li, Han Zhang, Yu Sun, Hao Tian, Hua Wu, and Haifeng Wang. “ERNIE-Gram: Pre-Training with Explicitly N-Gram Masked Language Modeling for Natural Language Understanding.”ArXiv:2010.12148 [Cs].

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186

知识知识图谱生成器(知识图谱软件)深度揭秘

2023-10-04Aix XinLe113

知识图谱生成器(知识图谱软件)深度揭秘文本匹配任务在自然语言处理领域中是非常重要的基础任务,一般用于研究两段文本之间的关系。…

科普全程干货360越狱版(360越狱版安装包下载)

2023-10-04Aix XinLe146

全程干货360越狱版(360越狱版安装包下载)【电脑报在线】这年头,谁还没有个秘密呢!大家别总往“艳照门”去想,很多时候大家都会用手机翻拍一些重要的文件,在手机里装一些不想让别人知道的APP…

探索中央十套探索发现全集(中央10套探索发现几点播出)学到了

2023-10-04Aix XinLe182

中央十套探索发现全集(中央10套探索发现几点播出)学到了05:29 人与自然。06:00 朝闻天下。09:06 生活圈。20:47 2023年中国农民丰收节晚会。22:40 三农群英汇。…

科学科学知识的两个特点是(近代科学知识体系的特点是)墙裂推荐

2023-10-04Aix XinLe195

科学知识的两个特点是(近代科学知识体系的特点是)墙裂推荐西方文艺复兴以来,特别是近代以来,科学取得了突飞猛进的发展,深刻的改变了世界面貌。当前科学继续在各个领域加速发展,人们已经相信科学将无所不能,人…

百科墙裂推荐360越狱版(360越狱版的源地址)

2023-10-04Aix XinLe111

墙裂推荐360越狱版(360越狱版的源地址)首先你机子必须越狱的。…