如何比较三个预训练模型的余弦相似度?

2023-11-30

我有两个语料库 - 一个包含所有女性领导人的演讲,另一个包含男性领导人的演讲。我想测试这样一个假设:一个语料库中两个单词之间的余弦相似度与另一个语料库中相同两个单词之间的余弦相似度显着不同。这样的 t 检验(或等效的)合乎逻辑并且可能吗?

此外,如果两个语料库的余弦相似度不同,我如何检查第三个语料库中相同两个单词之间的余弦相似度是否与第一个或第二个语料库更相似?


肯定是possible。在给定一定数量的数据的情况下,它是否有意义更难回答。

请注意,在单独的训练课程中,给定的单词A由于算法使用的固有随机性,不一定会出现在相同的坐标中。即使在训练时也是如此完全相同的数据.

一般来说,到其他词的距离/方向B, C当有足够的数据/训练和精心选择的参数时,等应该具有类似的整体有用性。所以A, B, C等可能位于不同的地方,距离/方向略有不同 - 但相对关系仍然相似,就词邻域或(A-B)如果应用于其他单词,方向仍然可以预测某些人类可感知的含义差异C etc.

因此,您应该避免在来自不同训练运行或语料库的单词之间进行直接余弦相似度比较,但您可能会在相似性差异中发现意义(A-B vs A' - B')或前 N 个列表或相对排名。 (这也可能是如何与第三个语料库进行比较:某些成对相似性、前 N 个列表或相关单词在彼此“最相似”结果中的顺序排列在多大程度上存在差异或相关性。)

您可能想要对您的测量进行健全性检查,通过查看它们在多大程度上暗示了逻辑上“不应该”的比较中有意义的差异。例如,针对刚刚重新洗牌的完全相同的语料库或针对完全相同的语料库的随机子集进行多次运行。 (我不知道有什么像“t 测试”那样正式的东西来检查 word2vec 模型之间差异的重要性,但检查一些差异是否足以区分真正不同的语料库,仅是 1/N 随机子集对于同一语料库,达到一定的置信水平可能是断言有意义的差异的基础方法。)

在某种程度上,这种“应该非常相似”的运行反而显示出明显不同的最终向量结果,这可能表明:

  • 语料库太小,每个单词的不同用法示例太少 - word2vec 受益于大量数据,与大型 word2vec 模型有时使用的数千亿训练单词相比,政治演讲集合可能相当小

  • 模型参数化错误 - 模型过大(因此容易过度拟合),或者训练次数不足,或者其他次优参数可能会产生对于相同训练数据变化更大的模型

您还需要注意训练语料库大小的不匹配。 10 倍大的语料库意味着更多的单词可以通过固定的min_count阈值,以及任何选择的N epochs训练将涉及 10 倍多的常用词示例,并支持较大(向量大小)模型中的稳定结果 - 而具有较小语料库的相同模型参数会产生更不稳定的结果。

您可以考虑的另一种技术是将语料库合并到一个训练集中,但根据相关说话者的不同,将感兴趣的关键词的标记进行修改。例如,您可以替换单词'family' with 'f-family' or 'm-family',取决于说话者的性别。 (您可以对每次出现或出现的某些部分执行此操作。您还可以将每个语音多次输入到语料库中,有时使用实际单词,有时使用上下文标记的替代词替换部分或全部。 )

在这种情况下,您最终会得到一个最终模型,并且所有单词/上下文标记都位于“相同”坐标空间中以进行直接比较。但是,伪词'f-family' and 'm-family'会更多地受到其特定于上下文的用法的影响 - 因此它们的向量可能彼此不同,并且与原始向量不同'family'(如果您还保留了其使用的未修改实例)以有趣的暗示方式。

