2017-08-08 63 views
1

我使用单词嵌入来查找两个句子之间的相似度。使用word2vec,如果一个句子是英语,另一个是荷兰语(尽管不是很好),我也会得到一个相似性度量。跨多种语言的语义相似度

所以我开始想知道是否可以计算两种不同语言的两个句子之间的相似性(没有明确的翻译),特别是如果语言有一些相似之处(英语/荷兰语)?

+1

另请参阅'**更新**'只是添加到我的答案的底部。 – gojomo

+0

@gojomo将跟进此事。 – utengr

回答

3

我们假设您的句子相似性方案仅使用单词向量作为输入 - 就像简单的单词向量平均方案或Word Mover's Distance一样。

应该可以做你所建议的东西,但前提是:

  • 你有良好的集字向量为每种语言的话
  • 坐标字向量空间是兼容,这意味着在这两种语言将完全一样的东西的话具有几乎相同的坐标(和具有类似含义换句话说有着密切的坐标)

这第二质量不会自动保证。事实上,鉴于word2vec模型的随机初始化以及算法/实现引入的其他随机化,即使后续训练运行完全相同的数据也不会将单词放入完全相同的位置。因此,在完全独立的英语/荷兰语语料库上训练的单词向量不可能在相同的坐标处放置相同的单词。

但是,您可以根据某些锚点/参考词对(您知道应该有相似的向量)学习两个空间之间的代数转换。然后,您可以将该转换应用于两个集合中的一个集合中的所有单词,这会导致您在“规范”单词集合的可比较坐标空间内具有这些“外来”单词的向量。

实际上在第一word2vec论文之一被用于这种想法:

Exploiting Similarities among Languages for Machine Translation

如果你要对你的语言文字载体设置一个应用类似的转变,然后用那些转换后的向量作为你的句子 - 向量方案的输入,这些句子向量可能与另一种语言的句子向量有一些有用的可比性,在同一坐标空间中从单词向量自举。

更新:有一个非常有趣的recent paper管理同时培养多种语言的文字载体,利用语料库包括每个单一的语言包括原始的句子,并排列成行的句子是一个(小)集在两种语言中都是相同的。 Gensim还不支持这种模式,但在未来的重构中有discussion of supporting it