使用快速文本预训练模型作为Keras中的嵌入层

时间:2020-05-17 23:07:17

标签: python machine-learning keras nlp fasttext

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

我目前正在弄清模型的实际外观。我正在尝试将fasttext预训练模型实现为网络中的嵌入层。但由于这个原因,我有一些疑问。

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

2)我应该如何与快速文本模型交换Keras Embedding()?

现在我有这样的东西:

    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())放置快速文本矢量。

我希望我解释清楚。

1 个答案:

答案 0 :(得分:0)

如果您不打算微调嵌入,则只需加载FastText嵌入,将每个句子转换为二维(长度×嵌入暗淡)张量,然后将其用作网络的输入。

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

请注意,export const Parent: FC = ({items}) => { return ( <> <ListComponent items={items} /> <ChildWillBeIsolated /> </> ) } 构造函数的第二个参数不是序列长度(如代码片段中所示),而是词汇量中的单词数。