【问题标题】:One-hot encoding to word2vec embedding对 word2vec 嵌入的 One-hot 编码
【发布时间】:2019-07-29 22:25:12
【问题描述】:

我正在尝试为我手头的分类信息创建向量。此信息旨在用于帮助 seq2seq 网络用于 NLP 目的(如摘要)。

为了了解这个想法,也许举个例子会有所帮助:

Sample Text: shark attacks off Florida in a 1-hour span

假设我们有这个假设的分类信息:

1. [animal, shark, sea, ocean]
2. [animal, tiger, jungle, mountains]
...
19. [animal, eagle, sky, mountains]

我想将示例文本逐个令牌提供给 LSTM 网络(如 seq2seq 网络)。我使用预训练的 GloVe 嵌入作为输入到网络中的原始嵌入,但也希望将密集向量连接到表示其类别的每个标记。

目前,我知道我可以简单地使用 one-hot 嵌入(0-1 二进制)。因此,例如,RNN 网络的第一个输入(shark)将是:

# GloVe embeddings of shark + one-hot encoding for shark, + means concatenation
[-0.323 0.213 ... -0.134 0.934 0.031 ] + [1 0 0 0 0 ... 0 0 1] 

问题是我的类别数量非常多(大约 20,000 个)。在互联网上搜索后,在我看来人们建议使用 word2vec 而不是 one-hots。但是,我无法理解 word2vec 在这种情况下如何展示分类特征的基本概念。有人有更清晰的想法吗?

【问题讨论】:

  • “假设的分类信息”是指应用于一个文本的类别集(例如上面的示例),还是适用于 19 个不同文本的替代类别集(不是显示),还是别的什么?已知类别是每个文本还是每个标记?已知类别是如何分配的?
  • @gojomo 不完全是每个样本,但这些类别适用于每个样本中的每个“令牌”。根据这个定义,已知类别是每个令牌的。我主要想知道是否可以将这些 one-hot 向量转换为使用 w2v 方法训练的低维向量。
  • 我不太明白你的意思。这些 0 到 19 的假设类别集合中的任何一个是否意味着作为实际应用于单独单词“鲨鱼”的类别的示例? (如果是这样,奇怪的是还有一个名为“鲨鱼”的类别。)已知类别是如何分配的?
  • 对不起,如果我有点不清楚。我想说这 19 条假设线中的每条线都是一个类别。比如,在第一类中,“动物”、“鲨鱼”和“鱼”属于第一类——我只是为了让你更好地理解而编辑了这些类别。您可以以树的形式考虑这些类别,以“动物”作为其根节点,从叶子到根的路径表示一个类别。我有一张表,其中包含这些单词以及它们的 ID 和父 ID。在收集带有父母(和祖先)身份证的叶子后,我得到了这些类别。 @gojomo

标签: deep-learning word2vec one-hot-encoding


【解决方案1】:

Word2Vec 不能用于分类。这只是底层算法。

对于分类,您可以使用 Doc2Vec 或类似的东西。

它基本上需要一个文档列表,每个文档都分配有唯一的 ID。在训练之后,它会在文档之间建立类似于 word2vec 为单词建立的关系。然后当你给它一个未知文档时,它会告诉你最相似的前 n 个文档,如果你的文档之前定义了标签,你可以假设未知文档可以以相同的方式标记。

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2020-09-18
    • 2019-07-14
    • 2019-11-18
    • 2020-02-08
    • 2018-05-22
    相关资源
    最近更新 更多