【问题标题】:How to load pre trained FastText Word Embeddings using Gensim?如何使用 Gensim 加载预训练的 FastText 词嵌入?
【发布时间】:2021-12-29 16:20:14
【问题描述】:

我下载了词嵌入from this link。我想在Gensim 中加载它来做一些工作,但我无法加载它。我找到了很多资源,但没有一个有效。我正在使用Gensim 版本4.1。

我试过了

gensim.models.fasttext.load_facebook_model('/home/admin1/embeddings/crawl-300d-2M.vec')
gensim.models.fasttext.load_facebook_vectors('/home/admin1/embeddings/crawl-300d-2M.vec')

它正在向我展示

NotImplementedError: Supervised fastText models are not supported

我尝试使用FastText.load('/home/admin1/embeddings/crawl-300d-2M.vec',) 加载它,但随后显示UnpicklingError: could not find MARK。

另外,使用

【问题讨论】:

    标签: nlp stanford-nlp gensim fasttext


    【解决方案1】:

    根据NotImplementedError,这是 Gensim 不支持的一种完整的 Facebook FastText 模式,-supervised 模式。

    很遗憾,“你如何加载这些?”的答案是“你没有”。

    .vec 文件仅包含纯文本格式的全词向量 - 没有用于合成 OOV 向量或监督分类输出特征的子词信息。这些可以加载到KeyedVectors 模型中:

    kv_model = KeyedVectors.load_word2vec_format('crawl-300d-2M.vec')
    

    【讨论】:

    • 我已经使用过它,但无法进一步训练。想法是将预训练的权重转移到我的 2M 行自定义数据集。无论如何,我认为这是不可能的。
    • 啊哈。这是可能的,但这种微调很棘手,容易出错,并且在 Gensim 中没有得到很好的支持。我认为扩展自己的语料库几乎总是更好。 (在最近的另一个答案中有更多相关的想法,因为您尝试做的事情很多:stackoverflow.com/questions/70533179/…)
    • 对重要参数有什么粗略的了解吗?如果我从头开始训练嵌入,我怎么知道哪个更好?每个时代都没有损失或类似的东西来比较?我认为最终的损失是,我将它与optuna 或gridsearch 一起使用,这将花费很多时间。
    • 训练减少了内部损失(对于单词到单词的预测),但它在 Gensim 中的报告是错误的,并且它可能与您的下游目标不相关。最终,要在 2 个差异模型(现成的,或从您自己的备用参数/数据训练运行)之间进行选择,您需要创建自己的项目特定定量评估,以检查模型在满足您的需求方面的效果。例如,如果您可以找到或逐渐增加“应该”比其他文档更接近的文档集,您可以根据模型与预期的匹配程度对模型进行评分。
    • 这正是我害怕的。在某些参数上训练嵌入 -> 将其传递给模型,然后对其进行训练 -> 重复。这将需要很多时间。无论如何,感谢您提供的所有见解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2019-11-26
    • 2019-10-27
    • 2019-12-30
    • 1970-01-01
    相关资源
    最近更新 更多