我想将之前训练好的 word2vec 模型加载到 gensim 中。问题在于文件格式。它不是 .bin 文件格式,而是 .tar 文件。它是来自莱比锡大学的模型/文件deu-ch_web-public_2019_1M.tar.gz。该模型还列在 HuggingFace 上,其中列出了英语和德语的不同 word2vec 模型。
我首先尝试:
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('deu-ch_web-public_2019_1M.tar.gz')
--> ValueError:以 10 为基数的 int() 的文字无效:'deu-ch_web-public_2019_1M
然后我用 7-Zip 解压缩该文件并尝试了以下操作:
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('deu-ch_web-public_2019_1M.tar')
--> ValueError:以 10 为基数的 int() 的文字无效:'deu-ch_web-public_2019_1M
from gensim.models import word2vec
model = word2vec.Word2Vec.load('deu-ch_web-public_2019_1M.tar')
--> UnpicklingError: 找不到 MARK
然后我就有点绝望了...
import gensim.downloader
model = gensim.downloader.load('deu-ch_web-public_2019_1M.tar')
--> ValueError:模型/语料库名称不正确
谷歌搜索我发现了如何使用 gensim 加载 .bin 模型的有用信息(参见此处和此处)。按照这个thread,用 gensim 加载 .tar 文件似乎很棘手。特别是如果一个人没有一个 .txt 文件,而是有五个 .txt 文件(如本例所示)。我找到了一个如何使用tensorflow读取.tar文件的答案。由于我对tensorflow不熟悉,所以我更喜欢使用gensim。任何如何解决问题的想法都值得赞赏。
.tar
文件是一个或多个目录和文件的捆绑包 - 请参阅 https://en.wikipedia.org/wiki/Tar_(computing) - 因此不是您应该使用的那种单模型文件Gensimn要打开了。
相反,与
.zip
文件一样,您可以使用一些特定用途的软件将 .tar
内的任何文件提取到单独的文件中 - 然后将 Gensim 分别指向这些文件(如果它们是 Gensim 理解的格式)。
从
.tar.gz
文件(已压缩并压缩)中提取单个文件的典型命令行操作是:
tar -xvzf deu-ch_web-public_2019_1M.tar.gz
这告诉命令使用
x
erbose 报告来提取v
,同时也取消z
滑动f
ile deu-ch_web-public_2019_1M.tar.gz
。然后您将拥有一个或多个新的本地文件,它们是您感兴趣的实际(未打包)文件。
在某些图形 UI 文件浏览器中,例如 MacOS“Finder”,只需双击
deu-ch_web-public_2019_1M.tar.gz
上执行默认的“打开”即可执行此扩展(无需 tar
命令行)。
但请注意:您链接的利比锡大学页面将这些文件描述为“语料库”(训练文本),而不是经过训练的词向量集或 word2vec 模型。 我查看了你所指的“2019 - 瑞士 - 公共网络文件”,里面是一个目录(文件夹)
deu-ch_web-public_2019_1M
,里面有7个不同格式的
.txt
文件和1个.sql
文件。但这些都不是任何经过训练的词向量——只是文本和文本统计。您可以使用它们自己训练模型。 deu-ch_web-public_2019_1M-sentences.txt
最接近您的需求,即 100 万个纯文本句子。但它仍然不是最佳格式:每行前面都有一个多余的行号,并且尚未被标记为单词标记(这可能会删除标点符号,或将其保留为不同的标记)。而且,由于总共只有 1500 万个单词,对于创建强大的 word2vec 模型来说仍然相当小。