技术动态 | 清华大学开源OpenKE:知识表示学习平台

本文转载自公众号机器之心,选自 THUNLP。                                                    



清华大学自然语言处理实验室近日发布了 OpenKE 平台,整合了 TransE、TransH、TransR、TransD、RESCAL、DistMult、HolE、ComplEx 等算法的统一接口高效实现,以及面向 WikiData 和 Freebase 预训练知识表示模型。该项目旨在为开发者与研究人员提供便利。


  • 项目链接:http://openke.thunlp.org

  • GitHub:https://github.com/thunlp/OpenKE


OpenKE 是一个开源的知识表示学习平台,由 THUNLP 基于 TensorFlow 工具包开发。在 OpenKE 中,我们提供了快速和稳定的工具包,包括最流行的知识表示学习(knowledge representation learning,KRL)方法。该框架具有容易拓展和便于设计新的知识表示学习模型的特点。


该框架有如下特征:


  • 拥有配置多种训练环境和经典模型的简易接口;

  • 对高性能 GPU 训练进行加速和内存优化;

  • 高效轻量级的 C++实现,用于快速部署和多线程加速;

  • 现有大规模知识图谱的预训练嵌入,可用于多种相关任务;

  • 长期维护以修复 bug,满足新需求。


基准测试


一些数据集如 FB15K、FB13、WN18 和 WN11 通常用于知识表示学习的基准测试。我们以 FB15K 和为 WN18 为例介绍我们的框架的输入文件的格式。


数据集有以下五种格式:


  • train.txt:训练文件,每行以 (e1, e2, rel) 格式书写,第一行是三元组的数量;

  • valid.txt:验证文件,和 train.txt 格式一样;

  • test.txt:测试文件,和 train.txt 格式一样;

  • entity.txt:所有的实体和对应的 id,每行一个实体及其 id;

  • relation2id.txt:所有的关系和对应的 id,每行一个关系及其 id。


还可以从以下地址下载原始数据:


FB15K、WN18:https://everest.hds.utc.fr/doku.php?id=en:transe

相关论文:Translating Embeddings for Modeling Multi-relational Data(2013)


FB13、WN11:http://cs.stanford.edu/~danqi/data/nips13-dataset.tar.bz2

相关论文:Reasoning With Neural Tensor Networks for Knowledge Base Completion


工具包


我们提供了多个知识表示学习的工具包,包括以下四个资源库:


OpenKE


这是一个基于 TensorFlow 的知识表示学习(KRL)的高效实现。我们使用 C++实现了一些基础操作,如数据预处理和负采样。每一个特定的模型都用 TensorFlow 和 Python 接口实现,因此能方便地在 GPU 上运行模型。


OpenKE 提供了训练和测试多种 KRL 模型的简易接口,无需在冗余数据处理和内存控制上花费太多功夫。OpenKE 实现了一些经典和高效的模型用于支持知识表示学习,这些模型包括:


  • TransE

http://papers.nips.cc/paper/5071-translating-embeddings-for-modeling-multi-relational-data.pdf


  • TransH

https://www.aaai.org/ocs/index.php/AAAI/AAAI14/paper/viewFile/8531/8546


  • TransR

https://www.aaai.org/ocs/index.php/AAAI/AAAI15/paper/viewFile/9571/9523/


  • TransD

http://anthology.aclweb.org/P/P15/P15-1067.pdf


  • RESCAL

http://www.icml-2011.org/papers/438_icmlpaper.pdf


  • DistMult

https://arxiv.org/pdf/1412.6575.pdf


  • HolE

https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/viewFile/12484/11828


  • ComplEx

http://proceedings.mlr.press/v48/trouillon16.pdf


我们提供了训练这些模型的教程:http://openke.thunlp.org/index/documentation。

此外,我们还使用一些简单的例子展示了如何基于 OpenKE 构建一个新模型。


Github 链接:https://github.com/thunlp/OpenKE


KB2E


KB2E 是一些知识嵌入模型的早期实现,我们之前的研究中使用了很多资源。这些代码将被逐渐纳入新框架 OpenKE。这是一个基础且稳定的知识图谱嵌入工具包,包括 TransE、TransH、TransR 和 PTransE。该工具包的实现遵循模型的原始文件设置,使其在研究实验中保持稳定。


GitHub 链接:https://github.com/thunlp/KB2E


Fast-TransX


这是 TransE 及其扩展模型用于知识表示学习的高效轻量级实现,包括 TransH、TransR、TransD、TranSparse 和 PTransE。整个框架的底层设计为实现加速作出改变,且该框架支持多线程训练。Fast-TransX 旨在使用 OpenKE 框架实现快速、简单的部署。


GitHub 链接:https://github.com/thunlp/Fast-TransX


TensorFlow-TransX


