【问题标题】:Upload a pre-trained spanish language word vectors and then retrain it with custom sentences? (GENSIM -FASTTEXT)上传预训练的西班牙语词向量,然后用自定义句子重新训练? (GENSIM -FASTTEXT)
【发布时间】:2022-01-16 16:53:33
【问题描述】:

我正在尝试上传预先训练的西班牙语单词向量,然后使用自定义句子对其进行重新训练:

!pip install fasttext
import fasttext
import fasttext.util
#download pre-trained spanish language word vectors c
fasttext.util.download_model('es', if_exists='ignore')  # Spanish
ft = fasttext.load_model('cc.es.300.bin')

但是一旦我尝试更新词汇表,它就会给我这个 AttributeError:

ft.build_vocab(sentences, update=True)
AttributeError: '_FastText' object has no attribute 'build_vocab'

有什么建议吗?

【问题讨论】:

  • 请阅读以下答案:stackoverflow.com/a/64711974/10883094(和stackoverflow.com/a/58342618/10883094)。在任何情况下,您都必须使用这样的语法:model = fasttext.train_supervised(input=TRAIN_FILEPATH, ..., pretrainedVectors=VECTORS_FILEPATH)
  • 谢谢,我正在检查这些答案,但我需要重新训练一个无监督模型,我有一个小型语料库,首先我想加载一个西班牙语语料库,然后用我的小型语料库重新训练它。对于文档中的内容:'''model = fasttext.train_unsupervised('data.txt', model='skipgram')''' 或者如果我直接加载它 '''model = fasttext.load_model("model_filename. bin")''' 我找不到如何用我自己的数据集重新训练fasttext模型,我认为我不必使用''' fasttext.train_supervisedfasttext.train_supervised'''

标签: python nlp gensim fasttext


【解决方案1】:

build_vocab() 方法支持 FastText 算法的 Gensim library 实现中的一个步骤,而不是您似乎正在加载的 original fastttext package from Facebook。 (您正在混合用于两个不同库的代码。)

如果您改用 Gensim 代码,而不是 Facebook 的实现,则在尝试使用 build_vocab() 时不会出现同样的错误。

但请注意,您正在尝试对现有模型进行增量再训练,这是一种高级/实验性技术,很容易适得其反。因此,如果没有专业知识和严格检查额外的并发症是否有帮助,通常是个坏主意。

【讨论】:

  • 感谢您的评论。我知道对于新手来说这不是一件容易的事,但我真的需要这样做,我正在使用一个小型语料库,首先我想加载一个西班牙语语料库,然后用我的小型语料库重新训练它。你知道可能有帮助的教程或文章吗?
  • 我不知道有什么好的教程可以对 FastText 模型进行这种增量调整 - 我看到的大多数尝试都被严重误导了。为什么你认为在你的情况下需要一个无证的、困难的过程? (您确定通用向量不够好用吗?您确定不能通过自己组装一个足够大且具有代表性的语料库来训练新向量吗?)
猜你喜欢
  • 2019-11-26
  • 2019-10-27
  • 2019-02-12
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 2018-11-11
  • 1970-01-01
相关资源
最近更新 更多