罗田县升平网络工作室,一家专业从事网站建设的工作室

资讯论坛

 找回密码
 加入论坛

快捷登录

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。
查看: 313|回复: 0

python算法学习双曲嵌入论文代码实现数据集介绍

[复制链接]

714

主题

625

帖子

733

积分

社区达人

积分
733
发表于 2021-11-12 16:23:25 | 显示全部楼层 |阅读模式
目录


  • 1. 目标

    • Python 代码依赖库

  • 2. 数据集

    • 数据展示

学习的文章:
Poincaré Embeddings for Learning Hierarchical Representations
主要参考的代码:
poincare_embeddings
gensim  Topic Modelling in Python - poincare.py
由于有些代码难以运行,有些比较难读(封装程度非常高)甚至有些代码写得存在一些问题。因此我们重新按照论文的设置,利用Python重现了对应的方法,并成功运行,同时进行绘图展示。

1. 目标

我们有一些层级结构的网络类型数据,如何能够根据每个词的上下结构路径,将每个词语能够用一个向量来替换,换句话说,就是将词映射为实数域中的向量(词嵌入,word embedding)。最简单的想法是使用one-hot词向量,其构造起来很容易,但通常并不是一个好选择。主要的原因是,one-hot词向量无法准确表达不同词之间的相似度,同时也不能刻画词语之间的层次结构。而在另外的方法中,采用最多的是在欧式空间里进行嵌入(word2vec),这种方式的embedding可以有效表示出词语间的相似性,但却依旧难以刻画出词语之间的层次结构。
这时候为了既能够衡量词与词之间的相似性,又能衡量这种词与词之间的层次结构,引入了双曲几何的思想,在双曲空间中进行嵌入。双曲嵌入表征层级结构的能力就要比欧氏空间嵌入的能力高得多,同时需要的维数却更少。

Python 代码依赖库

为了能够顺利跑通后面的代码,这里先展示出代码需要依赖的库:
  1. import nltk# nltk.download('wordnet') # 第一次运行需运行此命令,安装wordnet数据集from nltk.corpus import wordnet as wnfrom math import *import randomimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.lines as mlinesimport networkx as nx
复制代码
2. 数据集

训练数据集采用wordnet中的数据进行实现,相关的数据说明在上周的文档中已经进行了介绍,这里不再进行赘述。
由于整个的wordnet数据集比较大,为了测试代码,我们只使用哺乳动物(mammal)及其相关的分支进行学习。首先我们看看数据集长什么样。由于我们只需要用到层次结构信息,因此我们只需将数据集里面每个哺乳动物相关名词的子节点与父节点的关系进行读取与构建。
  1. network = {} # 构建层级网络last_level = 8 # 最深的层设置为8层levelOfNode = {} # 数据的层级信息,0为哺乳动物(根节点),1为哺乳动物下一结构# 递归构建networkdef get_hyponyms(synset, level):    if (level == last_level):        levelOfNode[str(synset)] = level        return    if not str(synset) in network:        network[str(synset)] = [str(s) for s in synset.hyponyms()]        levelOfNode[str(synset)] = level    for hyponym in synset.hyponyms():        get_hyponyms(hyponym, level + 1)# 构建以哺乳动物为根节点的层次结构数据集mammal = wn.synset('mammal.n.01')get_hyponyms(mammal, 0)levelOfNode[str(mammal)] = 0# 将终端叶子节点补到network字典中for a in levelOfNode:    if not a in network:        network[a] = []
复制代码
数据展示

运行完成上述代码后,可以得到对应的节点层级,以及总体的网络分支。
节点层级(数值表示层级数,最深的层设置为6,0为根节点)


网络分支情况


