【问题标题】:String similarity TF-IDF Bag of words or Word2vec字符串相似度 TF-IDF Bag of words or Word2vec
【发布时间】:2017-04-21 15:24:32
【问题描述】:

我正在尝试创建一个计算 2 个字符串之间相似度的应用程序。 琴弦不长。 3 句子最长。 我做了一些研究,发现了一些可能的解决方案。

第一个使用词袋:计算词并比较生成的 2 个向量(余弦相似度)

第二个使用 TF-IDF 并比较生成的向量。

第三个是使用word2vec,比较向量。

现在回答问题。

在性能方面,word2vec 的短句性能是否优于 TF-IDF?

训练 word2vec 模型的最佳方法是什么?我应该使用大量文本(例如维基百科转储)还是只使用正在比较的句子来训练它。

如何从 word2vec 中获取句子相似度。我应该平均每个句子中的单词还是有更好的解决方案?

【问题讨论】:

  • 这里有几件事。这不是一个编程问题,所以你不应该在这里问它,它会被标记为离题。我不知道性能比较。但是对于 word2vec,您可以将其用作单词的嵌入矩阵,然后让循环网络生成句子的表示。这可能超出了您的问题,但是这些模型是为了构建序列的表示,就像您想要做的那样。但是,您需要一个训练集来学习表示。否则你可以用无人监督的方式训练这个模型吗?
  • 我不擅长神经网络,请您提供一个示例链接,以使用 word2vec 和循环网络生成句子的表示。对于训练集应该有多少数据。我目前没有可使用的大型数据集。任何想法如何以无人监督的方式进行。谢谢

标签: python nlp tf-idf word2vec sentence-similarity


【解决方案1】:
  • 有了良好的训练数据,word2vec 必须有更好的性能。 (我从中得到了很好的结果)

  • 您必须拥有大量数据才能获得好的模型。如果您正在研究英语,最好的方法是使用预先训练的数据。 this link里面有不错的模型你可以用。据我所知,Google 新闻预训练模型运行良好。

  • 在像句子这样的部分文本中使用平均单词是很常见的。更好的方法可以是加权平均,如 tf-idf 加权平均。还有一个关于语义文本相似性的热门研究,你可以从它的Wiki Page

【讨论】:

    猜你喜欢
    • 2017-07-03
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2017-02-03
    • 2015-11-30
    • 2019-05-18
    相关资源
    最近更新 更多