如何计算2个node2vec模型之间的距离

2024-03-15

我有 2 个不同时间戳的 node2vec 模型。我想计算两个模型之间的距离。两个模型具有相同的词汇,我们更新模型。

我的模型是这样的

model1:
"1":0.1,0.5,...
"2":0.3,-0.4,...
"3":0.2,0.5,...
.
.
.    
model2:
    "1":0.15,0.54,...
    "2":0.24,-0.35,...
    "3":0.24,0.47,...
    .
    .
    .

假设您使用了标准word2vec库来训练您的模型,每次运行都会引导一个完全独立的模型,其坐标不一定与任何其他模型具有可比性。

(由于算法中或训练输入的多线程处理中的一些固有的随机性,即使在完全相同的数据上运行两个训练会话也会产生不同的模型。它们对于下游应用程序应该都是有用的,但是个别的令牌可以处于任意不同的位置。)

也就是说,您可以尝试综合一些衡量两个模型差异程度的指标。例如,您可能:

  • 选择一堆随机(或领域重要)单词对。分别检查每个模型中每对之间的相似性,然后比较模型之间的这些值。 (也就是说,比较model1.similarity(token_a, token_b) with model2.similarity(token_a, token_b).)将模型之间的差异视为所有测试的相似差异的加权组合。

  • 对于一些重要的相关标记集,收集每个模型中前 N 个最相似的标记。通过某种排名相关性度量来比较此列表,以查看一个模型对每个标记的“邻域”的改变程度。

对于其中的每一个,我建议根据完全相同的训练数据的基线情况来验证它们的操作,这些数据已经使用不同的起始随机进行了洗牌和/或训练seed。他们是否将这些模型显示为“几乎等效”?如果没有,您需要调整训练参数或综合测量,直到达到预期结果 - 即使标记具有非常不同的坐标,来自相同数据的模型也会被判断为相似。

另一种选择可能是从合成语料库中训练一个巨大的组合模型,其中:

  • 两个时代所有未经修改的原始“文本”都出现一次
  • 来自每个单独时代的文本再次出现,但其标记的某些随机比例被特定于时代的修饰符修改。 (例如, 'foo' 有时会变成'foo_1'在第一时代的文本中,有时会变成'foo_2'在第二纪元的文本中。 (你不想转换all将任何一个文本中的标记转换为特定于时代的标记,因为只有彼此共同出现的标记才会相互影响,因此您希望任一时代的标记有时以常见/共享变体形式出现,但也经常以特定于时代的形式出现变体。)

最后,原始令牌'foo'将得到三个向量:'foo', 'foo_1', and 'foo_2'。它们应该都非常相似,但是特定时代的变体会相对更多地受到特定时代背景的影响。因此,这三个时代之间的差异(以及现在共同坐标空间中的相对运动)将表明两个时代数据之间发生的变化的幅度和类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算2个node2vec模型之间的距离 的相关文章

  • 通过 boto3 承担 IAM 用户角色时访问被拒绝

    Issue 我有一个 IAM 用户和一个 IAM 角色 我正在尝试将 IAM 用户配置为有权使用 STS 承担 IAM 角色 我不确定为什么收到 访问被拒绝 错误 Details IAM 角色 arn aws iam 123456789 r
  • 使用 pandas.date_range() 生成多个日期时间,每周两个日期

    我在用着pd date range start date end date freq W MON 每周一生成每周频率日期时间start date 2017 01 01 and end date 2017 12 31 这意味着每月大约生成 4
  • 如何删除 PyCharm 中的项目?

    如果我关闭一个项目 然后删除该项目文件夹 则在 PyCharm 重新启动后 会再次创建一个空的项目文件夹 只需按顺序执行以下步骤即可 他们假设您当前在 PyCharm 窗口中打开了该项目 单击 文件 gt 关闭项目 关闭项目 在 PyCha
  • 从字典的元素创建 Pandas 数据框

    我正在尝试从字典创建一个 pandas 数据框 字典设置为 nvalues y1 1 2 3 4 y2 5 6 7 8 y3 a b c d 我希望数据框仅包含 y1 and y2 到目前为止我可以使用 df pd DataFrame fr
  • McNemar 在 Python 中的测试以及分类机器学习模型的比较 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有用 Python 实现的好的 McNemar 测试 我在 Scipy stats 或 Scikit
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • 为什么第二个 request.session cookies 返回空?

    我想使用 requests Session post 登录网站 但是当我已经登录主页 然后进入帐户页面时 看来cookies还没有保存 因为cookies是空的 而且我无法进入正确的帐户页面 import requests from bs4
  • 在Python中读取tiff标签

    我正在尝试用 Python 读取 tiff 文件的标签 该文件是 RGB 的uint16每个通道的值 我目前正在使用tifffile import tifffile img tifffile imread file tif 然而 img是一
  • 如何将标记化中的多单词名称保留在一起?

    我想使用 TF IDF 特征对文档进行分类 一种方法是 from sklearn feature extraction text import TfidfVectorizer import string import re import n
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • Flask 应用程序路由中的多个参数

    烧瓶怎么写app route如果我在 URL 调用中有多个参数 这是我从 AJax 调用的 URL http 0 0 0 0 8888 createcm summary VVV change Feauure 我试图写我的烧瓶app rout
  • 检索 geodjango 多边形对象的边界框

    如何在 geodjango 中获取 MultiPolygon 对象的边界框 在 API 中找不到任何内容http geodjango org docs geos html http geodjango org docs geos html
  • 使用seaborn绘制简单线图

    我正在尝试使用seaborn python 绘制ROC曲线 对于 matplotlib 我只需使用该函数plot plt plot one minus specificity sensitivity bs where one minus s
  • 如何从列表类别中对 pandas 数据框进行排序?

    所以我在下面有这个数据集 我想根据我的列表从 名称 列进行排序 以及按 A 升序和按 B 降序排序 import pandas as pd import numpy as np df1 pd DataFrame from items A 1
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • 在 numpy 中连接维度

    我有x 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 2 3 I want 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 6 也就是说 我想连接中间维度的所有项目 在这种特殊情况下我可以得到这
  • 将时间添加到日期时间

    我有一个像这样的日期字符串 然后使用strptime 所以就像这样 my time datetime datetime strptime 07 05 15 m d Y 现在我想添加 23 小时 59 分钟my time 我努力了 timed
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo

随机推荐