【问题标题】:Keras for find sentences similarities from pre-trained word2vecKeras 用于从预训练的 word2vec 中查找句子相似性
【发布时间】:2020-01-22 03:42:27
【问题描述】:

我已经从gensim 预训练了word2vec。并且使用gensim 来查找words 之间的相似之处可以按预期工作。但是我在寻找两个不同句子之间的相似之处时遇到了问题。使用 cosine similarities 不是句子的好选择,也没有给出好的结果。 gensim 中的 Soft Cosine similarities 给出了更好的结果,但仍然看起来不太好。

我在gensim 中找到了WMDsimilarities。这比softcosinecosine 好一点。

我正在考虑是否有更多选择,例如使用深度学习(如 kerastensorflow)从预训练的 word2vec 中查找句子相似性。我知道分类可以使用word embbeding 来完成,这似乎是更好的选择,但是我需要找到一个训练数据并从头开始标记它。

所以,我想知道是否有任何其他选项可以在keras 中使用预训练的word2vec 并获得句子相似性。有没有办法。我愿意接受任何建议和建议。

【问题讨论】:

标签: python tensorflow keras


【解决方案1】:

在重新实现轮子之前,我建议尝试doc2vec method from gensim,它运行良好且易于使用。

要在 Keras 中实现它,重用您使用 gensim 计算的嵌入:

  1. 将词嵌入存储在文件中,每行一个词与相应的嵌入。或者,您可以按照@Paul 的建议进行操作,跳过第 2 步并在第 3 步中重复使用该层。
  2. 将词嵌入加载到 Keras 嵌入层中。您可以查看此Keras tutorial 了解更多详情(查看embedding_layer 变量是如何初始化的)。
  3. 然后可以使用序列到序列模型来计算文本的嵌入。在其中您有一个嵌入字符串的编码器和一个将嵌入转换回字符串的解码器。这是Keras tutorial that translates from English to French。您可以使用类似的过程将您的文本转换为您的文本,并为您的相似性指标选择内部嵌入。

您还可以看看paragraph to vector model 是如何工作的,您还可以使用 Keras 实现它并加载您计算的词嵌入权重。

【讨论】:

  • @J.Ferranrons 你有任何链接,我可以检查你在步骤 3 中提到的这个内部嵌入的东西
  • @Ben 在第 3 节提供的链接中,您可以查找变量 encoder_states = [state_h, state_c] 的定义。对于理论背景,你可以参考这篇论文Sequence to Sequence Learning with Neural Networks,在那篇论文中嵌入被称为vectorfixed-dimensional vector
猜你喜欢
  • 2020-03-29
  • 2020-06-02
  • 1970-01-01
  • 2019-02-07
  • 2018-02-02
  • 2019-07-07
  • 2016-07-28
  • 2018-12-22
  • 2020-12-24
相关资源
最近更新 更多