另请注意:如果使用原始 Google word2vec 代码版本的“类比求解”方法,或遵循其示例的其他库(例如gensim),特别注意won't返回作为输入提供的任何单词作为答案。所以当解决充满性别的类比时'man' : 'doctor' :: 'woman' : _?_,通过调用model.most_similar(positive=['doctor', 'woman'], negative=['man']),即使底层模型still has 'doctor'作为最接近目标坐标的单词,它会自动跳过作为输入单词之一,而是生成第二个最接近的单词。

一些早期的“词向量偏差”文章忽略了这个细节,因此由于这种实现工件,往往意味着更大的偏差,即使这种偏差很小甚至不存在。 (您可以提供原始向量,而不是字符串标记,以most_similar()- 然后获得完整结果,无需对输入标记进行任何过滤。)

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

如何比较三个预训练模型的余弦相似度? 的相关文章

  • 这个 NLP 问题层次结构描述中的最大池化是什么类型

    我正在尝试实现这个描述以及我所做的 我生成了形状的 uni gram bi gram tri gram 15 512 使用填充 然后对于每个单词 我连接三个特征向量 3 512 然后我向他们申请 Globalmaxpooling1D 我不知
  • Blenderbot 微调

    我一直在尝试微调 HuggingFace 的对话模型 Blendebot 我已经尝试过官方拥抱脸网站上给出的传统方法 该方法要求我们使用 trainer train 方法来完成此操作 我使用 compile 方法尝试了它 我尝试过使用 Py
  • 将 freebase 向量与 gensim 一起使用

    我正在尝试使用 Google 发布的 freebase 单词嵌入 但我很难从 freebase 名称中获取单词 model gensim models Word2Vec load word2vec format freebase vecto
  • 生成易于记忆的随机标识符

    与所有开发人员一样 我们在日常工作中不断处理某种标识符 大多数时候 它与错误或支持票有关 我们的软件在检测到错误后 会创建一个包 该包的名称由时间戳和版本号格式化 这是创建合理唯一标识符以避免混淆包的一种廉价方法 例子 错误报告 20101
  • 将 python NLTK 解析树保存到图像文件[重复]

    这个问题在这里已经有答案了 这可能会复制这个 stackoverflowquestion https stackoverflow com questions 23429117 saving nltk drawn parse tree to
  • 如何训练斯坦福 NLP 情感分析工具

    地狱大家 我正在使用斯坦福核心 NLP 包 我的目标是对推文直播进行情感分析 按原样使用情感分析工具对文本 态度 的分析非常差 许多积极因素被标记为中性 许多消极因素被评为积极 我已经在文本文件中获取了超过一百万条推文 但我不知道如何实际获
  • 实时跟踪每分钟/小时/天的前 100 个 Twitter 单词

    我最近遇到这样一个面试问题 Given a continuous twitter feed design an algorithm to return the 100 most frequent words used at this min
  • ANEW 字典可以用于 Quanteda 中的情感分析吗?

    我正在尝试找到一种方法来实施英语单词情感规范 荷兰语 以便使用 Quanteda 进行纵向情感分析 我最终想要的是每年的 平均情绪 以显示任何纵向趋势 在数据集中 所有单词均由 64 名编码员按照 7 分李克特量表在四个类别上进行评分 这提
  • 将复数名词转换为单数名词

    如何使用 R 将复数名词转换为单数名词 我使用 tagPOS 函数来标记每个文本 然后提取所有标记为 NNS 的复数名词 但是如果我想将这些复数名词转换为单数该怎么办 library openNLP library tm acq o lt
  • BERT 输出不确定

    BERT 输出是不确定的 当我输入相同的输入时 我希望输出值是确定性的 但我的 bert 模型的值正在变化 听起来很尴尬 同一个值返回两次 一次 也就是说 一旦出现另一个值 就会出现相同的值并重复 如何使输出具有确定性 让我展示我的代码片段
  • 阻止斯坦福核心 NLP 服务器输出它收到的文本

    我正在运行一个斯坦福核心自然语言处理 http stanfordnlp github io CoreNLP server java mx4g cp edu stanford nlp pipeline StanfordCoreNLPServe
  • 如何检测文本是否可读?

    我想知道是否有一种方法可以告诉给定的文本是人类可读的 我所说的人类可读的意思是 它有一些含义 格式就像某人写的文章 或者至少是由软件翻译器生成的供人类阅读的文章 这是背景故事 最近我正在制作一个应用程序 允许用户将短文本上传到数据库 在部署
  • 如何在R中使用OpenNLP获取POS标签?

    这是 R 代码 library NLP library openNLP tagPOS lt function x s lt as String x word token annotator lt Maxent Word Token Anno
  • 如何将标记化中的多单词名称保留在一起?

    我想使用 TF IDF 特征对文档进行分类 一种方法是 from sklearn feature extraction text import TfidfVectorizer import string import re import n
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • 斯坦福 CoreNLP:使用部分现有注释

    我们正在尝试利用现有的 代币化 句子分割 和命名实体标记 同时我们希望使用斯坦福 CoreNlp 额外为我们提供 词性标注 词形还原 和解析 目前 我们正在尝试以下方式 1 为 pos lemma parse 创建一个注释器 Propert
  • 给定文档,选择相关片段

    当我在这里提出问题时 自动搜索返回的问题的工具提示给出了问题的前一点 但其中相当一部分没有给出任何比理解问题更有用的文本 标题 有谁知道如何制作一个过滤器来删除问题中无用的部分 我的第一个想法是修剪仅包含某个列表中的单词的任何前导句子 例如
  • 如何使用动词时态/语气制作稀疏匹配器模式?

    我一直在尝试使用动词时态和情绪为 spacy 匹配器创建一个特定的模式 我发现了如何使用 model vocab morphology tag map token tag 访问使用 spacy 解析的单词的形态特征 当动词处于虚拟语气模式
  • Java 中的自然语言处理 (NLP) [重复]

    这个问题在这里已经有答案了 可能的重复 Java 有没有好的自然语言处理库 https stackoverflow com questions 870460 java is there a good natural language pro
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi

