来自两个不同文本的同一个词的词嵌入
Word embeddings for the same word from two different texts
如果我计算同一个词的 word2vec(比如,"monkey"),一次基于 1800 年的大文本,另一次基于 2000 年的大文本,那么从我的角度来看,结果将无法比较。我对吗?为什么会这样?
我有以下想法:过去的文本可能具有完全不同的词汇,这就是问题所在。但是如何才能治愈它(使嵌入具有可比性)?
提前致谢。
Word2Vec
模型中的任何单词都没有 "right" 的位置 – 只是在经过一系列推送之后,相对于其他单词和训练数据而言效果相当好的位置-增量训练的拉动。事实上,每个模型都以低幅度 随机 位置的词向量开始,并且训练本身包括设计的随机性(例如通过随机选择哪些词用作负面对比示例)和执行顺序随机性(由于操作系统的某种程度的任意CPU-调度选择,多个线程以略微不同的速率取得进展)。
因此,您的 "sentences-from-1800" 和 "sentences-from-2000" 模型会有所不同,因为训练数据不同——可能是因为作者的用法不同,而且每个语料库只是所有现有的用法。而且:连续两次在 "samples-from-1800" 语料库上训练会产生不同的模型!每个这样的模型应该与另一个模型差不多,就同一模型中的单词相对于其他单词的相对 distances/positions 而言。但是个别单词的坐标可能非常不同,并且没有可比性。
为了使单词成为 "in the same coordinate space",必须采取额外的步骤。单词在同一个 space 中最直接的方法是让它们在同一个模型中一起训练,它们交替出现在对比的用法示例中,包括与其他常用词。
因此,例如,如果您需要将 'calenture'(热带发烧的旧词,可能不会出现在您的 2000 年代语料库中)与 'penicillin'(在 20 世纪被发现)进行比较,您最好的选择是将两个语料库混洗成一个语料库并训练一个模型。如果每个词出现在两个时代出现的某些词附近,具有相对稳定的含义,那么它们的词向量可能具有可比性。
如果 'monkey' 只需要一个组合词向量,这种方法也可能适合您的目的。是的,一个词的意思会随着时间而漂移。但即使在任何一个时间点,单词都是 多义的:它们具有多重含义。具有多种含义的单词的词向量往往会移动到它们每个替代含义之间的坐标。因此,即使 'monkey' 在含义上发生了漂移,使用组合时代语料库仍然可能会为您提供 'monkey' 的单个向量,合理地代表其在所有时代的平均含义。
如果您特别想模拟词义随时间的变化,那么您可能需要其他方法:
您可能想为时代构建单独的模型,但基于某些词可能变化不大而其他词变化很大的想法,学习它们之间的翻译。 (有一些方法可以使用某些 "anchor words",假定具有相同的含义,来学习不同 Word2Vec
模型之间的转换,然后将相同的转换应用于其他单词以将它们的坐标投射到另一个模型中。)
或者,制作一个组合模型,但用特定于时代的替代标记概率地替换您想要跟踪其含义变化的单词。 (例如,您可以根据需要用 'monkey@1800' 和 'monkey@2000' 替换某些 'monkey' 的出现,这样最终您会得到 three 'monkey'、'monkey@1800'、'monkey@2000' 的词向量,让您可以比较不同的意义。)
'HistWords' 项目是'HistWords' 项目:
如果我计算同一个词的 word2vec(比如,"monkey"),一次基于 1800 年的大文本,另一次基于 2000 年的大文本,那么从我的角度来看,结果将无法比较。我对吗?为什么会这样? 我有以下想法:过去的文本可能具有完全不同的词汇,这就是问题所在。但是如何才能治愈它(使嵌入具有可比性)?
提前致谢。
Word2Vec
模型中的任何单词都没有 "right" 的位置 – 只是在经过一系列推送之后,相对于其他单词和训练数据而言效果相当好的位置-增量训练的拉动。事实上,每个模型都以低幅度 随机 位置的词向量开始,并且训练本身包括设计的随机性(例如通过随机选择哪些词用作负面对比示例)和执行顺序随机性(由于操作系统的某种程度的任意CPU-调度选择,多个线程以略微不同的速率取得进展)。
因此,您的 "sentences-from-1800" 和 "sentences-from-2000" 模型会有所不同,因为训练数据不同——可能是因为作者的用法不同,而且每个语料库只是所有现有的用法。而且:连续两次在 "samples-from-1800" 语料库上训练会产生不同的模型!每个这样的模型应该与另一个模型差不多,就同一模型中的单词相对于其他单词的相对 distances/positions 而言。但是个别单词的坐标可能非常不同,并且没有可比性。
为了使单词成为 "in the same coordinate space",必须采取额外的步骤。单词在同一个 space 中最直接的方法是让它们在同一个模型中一起训练,它们交替出现在对比的用法示例中,包括与其他常用词。
因此,例如,如果您需要将 'calenture'(热带发烧的旧词,可能不会出现在您的 2000 年代语料库中)与 'penicillin'(在 20 世纪被发现)进行比较,您最好的选择是将两个语料库混洗成一个语料库并训练一个模型。如果每个词出现在两个时代出现的某些词附近,具有相对稳定的含义,那么它们的词向量可能具有可比性。
如果 'monkey' 只需要一个组合词向量,这种方法也可能适合您的目的。是的,一个词的意思会随着时间而漂移。但即使在任何一个时间点,单词都是 多义的:它们具有多重含义。具有多种含义的单词的词向量往往会移动到它们每个替代含义之间的坐标。因此,即使 'monkey' 在含义上发生了漂移,使用组合时代语料库仍然可能会为您提供 'monkey' 的单个向量,合理地代表其在所有时代的平均含义。
如果您特别想模拟词义随时间的变化,那么您可能需要其他方法:
您可能想为时代构建单独的模型,但基于某些词可能变化不大而其他词变化很大的想法,学习它们之间的翻译。 (有一些方法可以使用某些 "anchor words",假定具有相同的含义,来学习不同
Word2Vec
模型之间的转换,然后将相同的转换应用于其他单词以将它们的坐标投射到另一个模型中。)或者,制作一个组合模型,但用特定于时代的替代标记概率地替换您想要跟踪其含义变化的单词。 (例如,您可以根据需要用 'monkey@1800' 和 'monkey@2000' 替换某些 'monkey' 的出现,这样最终您会得到 three 'monkey'、'monkey@1800'、'monkey@2000' 的词向量,让您可以比较不同的意义。)
'HistWords' 项目是'HistWords' 项目: