【问题标题】:Can't load the pre-trained word2vec of korean language无法加载韩语预训练的word2vec
【发布时间】:2022-01-24 05:58:30
【问题描述】:

我想下载并加载预训练的 word2vec 用于分析韩语文本。

我在这里下载预训练的 word2vec:https://drive.google.com/file/d/0B0ZXk88koS2KbDhXdWg1Q2RydlU/view?resourcekey=0-Dq9yyzwZxAqT3J02qvnFwg 来自 30+ 种语言的 Github 预训练词向量:https://github.com/Kyubyong/wordvectors

我的 gensim 版本是 4.1.0,因此我使用了: KeyedVectors.load_word2vec_format('./ko.bin', binary=False) 加载模型。但是有一个错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

我已经尝试了很多选项,包括在 stackoverflow 和 Github 中,但仍然无法正常工作。 你介意让我找到合适的解决方案吗?

谢谢,

【问题讨论】:

    标签: gensim word2vec


    【解决方案1】:

    虽然https://github.com/Kyubyong/wordvectors 的页面不清楚作者选择的格式,但请查看其源代码...

    https://github.com/Kyubyong/wordvectors/blob/master/make_wordvectors.py#L61

    ...使用 Gensim 模型 .save() 方法显示它。

    此类保存的模型应使用同一模型类的.load() 类方法重新加载。例如,如果 Word2Vec 模型保存为...

    model.save('language.bin')
    

    ...然后可以重新加载...

    loaded_model = Word2Vec.load('language.bin')
    

    请注意:

    • 以这种方式保存的模型通常会拆分为多个文件,这些文件应该保存在一起(并且都以相同的根名称开头​​) - 但我在这里看不到这些文件。
    • 这项工作似乎有 5 年的历史,基于 Gensim 的 1.0 之前的版本 - 因此将模型直接加载到最新的 Gensim 中可能会出现问题。如果您确实遇到了此类问题,并且绝对需要使这些向量起作用,您可能需要暂时使用 Gensim 的早期版本来.load() 模型。然后,您可以使用 .save_word2vec_format() 保存纯向量,以便以后在任何版本中重新加载。 (或者,使用可以加载模型的最新临时版本,将模型重新保存为.save(),然后使用可以读取那个模型的最新版本重复该过程,直到您到达当前Gensim。)

    但是,您可能还想找到一组更新的、记录更好的预训练词向量。

    例如,Facebook 在https://fasttext.cc/docs/en/pretrained-vectors.html(仅在 Wikipedia 上训练)或 https://fasttext.cc/docs/en/crawl-vectors.html(在 Wikipedia 和网络爬虫数据上训练)为多种语言提供了“文本”格式和“bin”格式的 FastText 预训练向量)。

    “文本”格式实际上应该可以使用KeyedVectors.load_word2vec_format(filename, binary=False) 加载,但只会包含全词向量。 (也可以相对容易地查看为文本,或者编写简单的代码以转换为其他格式。)

    “bin”格式是 Facebook 自己的原生 FastText 模型格式,应该可以使用 load_facebook_model()load_facebook_vectors() 实用程序方法加载。然后,加载的模型(或向量)将能够创建 FastText 算法的基于子字符串的猜测向量,即使对于许多不在模型或训练数据中的单词也是如此。

    【讨论】:

    • 我尝试安装版本 ' 我的代码:word2vec_path = './gensim-data/ko/ko.bin' word2vec = gensim.models.Word2Vec.load(word2vec_path)
    • 如果在尝试了一堆版本之后你找不到一个可行的,为了帮助调试一个特定的问题,你想分享 exact 版本 & 完整的错误消息(包括所涉及的代码行/文件的“回溯”),用于您卡住的位置。而且,在这些微小的 cmets 中很难做到的程度,在这种情况下,编辑您的问题以附加新的格式良好、完整的信息可能是有意义的。
    • 我写答案是为了让它们成为将来帮助他人的可查找参考,所以我不使用 Stack Overflow 奇怪的“聊天”功能,它会隐藏搜索中的信息。没有确切版本、代码和完整“回溯”的错误本身对于推断出了什么问题并不是很有用。并且仍然:作为具有最少文档的项目的输出,5 年没有更新,文件可能只是被破坏了。 (你有任何证据表明任何人在任何时候都可以使用该文件吗?)
    • 您可能希望使用一组新文件发布一个新问题,其中包含这些新问题的完整详细信息 - 这可能是您的环境中存在错误(旧)Gensim 版本的问题,或者进口。 (要加载完整的现代 Facebook FastText 模型,您应该使用最新的 Gensim。)
    • 非常感谢@gojomo
    猜你喜欢
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多