单个词具有多个类别特征的词嵌入

Word embeddings with multiple categorial features for a single word

我正在寻找一种在 Pytorch 中使用 LSTM 层实现词嵌入网络的方法,以便 nn.Embedding 层的输入具有与词 ID 向量不同的形式。

在我的例子中,每个词都有一个对应的向量,因此我语料库中的句子是向量的向量。因此,例如,我可能有单词 "King" 和向量 [500, 3, 18],其中 500 是单词 ID,3 是单词颜色,18 是字体大小等。嵌入层的作用这里是做一些自动功能 reduction/extraction.

如何将此类表单数据提供给嵌入层?或者您有什么更好的建议吗?

我不确定你所说的带 LSTM 的 word2vec 算法是什么意思,因为原始的 word2vec 算法不使用 LSTM,而是直接使用嵌入来预测周围的词。

无论如何,您似乎要嵌入多个分类变量。在示例中,它是单词 ID、颜色 ID 和字体大小(如果将其四舍五入为整数值)。您有两个选择:

  1. 您可以为所有可能的功能组合创建新 ID,并为它们使用 nn.Embedding。然而,存在这样的风险,即大多数 ID 在数据中显得过于稀疏,无法学习可靠的嵌入。

  2. 每个功能都有单独的嵌入。然后,您需要将这些特征的嵌入组合在一起。您基本上有三种选择:

    • 只需连接嵌入并让网络的后续层解析组合。
    • 为所有特征选择相同的嵌入维度并取平均。 (我可能会从这个开始。)
    • 添加一个 nn.Dense 层(或两个,第一个有 ReLU 激活,第二个没有激活),它将显式组合你的特征的嵌入。

如果您需要包含无法离散化的连续特征,您始终可以采用连续特征,在它们之上应用一两层,然后将它们与离散特征的嵌入相结合。