如何使用gensim使用deepset的词嵌入预训练模型?

问题描述 投票:0回答:4

我试图理解 word2vec,并决定尝试使用德语 word2vec 模型。然后我找到了deepset的页面关于他们的预训练模型,但我不明白如何使用(加载)word2vec模型。我期待一个文件,但有“Vectors”和“Vocab”文本文件。如何使用这些文件使用 gensim(或任何其他工具)加载预先训练的模型?

更新: 我已经尝试了@gojomo的答案,但收到了这个错误:

Traceback (most recent call last):
  File "/home/bugra/word2vec_imp/pretrained_models/testtt.py", line 11, in <module>
    binary=False)
  File "/home/bugra/word2vec_imp/project_envv/lib/python3.7/site-packages/gensim/models/keyedvectors.py", line 1549, in load_word2vec_format
    limit=limit, datatype=datatype)
  File "/home/bugra/word2vec_imp/project_envv/lib/python3.7/site-packages/gensim/models/utils_any2vec.py", line 277, in _load_word2vec_format
    vocab_size, vector_size = (int(x) for x in header.split())  # throws for invalid file format
  File "/home/bugra/word2vec_imp/project_envv/lib/python3.7/site-packages/gensim/models/utils_any2vec.py", line 277, in <genexpr>
    vocab_size, vector_size = (int(x) for x in header.split())  # throws for invalid file format
ValueError: invalid literal for int() with base 10: "b'UNK'"

因此,在 Traceack 中,

vocab_size, vector_size = (int(x) for x in header.split())
header
是 gensim 页面中 Vector 文本的第一行。它看起来像这样:

b'UNK' -0.07903 0.01641 0.006979 -0.035038 0.006474 0.002469 -0.050103 0.142654 -0.03505 0.003106 -0.021312 0.094076 -0.018255 -0.098097 0.087143 0.105799 0.008606 -0.001315 0.069005 0.062015 0.019944 -0.007749 -0.007412 0.050015 -0.083615 0.007712 0.033161 0.017965 -0.06154 -0.017696 0.061967 0.053028 0.038143 -0.07057 0.01561 0.019588 -0.041708 0.034371 -0.066838 -0.059769 0.075711 -0.114826 0.014009 0.050187 -0.01899 -0.076014 -0.052502 0.086082 0.049812 0.008456 -0.01283 0.039918 -0.001924 -0.003752 0.031073 0.034325 0.040086 0.078946 -0.012194 0.056323 0.126129 -0.024503 0.026304 -0.074797 -0.098972 0.003672 0.051386 -0.017574 -0.050253 -0.07677 0.004362 -0.069935 -0.048108 0.020127 0.007066 -0.024247 0.041911 0.03377 -0.011906 -0.0168 -0.00355 -0.003168 0.05164 -0.055769 0.01488 -6e-06 0.094575 -0.066246 -0.111004 -0.031954 0.006958 0.005259 0.15825 0.102919 0.010383 -0.064236 -0.037729 -0.031751 -0.069492 -0.004198 -0.034654 -0.060518 -0.046611 -0.048463 -0.010096 -0.057894 -0.046687 0.062827 0.016907 0.096869 -0.036037 -0.106403 0.056466 0.095621 -0.046383 0.090213 -0.019204 -0.116271 -0.00824 -0.017732 0.037387 -0.021405 -0.040493 -0.059114 0.12289 0.032563 0.103712 0.072411 -0.106944 -0.110485 -0.027564 0.023977 -0.048099 0.036966 -0.11356 -0.009166 0.074402 0.128162 0.080086 0.112749 0.050494 0.064998 0.089217 0.029182 -0.07277 0.058653 0.061047 -0.05293 -0.01979 0.107459 0.002719 -0.008774 -0.098009 0.009321 0.099869 0.024181 -0.071247 -0.054372 0.019997 0.024442 0.108639 0.053727 -0.089804 0.118491 -0.044407 -0.045336 0.078483 0.059462 -0.012287 0.028941 0.064551 0.066738 0.029614 0.092768 0.021783 -0.018141 -0.032692 0.000178 0.021413 0.044657 -0.041903 0.027439 -0.029112 -0.027419 -0.091497 0.00712 -0.076297 -0.097602 -0.098875 -0.067403 -0.015912 0.055845 0.057585 -0.061145 -0.006828 0.044573 0.049632 0.014541 -0.024579 -0.045455 0.095474 -0.02978 -0.060053 -0.005672 -0.002711 0.059481 -0.060563 0.047562 -0.086001 0.064536 0.196527 -0.105742 -0.019043 0.038534 -0.099681 0.031009 -0.020548 -0.058781 0.064247 0.008213 0.126322 0.029859 0.013129 -0.021303 0.043993 0.033347 0.020245 0.037738 -0.02178 0.027693 -0.07024 0.004687 0.045271 -0.022966 0.014069 0.022861 -0.02787 0.082912 -0.049544 0.016079 -0.004684 0.000572 0.077382 0.036401 0.054974 -0.039538 0.002119 0.034002 -0.008836 -0.014758 0.00959 -0.064647 -0.034766 0.016912 -0.036381 -0.037106 0.073451 -0.098941 -0.092281 -0.018656 0.050538 0.041422 0.041235 0.011248 -0.106058 0.066443 0.083865 0.094636 0.004414 -0.092855 -0.027255 0.005234 0.066584 0.055394 0.023019 -0.001949 -0.066794 -0.064739 0.038924 -0.016647 0.000555 0.02428 0.016469 -0.0467 -0.035343 -0.066789 -0.025929 -0.023397 0.062855 0.020142 -0.047568 0.010299 -0.021509 -0.02826 0.029225 0.01803 0.024336 0.018226 -0.009453 -0.068584

