码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • NLP | SimKGC论文详解及项目实现


     本文主要讲解了论文SimKGC:基于预训练语言模型的简单对比知识图谱补全的论文总结以及项目实现。

    论文题目:2022_SimKGC: Simple Contrastive Knowledge Graph Completion with Pre-trained Language Models

    论文地址:2022.acl-long.295.pdf (aclanthology.org)

    代码地址:intfloat/SimKGC: ACL 2022, SimKGC: Simple Contrastive Knowledge Graph Completion with Pre-trained Language Models (github.com)

    1.论文主要内容

    更多可参考【1】

    • KG通常由三元组(h,r,t)组成,其中h是头实体,r是关系,t是尾实体。
    • 受对比学习的启发,引入三种类型的负采样来提升基于文本的KGC方法
      • 批内负采样(IB)
      • 批前负采样(PB)
      • 自我负采样(SN)
    • 如果两个实体在知识图谱中通过一条短路径连接,两个实体更有可能相互关联。但是基于文本的KGC方法严重依赖语义匹配,而在一定程度上忽略了这种拓扑偏差,因此本文提出一种简单的重排策略(提高头实体的k跳邻居的分数),来缓解此类现象。

                          

    2.项目实现

    2.0.环境配置

    [我的:Ubuntu20.04+torch2.0.0+cuda11.6]

    1. git clone https://github.com/intfloat/SimKGC
    2. cd SimKGC
    3. pip install scipy

    2.1.下载数据集

    代码中使用了三种数据集

    本文只使用一种,也就是wn18rr。项目中提供了脚本文件进行下载并进行数据处理。

    bash scripts/preprocess.sh WN18RR

     会生成json文件

    其中entities.json为实体字典,relations.json为关系,

    2.2.训练模型 

    训练模型并指定输出目录

    OUTPUT_DIR=./checkpoint/wn18rr/ bash scripts/train_wn.sh

     如果运行出错请参考【PS1】,成功的话会打印模型结构参数等

    默认是50个epoch,

    checkpoint 保存为mdl文件

     

    2.3.验证

    bash scripts/eval.sh ./checkpoint/wn18rr/model_last.mdl WN18RR

     评价标准为MRR【3】

    只训练了18个epoch,结果与论文中相似~

    3.代码详解

    3.1.models.py

     使用模型CustomBertModel

    使用bert的预训练权重,微调模型,返回知识图谱三要素的向量(logits,labels,hr_vector, tail_vector,head_vector)

    3.2.trainer.py

    输入:head_id, relation, tail_id

    round()

    使用方法:round(number,digits)

    digits>0,四舍五入到指定的小数位
    digits=0, 四舍五入到最接近的整数
    digits<0 ,在小数点左侧进行四舍五入
    如果round()函数只有number这个参数,等同于digits=0
    四舍五入规则:

    要求保留位数的后一位<=4,则舍去3,如5.214保留小数点后两位,结果是5.21
    要求保留位数的后一位“=5”,且该位数后面没有数字,则不进位,如5.215,结果为5.21
    要求保留位数的最后一位“=5”,且该位数后面有数字,则进位,如5.2151,结果为5.22
    要求保留位数的最后一位“>=6”,则进位。如5.216,结果为5.22

    3.3.evaluate.py

    定义平均秩和mrr的算法

    3.4.triplet.py

    知识图谱中三元组定义,实体id,实体名,实体描述都为字符串。

    在实体字典中,包含了EntityDict,LinkGraph的基础定义。

    3.5.proprocess.py

    定义了三个数据集的数据预处理方法

    过程中遇到的问题与解决【PS】

    【PS1】RuntimeError: Failed to import transformers.models.bert.modeling_bert because of the following error (look up to see its traceback):too many values to unpack (expected 4)

    系统默认模型 

    修改/SimKGC/scripts/train_wn.sh 脚本文件后

    显示ValueError: too many values to unpack (expected 4)

    参考CUDA setup · Issue #95 · TimDettmers/bitsandbytes (github.com)

    1. #先查看自己nvcc版本
    2. nvcc --version
    3. #根据自己的版本去修改
    4. git clone https://github.com/TimDettmers/bitsandbytes
    5. cd bitsandbytes
    6. CUDA_VERSION=116 make cuda11x
    7. python setup.py install

     运行后就好使啦~

    参考文献

    【1】【精选】知识图谱顶会论文(ACL-2022) ACL-SimKGC:基于PLM的简单对比KGC_simkgc: simple contrastive knowledge graph complet_Cheng_0829的博客-CSDN博客

    【2】论文浅尝 | SimKGC:基于预训练语言模型的简单对比知识图谱补全-CSDN博客 

    【3】Mean reciprocal rank - Wikipedia 

  • 相关阅读:
    娄底疾控中心实验室设计理念说明
    MyBatis-Plus多数据源dynamic-datasource解决多数据源Redis Key 重复问题
    week10|查阅文章
    塔望3W消费战略全案丨大闸蟹上品标准的力量
    C语言:表达式求值详解
    VUE3搭载到服务器
    QGISC++源码编译
    shell脚本 重试 分文件 多进程
    抖音矩阵系统源码,抖音矩阵系统定制开发look
    Java类的加载过程
  • 原文地址:https://blog.csdn.net/weixin_44649780/article/details/134500237
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号