为了更清晰地将树的结构进行刻画,用一个代码进一步将相关的层次结构直接进行展示。
  1. def norm(x):    return np.dot(x, x)def traverse(graph, start, node):    node_name = node.name().split(".")[0]    graph.depth[node_name] = node.shortest_path_distance(start)    for child in node.hyponyms():        child_name = child.name().split(".")[0]        graph.add_edge(node_name, child_name) # 添加边        traverse(graph, start, child) # 递归构建def hyponym_graph(start):    G = nx.Graph() # 定义一个图    G.depth = {}    traverse(G, start, start)    return Gdef graph_draw(graph):    plt.figure(figsize=(10, 10)) # 展示整体的网络    # plt.figure(figsize=(3, 3)) # 展示大象网络    nx.draw(graph,         node_size = [10 * graph.degree(n) for n in graph],         node_color = [graph.depth[n] for n in graph],         alpha = 0.8,         font_size = 4,         width = 0.5,         with_labels = True)    def get_keys(d, value):        return [k for k,v in d.items() if v == value]    root_name = get_keys(graph.depth, 0)[0]    plt.savefig("~/hyperE/fig/" + root_name + ".png", dpi = 300)    graph = hyponym_graph(mammal)graph_draw(graph)
复制代码
绘制出来的哺乳动物(mammal)全体的结构如下(此时没有空间信息,只有层级信息,为了展示才显示为下图所示的样式):
其中,颜色越深,节点越大,表示节点的层级越接近根节点(哺乳动物)。
由于数据非常多,展示的不是很清楚,这里我们单纯的提出出来大象(elephant)的结构,进一步看看数据集的情况。
  1. elephant = wn.synset('elephant.n.01')graph = hyponym_graph(elephant)graph_draw(graph)
复制代码


后面我们将利用这份数据集,进行方法的介绍,以及双曲嵌入模型的训练。
请见:python算法学习双曲嵌入论文方法与代码解析说明
以上就是python算法学习双曲嵌入论文代码实现数据集介绍的详细内容,更多关于python算法数据集双曲嵌入论文代码的资料请关注脚本之家其它相关文章!

来源:http://www.jb51.net/article/227374.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
打赏鼓励一下!
回复

使用道具 举报

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。

浏览排行

(38463)2019-11-5 公共云钱包资金盘骗局揭秘: 网络传销+原始股骗局合体!

(22233)2019-12-20 12月17日 邓智天法院直播庭审疑问全解答!

(20722)2019-12-1 环保币GEC资金盘骗局最新消息: 即将崩盘!

(17244)2019-11-9 巨胸肥臀大长腿,嫩模糯美子真人COS不知火舞福利污图

(15868)2018-12-24 罗田县人民法院公布【第五批失信被执行人名单】 ...

(14972)2019-11-3 曝光!PTFX已经崩盘跑路,投资者血流成河!

(13018)2019-8-7 湖北电力网上缴费,支付宝绑定户号的初始密码是什么?

(12480)2018-10-17 罗田县人民政府“12345”市民服务热线服务指南

(11170)2019-12-11 公安定性了, 趣码是非法传销! 趣码怎么退回365元?

(11081)2019-12-15 满足你对女同事的幻想 风骚秘书阿朱销魂眼神勾魂摄魄

最新发表

[升平网络工作室]2025-8-23 [2025-08-23]罗田天气预报

[升平网络工作室]2025-8-23 西藏自治区成立60周年庆祝大会隆重举行 习近平出席大会

[升平网络工作室]2025-8-23 县委委员会召开查摆问题整改整治情况汇报会

[爱查小程序]2025-8-22 [爱查]在线听音乐操作说明

[升平网络工作室]2025-8-22 [2025-08-22]罗田天气预报

[升平网络工作室]2025-8-22 习近平率中央代表团抵达拉萨出席西藏自治区成立60周年庆祝活动

[升平网络工作室]2025-8-22 县关工委联合经济开发区开展“情系学子”助学活动 助力职工子女圆梦大学

[升平网络工作室]2025-8-21 2025年罗田县卫健系统赴高校公开招聘事业单位工作人员拟聘用人员公示公告

[升平网络工作室]2025-8-21 [2025-08-21]罗田天气预报

[升平网络工作室]2025-8-21 县安防委2025年度第三次全体(扩大)会召开

QQ|Archiver|手机版|小黑屋|资讯论坛BBS.SPW8.CN ( 鄂ICP备2021011341号-3 )|网站地图


手机扫一扫继续访问
[免责声明]
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。

进入社区 | 发表新帖 | 百度收录 |
技术提供:罗田县升平网络工作室
站长Email:admin@spw8.cn
投诉电话(刮开查看):15374567400

GMT+8, 2025-8-23 17:00 , Processed in 0.366374 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表