如有任何帮助,我们将不胜感激。

python machine-learning gensim word2vec word-embedding
4个回答
2
投票

在 Gensim 中,从具有关联

vocab.txt
的向量的格式正确的纯文本文件开始,您可以尝试:

from gensim.models import KeyedVectors

vecs = KeyedVectors.load_word2vec_format('vectors.txt', fvocab='vocab.txt', binary=False)

但是,根据下面的后续讨论,来自 Deepset 的那些文件目前格式不正确。

这些应该由 Deepset 修复,或者您应该寻找其他来源来获取格式正确的词向量文件,例如

Facebook 的针对多种语言的 Wikipedia 训练向量。)


1
投票
这是 word2vect 模型的输出,而不是经过训练的模型

他们在三个不同的 github 存储库中共享了训练嵌入的代码。他们与 AWS 实例 (EC2) 上的 docker 一起进行训练

https://gitlab.com/deepset-ai/open-source/word2vec-embeddings-de

从存储库中,步骤如下:

    从德语维基下载最新文章
  • 用gensim将它们转换成文本,单个单词用空格分隔,不带标点符号
  • 训练 word2vec 并将生成的嵌入文件保存在挂载的 OUTPUTDIR 中
他们使用 docker 来运行模型。


0
投票
如果您想使用

gensim

,下面的食谱可能会帮助您。

https://github.com/devmount/GermanWordEmbeddings

您只需下载最新的维基基础数据即可。如果您想清洁它并需要帮助,请在下面发表评论。我也会为您提供详细步骤。

另外,下面是有用的链接

https://radimrehurek.com/gensim/models/word2vec.html


0
投票
如果你只需要词嵌入,你可以这样做:

input_file =“Embeddings/DeepSetAI/glove.txt” deepsetai_vectors = KeyedVectors.load_word2vec_format(input_file,binary=False,no_header=True) 嵌入 = deepsetai_vectors[单词] 为我做手套嵌入工作

先用请求库下载文件

© www.soinside.com 2019 - 2024. All rights reserved.