word2vec gensim 多种语言

2024-04-10

这个问题完全超出了我的想象。我正在使用 gensim 训练 Word2Vec 模型。我提供了多种语言的数据,即英语和印地语。当我试图找到最接近“人”的词时,我得到的是:

model.wv.most_similar(positive = ['man'])
Out[14]: 
[('woman', 0.7380284070968628),
 ('lady', 0.6933152675628662),
 ('monk', 0.6662989258766174),
 ('guy', 0.6513140201568604),
 ('soldier', 0.6491742134094238),
 ('priest', 0.6440571546554565),
 ('farmer', 0.6366012692451477),
 ('sailor', 0.6297377943992615),
 ('knight', 0.6290514469146729),
 ('person', 0.6288090944290161)]
--------------------------------------------

问题是,这些都是英文单词。然后我试图找到相同含义的印地语和英语单词之间的相似性,

model.similarity('man', 'आदमी')
__main__:1: DeprecationWarning: Call to deprecated `similarity` (Method will 
be removed in 4.0.0, use self.wv.similarity() instead).
Out[13]: 0.078265618974427215

这个准确度应该比所有其他准确度都要好。我的印地语语料库是通过翻译英语语料库制作的。因此,这些词出现在类似的上下文中。因此他们应该很接近。

这就是我在这里所做的:

#Combining all the words together.
all_reviews=HindiWordsList + EnglishWordsList

#Training FastText model
cpu_count=multiprocessing.cpu_count()
model=Word2Vec(size=300,window=5,min_count=1,alpha=0.025,workers=cpu_count,max_vocab_size=None,negative=10)
model.build_vocab(all_reviews)
model.train(all_reviews,total_examples=model.corpus_count,epochs=model.iter)
model.save("word2vec_combined_50.bin")

我一直在处理一个非常相似的问题,并找到了一个相当强大的解决方案。这张纸 https://arxiv.org/pdf/1309.4168.pdf表明可以在使用不同语言训练的两个 Word2Vec 模型之间定义线性关系。这意味着您可以导出翻译矩阵,将词嵌入从一种语言模型转换为另一种语言模型的向量空间。这一切意味着什么?这意味着我可以从一种语言中取出一个单词,并在另一种语言中找到具有相似含义的单词。

我编写了一个小型 Python 包来为您实现此功能:transvec https://pypi.org/project/transvec/。下面是我使用预训练模型来搜索俄语单词并查找具有相似含义的英语单词的示例:

import gensim.downloader
from transvec.transformers import TranslationWordVectorizer

# Pretrained models in two different languages.
ru_model = gensim.downloader.load("word2vec-ruscorpora-300")
en_model = gensim.downloader.load("glove-wiki-gigaword-300")

# Training data: pairs of English words with their Russian translations.
# The more you can provide, the better.
train = [
    ("king", "царь_NOUN"), ("tsar", "царь_NOUN"),
    ("man", "мужчина_NOUN"), ("woman", "женщина_NOUN")
]

bilingual_model = TranslationWordVectorizer(en_model, ru_model).fit(train)

# Find words with similar meanings across both languages.
bilingual_model.similar_by_word("царица_NOUN", 1) # "queen"
# [('king', 0.7763221263885498)]

不用担心俄语单词上奇怪的 POS 标签 - 这只是我使用的特定预训练模型的一个怪癖。

所以基本上,如果你可以提供一个单词列表及其翻译,那么你就可以训练一个TranslationWordVectorizer翻译any将源语言语料库中存在的单词转换为目标语言。当我真正使用它时,我通过从数据中提取所有单独的俄语单词,通过谷歌翻译运行它们,然后保留所有翻译成英语单词的内容来生成一些训练数据。结果非常好(抱歉,我还没有关于基准测试的更多详细信息;它仍在进行中!)。

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

word2vec gensim 多种语言 的相关文章