OpenKE 基于 TensorFlow 的简易版,包括 TransE、TransH、TransR 和 TransD。与 Fast-TransX 类似,TensorFlow-TransX 旨在避免使用 OpenKE 框架产生的复杂封装。


GitHub 链接:https://github.com/thunlp/TensorFlow-TransX


预训练嵌入


现有大规模知识图谱使用 OpenKE 对嵌入进行预训练(目前都通过 TransE 进行训练。必要时会介绍更多模型)。


知识图谱和嵌入包括以下五个文件:


  • 实体的嵌入:知识图谱中每个实体的嵌入。数据是二进制格式,每一行有一个嵌入。每一行用大量连续浮点表示这一行的嵌入。

  • 关系嵌入:知识图谱中每一个关系的嵌入。数据是二进制格式,每一行有一个嵌入。每一行用大量连续浮点表示这一行的嵌入。

  • Triple2id:知识图谱的知识三元组与对应序列号之间的映射。每一行有一个三元组和序列号,二者用一个 tab 隔开。

  • Entity2id:知识图谱的实体与对应序列号之间的映射。每一行有一个实体和序列号,二者用一个 tab 隔开。

  • Relation2id:知识图谱的关系与对应序列号之间的映射。每一行有一个关系和序列号,二者用一个 tab 隔开。


文件描述和下载链接:



Wikidata:http://openke.thunlp.org/download/wikidata


Freebase:http://openke.thunlp.org/download/freebase


如何阅读二进制文件:


  • Python


  1. #Python codes to read the binary files.

  2. import numpy as np

  3. vec = np.memmap(filename , dtype='float32', mode='r')


  • C/C++


  1. //C(C++) codes to read the binary files.

  2. #include <cstring>

  3. #include <cstdio>

  4. #include <cstdlib>

  5. #include <sys/mman.h>

  6. #include <fcntl.h>

  7. #include <unistd.h>

  8. #include <sys/stat.h>


  9. struct stat statbuf;

  10. int fd;

  11. float* vec;


  12. int main() {

  13.  if(stat(filename, &statbuf)!=-1) {

  14.    fd = open("relation2vec.bin", O_RDONLY);

  15.    vec = (float*)mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);

  16.  }

  17.  return 0;

  18. }



本文为机器之心编译,转载请联系机器之心公众号获得授权




OpenKG.CN


中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

点击阅读原文,进入 OpenKG 博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多任务学习时转角遇到Bandit老虎机

注&#xff1a;本文的正文干货转载并少量修改自大佬覃含章&#xff08;知乎id同名&#xff0c;知乎必关的数值优化大佬啊啊&#xff09;的一篇知乎回答&#xff0c;链接https://www.zhihu.com/question/53381093/answer/562235053一个转角事情是这样的&#xff0c;最近小夕在做…

NLP13-LDA引发的一系活动

摘要&#xff1a; 目标是想了解也学习LDA&#xff0c;寻找学习LDA相关资料&#xff0c;学习LDA相关的概率基础&#xff0c;对于LSI&#xff0c;pLsa,LDA作为主题模型的对比&#xff1b;然后到LDA本身&#xff0c;对LDA相关的概率基础进行学习。把相关资料疏理与集合起来。

王昊奋 | 从聊天机器人到虚拟生命:AI技术的新机遇

本文转载自公众号中国人工智能学会。 10月12-13日&#xff0c;第七届中国智能产业高峰论坛在佛山开幕&#xff0c;在NLP与服务机器人专题论坛上&#xff0c;深圳狗尾草CTO王昊奋发表了主题为《从聊天机器人到虚拟生命&#xff1a;AI技术的新机遇》的精彩演讲。 以下是王昊奋老师…

【Java】如何理解Java中的异常机制?

1 异常的概念 程序在执行过程中出现非正常线性&#xff0c;导致JVM非正常停止异常不是语法错误 2 异常的分类 Throwable是所有错误或异常的超类Exception是编译期间异常&#xff08;写代码时IDE会报错&#xff09;RuntimeException时运行期异常&#xff0c;程序运行时出现的…

文本匹配相关方向总结(数据,场景,论文,开源工具)

Motivation 前不久小夕在知乎上写了一个回答《NLP有哪些独立研究方向》&#xff0c;于是有不少小伙伴来问分类和匹配的参考资料了&#xff0c;鉴于文本分类的资料已经超级多了&#xff0c;就不写啦&#xff08;不过分类相关的tricks可以看之前写的这篇文章《文本分类重要tricks…

机器学习】LDA线性判别分析

