如何在FastText中使用预训练的单词向量?

时间:2020-11-05 23:25:23

标签: python fasttext

我刚刚开始使用FastText。我正在通过使用数据集的.csv文件作为输入来对小型数据集进行交叉验证。要使用此参数处理数据集,请执行以下操作:

 model = fasttext.train_supervised(input=train_file,
                                   lr=1.0,
                                   epoch=100,
                                   wordNgrams=2,
                                   bucket=200000,
                                   dim=50,
                                   loss='hs')

但是,我想使用on the FastText website提供的来自维基百科的经过预先训练的嵌入。可行吗如果是这样,我必须在参数列表中添加一个特定的参数吗?

2 个答案:

答案 0 :(得分:1)

动机

如果您的训练数据集很小,则可以从FastText预训练向量开始,使分类器从一些预先存在的知识开始。 为了提高分类器的性能,它可能是有益的或无用的:您应该进行一些测试。

从预先训练的向量开始训练fastText分类器

您可以从this page下载预先训练的向量(.vec文件)。

这些向量的尺寸为300。 您可以通过以下方式训练模型:

model = fasttext.train_supervised(input=TRAIN_FILEPATH, lr=1.0, epoch=100,
                             wordNgrams=2, bucket=200000, dim=300, loss='hs',
                             pretrainedVectors=VECTORS_FILEPATH)

更改矢量尺寸

您可能不需要更改向量尺寸。但是如果需要,您可以考虑通过以下三个步骤进行更改:

  • 下载.bin模型(从here
  • 减少.bin模型尺寸(请参见this
  • 将.bin模型转换为.vec文件(请参见this answer

答案 1 :(得分:0)

我没有在Facebook FastText文档中注意到在监督模式训练之前预加载模型的任何内容,也没有看到任何声称可以这样做的示例。

此外,由于在无监督模式(预测邻居)和有监督模式(预测标签)中词向量训练的目标是不同的,所以我不确定这种操作会有什么好处。

即使单词向量为培训提供了些微的开端,最终您还是希望进行足够的培训以使模型“收敛”到训练时的最佳状态任务,预测标签。而且,到那时,原始单词向量的所有剩余影响可能已被稀释为零,因为它们已针对其他任务进行了优化。

您为什么要这样做?用什么方式对您的数据进行典型的有监督的训练是不够的?从其他模式和数据集的词向量开始,您会期望得到什么好处?