繁体   English   中英

Python-使用sklearn查找两个文档之间的所有相似句子

[英]Python - Find all the similar sentences between two documents using sklearn

我正在尝试返回两个文档之间的所有相似句子,并且我有解决方案,但是它非常慢。 有没有更有效的方法来实现这一目标?

我打开两个文档(A和B),然后使用NLTK将两个文档中的每个句子提取到list_a和list_b中(快速)。 从那里,我遍历list_a中的每个句子,并将每个句子与list_b中的所有句子进行比较(慢速)。 如果两个句子基于百分比相似,我会将相似的句子附加到results_list上,以供日后查看。

我用来比较两个句子的代码:

# Compare two sentences
def compare_sentences( sentences_a, sentences_b ):

    # Init our vectorizer
    vect = TfidfVectorizer( min_df = 1 )

    # Create our tfidf
    tfidf = vect.fit_transform( [ sentences_a, sentences_b ] )

    # Get an array of results
    results = ( tfidf * tfidf.T ).A

    # Return percentage float
    return float( '%.4f' % ( results[0][1] * 100 ) )

# end compare_sentences()

我已经看到许多有用的答案,它们描述了如何从一般意义上比较两个文档,但是我想找到一种解决方案,提供两个文档之间所有相似句子的列表。

我感谢您的帮助。

您是否配置了代码? 这始终是优化的第一步。

话虽这么说,您当前正在初始化每对句子上的TfidfVectorizo​​r-如果您在一个文件中有m个句子,而在另一个文件中有n个句子,那就是m * n个初始化。 但是,该对象并不依赖于语句-您只需要执行一次,然后将其传递给函数。 那可能是一些难以捉摸的果实。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM