2017-04-21 98 views
0

我想创建一个计算2个字符串之间相似度的应用程序。 字符串不长。 3句最长。 我做了一些研究,并且遇到了一些可能的解决方案路径。话的字符串相似TF-IDF字袋或Word2vec

首先一个使用袋:计算单词和比较2个制作载体(余弦相似性)

第二使用TF-IDF,并比较所产生的载体。

第三是使用word2vec和比较向量。

现在的问题。

表现明智的是word2vec表现更好,TF-IDF的短句子?

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

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

+0

几件事情在这里。这不是一个编程问题,所以你不应该在这里问它,它会被标记为脱离主题。 我不知道性能比较。但关于word2vec,你可以用它作为你的单词的嵌入矩阵,然后让一个循环网络产生句子的表示。这可能会超出你的问题,但这些模型是用来构建序列的表示,就像你想要做的一样。但是,您需要一组列车来学习表示。否则,你可以用无监督的方式来训练这个模型吗? – ted

+0

我对神经网络不太好,请你提供一个链接,使用word2vec和经常性网络来生成句子的表示。对于训练集应该有多少数据。我目前没有大数据集可供使用。任何想法如何以无人监督的方式做到这一点。谢谢 – LonsomeHell

回答

1
  • 有了良好的火车数据,word2vec必须有更好的表现。 (我从中得到了很好的结果)

  • 您必须拥有大量的好数据。如果您正在使用英语,最好的方法是使用预先训练的数据。您可以使用this link有很好的模型。据我所知,Google新闻预先训练好的模型工作得很完美。

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