强制 gensim 的 word2vec 向量为正?
Force gensim's word2vec vectors to be positive?
在 gensim 中有什么方法可以强制 word2vec 中学习的向量全部为正? (向量的所有元素都是正数)。我正在进行一项不同的任务,需要这些向量为正(原因真的很复杂,所以不要问为什么)
那么我强制gensim学习正向量的最简单方法是什么?
Gensim 没有允许在训练期间应用此额外 constraint/regularization 的内置功能。
您或许应该尝试解释 'really complicated' 提出这个奇怪请求的原因。可能有更好的方法来实现真正的最终目标,而不是将通常在原点周围浓密且平衡的矢量硬塞进非负表示中。
值得注意的是,一篇名为“All-but-the-Top: Simple and Effective Postprocessing for Word Representations”的论文建议可以通过后处理来改进词向量,以确保它们围绕原点更多平衡,而不是更少(这似乎是典型负采样配置的可靠副作用)。
如果您仍然有兴趣在相反的方向上进行实验——将常用的 word2vec 词向量转换为所有维度均为正的表示——我可以想到一些琐碎的、肤浅的方法来实现这一点。我不知道它们是否真的会保留或破坏载体中的有益特性——但你可以尝试一下,然后看看。例如:
- 您可以尝试简单地将所有负维度设置为 0.0 - 截断。 (丢失了很多信息,但如果一个非常简单的实验能给您带来您寻求的任何好处,则可能会给出快速指示。)
- 您可以找到出现在任何向量中任意位置的最大负维度,然后将其绝对值添加到所有其他维度。瞧!现在没有矢量维度低于 0.0。 (您也可以以每个维度的方式尝试此操作 - 仅使用最低维度 #0 值更正维度 #0。或者,尝试对每个维度进行其他重新缩放,以便先前的高度负值为 0.0,并且以前的高度正值保持原样或仅稍微移动。)
- 您可以尝试将原始词向量中的每个维度转换为转换集中的两个维度:一个是原始正值,如果是负值则为 0.0,第二个维度是原始值的绝对值负值,如果为正则为 0.0。 (或者类似地:一维是原始值的绝对值,一维是 0.0 或 1.0,具体取决于原始值是负还是正。)
可能还有其他更复杂的 factorization/decompositions 用于在仅具有非负个体值的转换数组中重新表示完整的词向量集,但我不知道它们,其他而不是认为可能值得搜索它们。
而且,这些转变中的任何一个是否对您的下一步有用,谁知道呢?但这可能值得一试。 (如果其中任何一个提供了令人惊讶的好结果,很高兴听到后续评论!)
在 gensim 中有什么方法可以强制 word2vec 中学习的向量全部为正? (向量的所有元素都是正数)。我正在进行一项不同的任务,需要这些向量为正(原因真的很复杂,所以不要问为什么)
那么我强制gensim学习正向量的最简单方法是什么?
Gensim 没有允许在训练期间应用此额外 constraint/regularization 的内置功能。
您或许应该尝试解释 'really complicated' 提出这个奇怪请求的原因。可能有更好的方法来实现真正的最终目标,而不是将通常在原点周围浓密且平衡的矢量硬塞进非负表示中。
值得注意的是,一篇名为“All-but-the-Top: Simple and Effective Postprocessing for Word Representations”的论文建议可以通过后处理来改进词向量,以确保它们围绕原点更多平衡,而不是更少(这似乎是典型负采样配置的可靠副作用)。
如果您仍然有兴趣在相反的方向上进行实验——将常用的 word2vec 词向量转换为所有维度均为正的表示——我可以想到一些琐碎的、肤浅的方法来实现这一点。我不知道它们是否真的会保留或破坏载体中的有益特性——但你可以尝试一下,然后看看。例如:
- 您可以尝试简单地将所有负维度设置为 0.0 - 截断。 (丢失了很多信息,但如果一个非常简单的实验能给您带来您寻求的任何好处,则可能会给出快速指示。)
- 您可以找到出现在任何向量中任意位置的最大负维度,然后将其绝对值添加到所有其他维度。瞧!现在没有矢量维度低于 0.0。 (您也可以以每个维度的方式尝试此操作 - 仅使用最低维度 #0 值更正维度 #0。或者,尝试对每个维度进行其他重新缩放,以便先前的高度负值为 0.0,并且以前的高度正值保持原样或仅稍微移动。)
- 您可以尝试将原始词向量中的每个维度转换为转换集中的两个维度:一个是原始正值,如果是负值则为 0.0,第二个维度是原始值的绝对值负值,如果为正则为 0.0。 (或者类似地:一维是原始值的绝对值,一维是 0.0 或 1.0,具体取决于原始值是负还是正。)
可能还有其他更复杂的 factorization/decompositions 用于在仅具有非负个体值的转换数组中重新表示完整的词向量集,但我不知道它们,其他而不是认为可能值得搜索它们。
而且,这些转变中的任何一个是否对您的下一步有用,谁知道呢?但这可能值得一试。 (如果其中任何一个提供了令人惊讶的好结果,很高兴听到后续评论!)