如何使用 GloVe 进行文本旋转?

数据挖掘 文本挖掘 词嵌入
2022-02-15 16:59:47

您好,我正在构建一个用于文本旋转的 python 程序。我读过有关 GloVe、word2vec、doc2vec 或 text2vec 的信息。我知道他们所做的是将每个单词表示为语义向量。

所以我想如果我训练一个 GloVe,我可以用它来寻找同义词,还是更多?

编辑:我想出了一个策略:

  1. 首先我训练一个 doc2vec 模型。目标是建立短语的语义向量
  2. 然后我使用我原来的段落输入。我一个字一个字地用同义词(由 nltk 或其他同义词 db 提供)随机更改它。在最终旋转一个单词之前,我计算了更改段落的 doc2vec 并计算了原始段落矢量化的距离。如果距离很小,我只会更改同义词。

你觉得这听起来如何?

1个回答

所以我想如果我训练一个 GloVe,我可以用它来寻找同义词,还是更多?

如果要找到同义词,GloVe(向量)并不是完美的词表示。由于 GloVe 向量是根据它们出现的上下文生成的(上下文表示句子中学习单词之前和之后的单词),您可能会发现反义词也将具有相似的 GloVe 向量,因为它们也会出现在相同的上下文中. 例如。

考虑以下句子中使用的“好”和“坏”两个词:

约翰是一个在战争中受伤的好孩子。约翰是一个在战争中受伤的坏孩子。

在这里,“好”和“坏”这两个词出现在相同的上下文中。前面的上下文是“约翰是一个”,后面的上下文是“谁在战争中受伤”。

因此,它们的 GloVe 向量不会有太大区别,并且在旋转新词时,您可能会完全改变句子的含义。

为了解决上述问题,GloVe 向量的一个很好的替代方法是“retro-fit 向量”。这是原始文章的链接。这是实际向量的 GitHub 链接因为它们是为了语义相似性而学习的。我建议使用这些改造向量,因为您似乎对同义词的词汇替换感兴趣。