随机推荐

  • 使用 XPath,如何根据节点的文本内容和属性值选择节点?

    给定这个 XML
  • 鼠标事件不会更新 winform 中的相机旋转

    我的应用程序有一个自定义面板 用于在 WinForm 中显示 XNA 屏幕 我目前已经展示了一个没有问题的测试模型 现在正在研究相机移动 我的相机是一个免费相机 不受任何特定目标的约束 但我一直无法让鼠标更新相机在其自身轴上的偏航和俯仰 我
  • Java 中的两个类之间如何使用接口进行通信?

    嗨 我一直在这里阅读一些类似的主题 但没有一个回答我的问题 有人说你甚至不能这样做 这不是一件好事 因为在这种情况下我无法完成我的课程 这是一些简单的代码 将每个块视为一个单独的类 public interface Interface vo
  • 在 R 中循环文件

    我正在使用 R 来计算文件中列的平均值 如下所示 R file1 read table x01 mean file1 V4 然而 我没有构建涉及 R 的循环的经验 仅使用 bash 我如何将其转换为一个循环 对文件夹中的每个文件执行此操作
  • file_get_contents() 是否使用缓存?

    如果我写 mypage file get contents www mywebsite com mypage htm 我第一次运行该脚本时 file get contents 肯定会向 www mywebsite com 发出 mypage
  • 学习 C++ 语言 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我是一名 net c 程序员 但我也想学习 NET C 我是 c 的初学者 有没有从初学者到专家的网站 书籍或视频教程 不存在 Net c 这样的东西 也许你的意思是C CLI 这是
  • 混合模式 C++/CLI 性能注意事项 - 最佳实践

    我有一个 C CLI 库 它调用许多本机 C 方法 我读过许多线程 指出不应混合托管和非托管代码 我找不到任何说明如何避免这些开关以及为什么它会导致性能问题的信息 有人可以分享最佳实践吗 使用 C CLI 的唯一原因是它支持混合托管代码和本
  • 如何每次迭代增加一个字母 N 次并存储在数组中?

    letter array for i A i ZZ i letter i print r letter 从上面的脚本我做了一个循环A B C D ZZ 现在 我想把它变成A C E G I ZZ 2步骤而不是1 我需要指导才能做到这一点 这
  • 在 Firebase 中加入两个节点

    我正在开发一个应用程序 它应该显示来自两个节点 Firebase 的数据 Firebase DB 的结构如下 College 4F2EAB65 id 4F2EAB65 name SomeCollege A3C2ED31 id A3C2ED3
  • pandas:将DataFrame最后一行除以第一行

    这个问题类似于Python Pandas 按第一行划分 DataFrame 我有一个数据框 如下所示 1125400 5430095 1095751 2013 04 02 98 91 NaN 5626 79 2013 04 03 99 29
  • 从 Java 执行 EXE 并从 EXE 获取输入和输出

    我有一个EXE file addOne exe它不断地从控制台上的用户输入一个整数 不是命令行参数 并输出整数 1到控制台上 示例输出如下所示 1 2 6 7 29 30 我正在尝试编写一个java程序 它可以 Run the EXE 不断
  • Swift 2 错误处理问题

    我正在使用 REST 获取 JSON 数据 然后解析它 为此 我使用 NSJSONObjectWithData 据我所知 该方法过去在其参数内有一个错误处理程序 但它不再存在 在我的代码中 let err NSError let optio
  • 自定义 Spring Security 应用程序中的无限循环

    我们尝试用现有的 Spring Security Basic Login 替换开源应用程序中的 REST API 以实现使用令牌的自定义登录 我读过这篇关于该主题的博文 http javattitude com 2014 06 07 spr
  • 将 HTML 实体转换为正确的字符 R

    有谁知道 r 中可以转换的通用函数 228 为其 unicode 字符 我见过一些函数 并将其转换为普通字符 任何帮助 将不胜感激 谢谢 编辑 下面是一条数据记录 我可能有超过100万条记录 除了将数据读入大量向量并针对每个元素更改记录之外
  • 由元组索引的 Python `dict`:获取饼图的一部分

    假设我有 my dict airport London Heathrow airport Tokyo Narita hipsters London Soho 什么是一种有效的 无需扫描所有键 而又优雅的方式来让所有机场脱离这本字典 即预期输
  • 避免 Android 中 EditText 的解析错误

    对于 stackoverflow 社区 我创建了这个方法来将一些 EditText 字段转换为双精度 我添加 if 语句专门是为了避免解析错误 因为我知道我的几个 EditText 字段将留空 然而 它们仍然在运行时不断出现 有人知道避免解
  • Scala 不可变变量和打印

    目前正在学习一个使用 Scala 的课程 我以前从未使用过它 因此语法和本身都是新的 我正在研究一个简单的除法函数 但遇到了一些错误 首先 我使用 var sub m 对吗 在我的代码中 我只是想做 m m n 但你无法更改变量 而且我不确
  • 使用 SAXParser 从 XML 检索 HTML 编码文本

    这是我第一次使用 SAXParser 我在 Android 中使用它 但我认为这对这个特定问题没有影响 并且我正在尝试从 RSS 提要中读取数据 到目前为止 它在很大程度上对我来说工作得很好 但是当它到达包含 HTML 编码文本的标签时 例
  • 如何在django中存储用户数组?

    我有一个 django 模型 它基本上是一个名为Contexts 它包含一些字段 例如name description和一个用户 下面是定义的模型 class Contexts models Model context name model
  • 如何比较三个预训练模型的余弦相似度?

    我有两个语料库 一个包含所有女性领导人的演讲 另一个包含男性领导人的演讲 我想测试这样一个假设 一个语料库中两个单词之间的余弦相似度与另一个语料库中相同两个单词之间的余弦相似度显着不同 这样的 t 检验 或等效的 合乎逻辑并且可能吗 此外