随机推荐

  • 为我的网络应用程序生成虚拟数据 - 寻找字典[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 抱歉 如果这不是主题 但它is当然是编程related 我需要大规模测试我的 Web 应用程序 并发用户
  • CouchDB“加入”两个文档

    我有两个看起来有点像这样的文档 Doc id AAA creator id data DataKey id credits left 500 times used 0 data id AAA 我想要做的是创建一个视图 它允许我传递 Data
  • 如果达到标识列的最大值,将附加什么? [复制]

    这个问题在这里已经有答案了 可能的重复 主键 Id 会发生什么情况 当它超过限制时 https stackoverflow com questions 5305232 what happens to the primary key id w
  • “find”(命令)找不到 -wholename 的任何内容

    为什么这个命令有效 home user1 tmp find wholename tmp file c exec echo user2 tmp file c home user1 tmp 而且这个命令不起作用 什么也没发现 home user
  • 使用 StaticResource 作为 VisualTransition 的 Storyboard 时出错

    我在 Button 控件的 VisualStateGroup 内有一个 VisualTransition Storyboard 属性绑定到 StaticResource Storyboard
  • 如何将cropit中的图片导出到php进行上传?

    我已经在互联网上搜索了一段时间 但找不到任何可以告诉我如何将结果从 image cropper cropit export 转换为 PHP 可以上传到服务器的图像 我正在使用 Cropit 插件 我需要的只是一个可以传递到我的 php 上传
  • 如何在文本中间的

    内使用

    标记

    ? [复制]

    这个问题在这里已经有答案了 我想做这样的事情 p This is a p h2 text h2 paragraph 我禁用了 h2 的边距和填充 但它仍然打破了 h2 标签前后的线条 如何在文本中间使用 h2 标签并使其看起来像普通单词 就
  • Xcode 8 Swift 3 音高改变声音

    我正在尝试制作一个带有击中声音的简单游戏 每当您击中某物时 击中声音都会有不同的音调 我以为这很简单 但最终却带来了很多东西 其中大部分是我完全从别人那里复制的 func hitSound value Float let audioPlay
  • C 编程:预处理器、宏作为标记

    我正在尝试做一些概念上与此类似的事情 但似乎无法让它发挥作用 最后显示错误 任何想法 include
  • z/OS 如何调用 Web 服务? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个 COBOL 程序 需要从 Web 服务获取数据 如果不使用 CICS 我最好的选择是什么 我认为 C 程序可以读取 Web
  • Python-2.x 中的 super() 是否损坏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在页面视图之间导航时如何取消所有正在运行的传奇

    当用户决定导航到应用程序内的另一个 页面 时 我正在尝试找到一种简单易用的方法来取消 页面 内所有正在运行的传奇 我们不使用路由 而是使用每个 页面 是一个更大的主机应用程序中自己的小部件 负责在用户导航时创建和加载每个页面 目前 我们正在
  • 在 .NET 5.0 上向 Windows 窗体添加配置

    我正在将现有的 Windows 窗体 C 应用程序迁移到 NET 5 0 并且我正在尝试遵循迁移文档 https learn microsoft com en us dotnet desktop winforms migration vie
  • CMake:执行宏/函数作为add_custom_command的命令

    我正在使用一个外部库 它提供了用于自动代码生成的 CMake 函数 以在我的 CMakeLists 中使用 问题是 每当我修改 CMakeLists 时 该函数都会再次运行 从而触发新生成但未更改的源的重新编译 我需要像 add custo
  • 如何让 forEach 循环等待每个 Ajax 函数完成

    我有一个array语句 我想循环遍历每个语句并提交给server via an ajax称呼 我必须确保每一个ajax请求在发送下一个请求之前执行 因为server边代码 我正在创建一个unique key为了这array的声明 发生的情况
  • 使用 PDO 设置连接超时

    我正在使用 PDO 从 MySQL 服务器获取数据 我注意到的是 如果 MySQL 服务器不可用 则需要really 相对 很长时间这段代码返回异常 try handle new PDO db type host db host dbnam
  • 如何将 CMD shell 变量展开两次(递归)

    使用 Windows XP CMD 命令行 我可以将变量展开两次 如下所示 set AAA BBB set BBB CCC for F usebackq tokens i in echo AAA do echo i 会回声CCC I e A
  • 调用未定义函数 pcntl_fork() php-fpm nginx

    我正在尝试使用pcntl fork 在 php fpm 中 但它不可用 我得到 Call to undefined function pcntl fork 尽管我已经评论过了disable functions in the php ini
  • 为什么固定大小的缓冲区只能是原始类型?

    我们必须与本机代码进行大量互操作 在这种情况下 使用不需要封送处理的不安全结构要快得多 但是 当结构包含非基本类型的固定大小缓冲区时 我们无法执行此操作 为什么 C 编译器要求固定大小缓冲区只能是基本类型 为什么固定大小的缓冲区不能由如下结
  • word2vec gensim 多种语言

    这个问题完全超出了我的想象 我正在使用 gensim 训练 Word2Vec 模型 我提供了多种语言的数据 即英语和印地语 当我试图找到最接近 人 的词时 我得到的是 model wv most similar positive man O