2016-04-21 107 views
0

我正在寻找一种创建单个句子与句子列表相似度向量的有效方法。查找句子与句子列表之间的相似度

这样做的微不足道的方法是迭代句子列表并检测单个句子与列表中每个句子之间的相似性。这个解决方案太慢了,我正在寻找一个更快的方法来做到这一点。

我的最终目标是检测句子列表中是否有与我正在查看的句子中的句子类似的句子,如果是的话,我将转到下一句。

我的解决现在的问题是:

for single_sentence in list_of_sentences: 
    similarity_score = word2vec.sentences_similarity(sentence2test, single_sentence) 
    if similarity_score >= similarity_th: 
     ignore_sent_flag = True 
     break 
list_of_sentences.append(sentence2test) 

Iv'e试图把“list_of_sentences”在字典/集,但在时间上的改进是次要的。

我遇到了this解决方案,但它基于Linux专用包,因此与我无关。

+0

您是否有兴趣一对全部或全部对所有类似的检查?解决方案还需要基于gensim? –

+0

@GökhanSever我对一对一感兴趣,而'全部'列表正在增长 –

+0

如果您的解决方案不需要gensim,那么您可以简单地计算Jaccard相似度,可以基于n字符克或单词-grams。 –

回答

0

我想推荐2条东西: 1.尝试将'list_of_sentences'放在一个文件中 2.用正则表达式快速旋转文件。

+0

'list_of_sentences的大小是动态的,如果相似度低于给定的阈值,我将'sentence2test'添加到'list_of_sentences',所以这听起来像浪费时间来保存文件多次加载。我正在寻找一种方法,将使用这是Numpy对象的事实。 –