【问题标题】:How can I cluster about 500000 strings [closed]我怎样才能聚集大约 500000 个字符串 [关闭]
【发布时间】:2016-01-16 14:32:21
【问题描述】:

我有大约 500000 个字符串,我想将它们分组。有没有我可以使用的门户网站或网络服务?

字符串是唯一的。 我需要根据相似性将它们分组。

还有其他方法吗?

【问题讨论】:

  • 集群是什么意思?你的目标和目的是什么?那些字符串是什么?请提供更多信息。
  • 如果要计算字符串的数量,可以使用字典,每个字符串作为键。这是假设冗余的数量很高
  • 字符串相似度是一个非常广泛的话题,首先那些只是单个单词或句子/段落? “相似”是什么意思,是指语义相似还是编辑距离相似(例如拼写错误)?

标签: python string algorithm cluster-analysis


【解决方案1】:

如果您打算将一系列字符串(单词)聚类到相似组中,您需要告诉您是否需要查找相似编辑(Levenshtein)距离出现在同一簇中的单词。例如,您会说“算法”和“算法”应该有很高的机会出现在同一个集群中。

最先进的建议使用图聚类算法,如

【讨论】:

  • 您不想在 500000 个对象上运行 APC……而且可能其他一些对象也需要 O(n^2) 内存。
  • MCL 需要 O(n*k) 内存,其中 k 是跟踪的节点数。在默认设置中,这是 1400。如果您知道自己在做什么,MCL 可以轻松扩展到数百万个节点 - 在生物信息学中,它通常用于对具有 8M+ 节点的图进行聚类,诚然在厚实的硬件上。更一般地说,在图聚类中,一个完整的图/全部与全部矩阵/O(n^2) 内存不起作用。一些过滤或阈值用于限制每个节点的邻居数量。如何做到这一点最好被视为与集群分开的问题。
猜你喜欢
  • 1970-01-01
  • 2022-10-13
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多