日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2024/7/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 技术动态 | 清华大学开源OpenKE:知识表示学习平台 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文轉(zhuǎn)載自公眾號機器之心,選自 THUNLP。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?



清華大學(xué)自然語言處理實驗室近日發(fā)布了 OpenKE 平臺,整合了 TransE、TransH、TransR、TransD、RESCAL、DistMult、HolE、ComplEx 等算法的統(tǒng)一接口高效實現(xiàn),以及面向 WikiData 和 Freebase 預(yù)訓(xùn)練知識表示模型。該項目旨在為開發(fā)者與研究人員提供便利。


  • 項目鏈接:http://openke.thunlp.org

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


OpenKE 是一個開源的知識表示學(xué)習(xí)平臺,由 THUNLP 基于 TensorFlow 工具包開發(fā)。在 OpenKE 中,我們提供了快速和穩(wěn)定的工具包,包括最流行的知識表示學(xué)習(xí)(knowledge representation learning,KRL)方法。該框架具有容易拓展和便于設(shè)計新的知識表示學(xué)習(xí)模型的特點。


該框架有如下特征:


  • 擁有配置多種訓(xùn)練環(huán)境和經(jīng)典模型的簡易接口;

  • 對高性能 GPU 訓(xùn)練進行加速和內(nèi)存優(yōu)化;

  • 高效輕量級的 C++實現(xiàn),用于快速部署和多線程加速;

  • 現(xiàn)有大規(guī)模知識圖譜的預(yù)訓(xùn)練嵌入,可用于多種相關(guān)任務(wù);

  • 長期維護以修復(fù) bug,滿足新需求。


基準(zhǔn)測試


一些數(shù)據(jù)集如 FB15K、FB13、WN18 和 WN11 通常用于知識表示學(xué)習(xí)的基準(zhǔn)測試。我們以 FB15K 和為 WN18 為例介紹我們的框架的輸入文件的格式。


數(shù)據(jù)集有以下五種格式:


  • train.txt:訓(xùn)練文件,每行以 (e1, e2, rel) 格式書寫,第一行是三元組的數(shù)量;

  • valid.txt:驗證文件,和 train.txt 格式一樣;

  • test.txt:測試文件,和 train.txt 格式一樣;

  • entity.txt:所有的實體和對應(yīng)的 id,每行一個實體及其 id;

  • relation2id.txt:所有的關(guān)系和對應(yīng)的 id,每行一個關(guān)系及其 id。


還可以從以下地址下載原始數(shù)據(jù):


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

相關(guān)論文:Translating Embeddings for Modeling Multi-relational Data(2013)


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

相關(guān)論文:Reasoning With Neural Tensor Networks for Knowledge Base Completion


工具包


我們提供了多個知識表示學(xué)習(xí)的工具包,包括以下四個資源庫:


OpenKE


這是一個基于 TensorFlow 的知識表示學(xué)習(xí)(KRL)的高效實現(xiàn)。我們使用 C++實現(xiàn)了一些基礎(chǔ)操作,如數(shù)據(jù)預(yù)處理和負采樣。每一個特定的模型都用 TensorFlow 和 Python 接口實現(xiàn),因此能方便地在 GPU 上運行模型。


OpenKE 提供了訓(xùn)練和測試多種 KRL 模型的簡易接口,無需在冗余數(shù)據(jù)處理和內(nèi)存控制上花費太多功夫。OpenKE 實現(xiàn)了一些經(jīng)典和高效的模型用于支持知識表示學(xué)習(xí),這些模型包括:


  • 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


我們提供了訓(xùn)練這些模型的教程:http://openke.thunlp.org/index/documentation。

此外,我們還使用一些簡單的例子展示了如何基于 OpenKE 構(gòu)建一個新模型。


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


KB2E


KB2E 是一些知識嵌入模型的早期實現(xiàn),我們之前的研究中使用了很多資源。這些代碼將被逐漸納入新框架 OpenKE。這是一個基礎(chǔ)且穩(wěn)定的知識圖譜嵌入工具包,包括 TransE、TransH、TransR 和 PTransE。該工具包的實現(xiàn)遵循模型的原始文件設(shè)置,使其在研究實驗中保持穩(wěn)定。


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


Fast-TransX


這是 TransE 及其擴展模型用于知識表示學(xué)習(xí)的高效輕量級實現(xiàn),包括 TransH、TransR、TransD、TranSparse 和 PTransE。整個框架的底層設(shè)計為實現(xiàn)加速作出改變,且該框架支持多線程訓(xùn)練。Fast-TransX 旨在使用 OpenKE 框架實現(xiàn)快速、簡單的部署。


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


TensorFlow-TransX


OpenKE 基于 TensorFlow 的簡易版,包括 TransE、TransH、TransR 和 TransD。與 Fast-TransX 類似,TensorFlow-TransX 旨在避免使用 OpenKE 框架產(chǎn)生的復(fù)雜封裝。


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


預(yù)訓(xùn)練嵌入


現(xiàn)有大規(guī)模知識圖譜使用 OpenKE 對嵌入進行預(yù)訓(xùn)練(目前都通過 TransE 進行訓(xùn)練。必要時會介紹更多模型)。


知識圖譜和嵌入包括以下五個文件:


  • 實體的嵌入:知識圖譜中每個實體的嵌入。數(shù)據(jù)是二進制格式,每一行有一個嵌入。每一行用大量連續(xù)浮點表示這一行的嵌入。

  • 關(guān)系嵌入:知識圖譜中每一個關(guān)系的嵌入。數(shù)據(jù)是二進制格式,每一行有一個嵌入。每一行用大量連續(xù)浮點表示這一行的嵌入。

  • Triple2id:知識圖譜的知識三元組與對應(yīng)序列號之間的映射。每一行有一個三元組和序列號,二者用一個 tab 隔開。

  • Entity2id:知識圖譜的實體與對應(yīng)序列號之間的映射。每一行有一個實體和序列號,二者用一個 tab 隔開。

  • Relation2id:知識圖譜的關(guān)系與對應(yīng)序列號之間的映射。每一行有一個關(guān)系和序列號,二者用一個 tab 隔開。


文件描述和下載鏈接:



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


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


如何閱讀二進制文件:


  • Python


  • #Python codes to read the binary files.

  • import numpy as np

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


    • C/C++


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

  • #include <cstring>

  • #include <cstdio>

  • #include <cstdlib>

  • #include <sys/mman.h>

  • #include <fcntl.h>

  • #include <unistd.h>

  • #include <sys/stat.h>


  • struct stat statbuf;

  • int fd;

  • float* vec;


  • int main() {

  • ?if(stat(filename, &statbuf)!=-1) {

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

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

  • ?}

  • ?return 0;

  • }



  • 本文為機器之心編譯,轉(zhuǎn)載請聯(lián)系機器之心公眾號獲得授權(quán)。




    OpenKG.CN


    中文開放知識圖譜(簡稱OpenKG.CN)旨在促進中文知識圖譜數(shù)據(jù)的開放與互聯(lián),促進知識圖譜和語義技術(shù)的普及和廣泛應(yīng)用。

    點擊閱讀原文,進入 OpenKG 博客。

    總結(jié)

    以上是生活随笔為你收集整理的技术动态 | 清华大学开源OpenKE:知识表示学习平台的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。