python - 在 Keras 中使用 fasttext 预训练模型作为嵌入层

标签 python machine-learning keras nlp fasttext

我的目标是创建文本生成器,它将根据我提供给它的学习集生成非英语文本。

我目前正处于确定模型实际外观的阶段。我正在尝试将 fasttext 预训练模型实现为网络中的嵌入层。但正因为如此,我有一些问题。

1)如何正确准备fasttext模型?我应该只下载矢量,我需要的语言,并将它们包含在项目中,还是我必须先使用 skipgramcbow 或以其他方式构建它?

2) 我应该如何将 Keras Embedding() 与 fasttext 模型交换?

现在我有这样的东西:

    model = Sequential()
    model.add(Embedding(vocabulary_size, seq_len, input_length=seq_len, output_dim=OUTPUT_DIM))
    model.add(LSTM(50, return_sequences=True))

而不是 model.add(Embedding()) 我想放入 fasttext 向量。

我希望我解释清楚了。

最佳答案

如果您不打算微调嵌入,我只会加载 FastText 嵌入,将每个句子变成一个二维(长度 × 嵌入暗淡)张量,并将它们用作网络的输入。

如果您想微调 FastText 嵌入,它们当然需要成为 Keras 模型的一部分。在这种情况下,您需要使用从 FastText 模型中提取的嵌入矩阵来初始化嵌入层(您只需堆叠所有 ord 向量)。这是使用 constant initializer 完成的.无论如何,您还需要保留一个字典,将单词转换为嵌入矩阵中的索引。

请注意,Embedding 构造函数的第二个参数不是序列长度(如您的代码片段中所示),而是词汇表中的单词数。

关于python - 在 Keras 中使用 fasttext 预训练模型作为嵌入层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61859973/

相关文章:

python - 从输入的 NLP 句子中提取关键字的最佳方法

python - 计算 CNN 层数

python - 在字符串中使用变量(Python)

python - Pyinstaller 不能与线程一起正常工作

python - Google 应用引擎 ReferenceProperty 与 Key

image - 对图像文件中的类型样本进行分类

machine-learning - 如何计算神经网络中的循环?

python - Keras 卷积自动编码器空白输出

python - TensorFlow, tf.reshape 导致 "Gradients do not exist for variables"

python - 可以从 functools.lru_cache 替换或删除特定键吗?