【机器学习】LDA线性判别分析1. LDA的基本思想2. LDA求解方法3. 将LDA推广到多分类4. LDA算法流程5. LDA和PCA对比【附录1】瑞利商与广义瑞利商线性判别分析 (Linear Discriminant Analysis&#xff0c;LDA)是一种经典的线性学习方法&#xff0c;在二分类问题上因为最早由[Fish…

科普 | 动态本体简介

本文转载自知乎专栏知识图谱和智能问答。 1 近年来&#xff0c;随着语义Web的兴起&#xff0c;本体技术受到了广泛关注。很多大型跨国公司都开始研究本体技术。谷歌于2012年提出了知识图谱的项目&#xff0c;旨在利用本体技术来提高搜索的精度和更智能化的知识浏览。国内的互联…

文本匹配相关方向打卡点总结

Motivation前不久小夕在知乎上写了一个回答《NLP有哪些独立研究方向》[1]&#xff0c;于是有不少小伙伴来问分类和匹配的参考资料了&#xff0c;鉴于文本分类的资料已经超级多了&#xff0c;就不写啦&#xff08;不过分类相关的tricks可以看之前写的这篇文章《文本分类重要tric…

深入理解K-Means聚类算法

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/taoyanqi8932/article/details/53727841 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit…

刘挺 | 从知识图谱到事理图谱

本文转载自 AI科技评论。 在“知识图谱预见社交媒体”的技术分论坛上&#xff0c;哈尔滨工业大学刘挺教授做了题为“从知识图谱到事理图谱”的精彩报告。会后AI科技评论征得刘挺教授的同意&#xff0c;回顾和整理了本次报告的精彩内容。 刘挺教授 刘挺教授的报告内容分为四部分…

我对JVM的理解

一、JVM简介 JVM总体上是由类装载子系统&#xff08;ClassLoader&#xff09;、运行时数据区、执行引擎、内存回收这四个部分组成。 其中我们最为关注的运行时数据区&#xff0c;也就是JVM的内存部分则是由方法区&#xff08;Method Area&#xff09;、JAVA堆&#xff0…

【LeetCode】4月4日打卡-Day20-接雨水

描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xff0c;在这种情况下&#xff0c;可以接 6 个单位的雨水&#xff08;蓝色部分表示雨水&a…

算法与数据结构--空间复杂度O(1)遍历树

大家好~我叫「小鹿鹿鹿」&#xff0c;是本卖萌小屋的第二位签约作&#xff08;萌&#xff09;者&#xff08;货&#xff09;。和小夕一样现在在从事NLP相关工作&#xff0c;希望和大家分享NLP相关的、不限于NLP的各种小想法&#xff0c;新技术。这是我的第一篇试水文章&#xf…

PCA主成分分析学习总结

大概主成分分析&#xff08;Principal components analysis&#xff0c;以下简称PCA&#xff09;是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA&#xff0c;下面我们就对PCA的原理做一个总结。首先…

技术动态 | 大规模中文概念图谱CN-Probase正式发布

本文转载自公众号知识工场。 历时多年的研发&#xff0c;复旦大学知识工场实验室正式推出大规模中文概念图谱——CN-Probase&#xff0c;用于帮助机器更好的理解人类语言。概念图谱中包含实体&#xff08;比如“刘德华”&#xff09;、概念&#xff08;比如“演员”&#xff09…

生产Docker应用重启排查经历

一、现象描述 近期&#xff0c;生产云平台监控发生Docker应用重启次数过多事故报警&#xff0c;经观察发现某些Docker应用不定期地出现重启现象&#xff0c;已严重影响服务正常提供 生产应用重启的判断条件&#xff1a;健康检查连续3次检查不通过 生产健康检查间隔时间设置为…

【Java】深入理解Java线程

1 相关概念 并发&#xff1a;两个或多个事件在同一时间段内发生【多个任务交替执行】 并行&#xff1a;两个或多个事件在同一时刻发生【多个任务同时执行】 进程&#xff1a;进入内存的程序 内存&#xff1a;所有应用程序都要进入到内存中执行 临时存储RAM 线程&#xff1a;进…

机器学习——多元线性回归分析(multiple regression)及应用

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/loveliuzz/article/details/78006493 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_vi…

肖仰华 | 知识图谱研究的回顾与展望

本文转载自公众号知识工场。 本文整理自2017年10月19日肖仰华教授在知识图谱前沿技术课程&#xff08;华东师范大学站&#xff09;所做的报告&#xff0c;报告的题目为《知识图谱研究的回顾与展望》。 大家好&#xff0c;很多人在对知识图谱的研究或者落地方面都表现出了极大的…

Java应用性能调优工具介绍及实践

一、背景 &#xff08;1&#xff09;、随着微服务架构的逐渐推广&#xff0c;一个大型的单个应用程序被拆分为数个微服务系统&#xff0c;这为研发人员的本地调试跟踪带来困难 &#xff08;2&#xff09;、在微服务架构中&#xff0c;由于业务的复杂性&#xff0c;常常一个业务…