【问题标题】:compare similarity of multiple texts using python使用python比较多个文本的相似性
【发布时间】:2020-02-21 09:23:38
【问题描述】:

所以我有大约 300-500 篇文本文章,我想比较它们的相似性和相关/重复的图,有些文章可能涉及相同的主题但不相同。所以为了解决这个问题,我开始尝试使用 spaCy 和相似度函数 .. 现在的问题是相似度一次只比较两个文档,我认为我需要循环每个文本并将其与另一个文本进行比较,这是一个非常缓慢且消耗内存的过程有没有办法解决这个问题?

【问题讨论】:

  • “现在的问题是相似性一次只比较两个文档”。为什么这是一个问题?你有什么理由证明这个任务的时间复杂度应该小于 N^2?
  • 是的,抱歉应该澄清这部分;有没有办法减少 N^2 时间?
  • 可能有,但首先您需要严格定义您要如何处理这些数据。如果只是谈论寻找相似的文章,似乎每个潜在的文章对都是一个有效的候选检查对象,因此 N^2。也就是说,除非您实施某种近似方法,从而只考虑非密集的对子集,但结果的质量将不一样。尤其是您试图查找重复项这一事实表明您对此处的配对相似性感兴趣

标签: python text nlp analysis


【解决方案1】:

我不知道您将如何比较文本之间的相似性,但假设您将使用 Jaccard 或余弦相似性来比较每个文本。

然后,您可以使用this paper 中提出的全对相似性搜索,它有一个实现here。该算法速度极快,尤其是对于如此小的数据量。

all-pairs 搜索返回两个文档及其相似性,因此,如果您想找到相似文档的“家族”,那么您将进一步需要应用像 DFS 这样的图遍历。 A stack overflow post on python 元组使用邻接列表并提供 O^(n+m) 时间复杂度。

Here's 一个示例,您可以使用全对算法尝试在 reddit 笑话 subreddit 中查找转发。

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2017-07-26
    • 2022-08-19
    • 2012-12-26
    • 2011-02-05
    相关资源
    最近更新 更多