【问题标题】:How to cluster large number of strings based on similarity matrix?如何基于相似度矩阵对大量字符串进行聚类?
【发布时间】:2021-04-19 04:40:41
【问题描述】:

我需要根据它们的相似性对 500K+ 字符串进行聚类。

我已经计算了它们的成对 Levenshtein 距离并制作了一个稀疏相似矩阵。该矩阵包含二进制相似性:小距离的值设置为 1.0,其他的值为 0.0。

我不知道哪种聚类对我有好处。我事先不知道聚类的数量,但它可能相当大,因为相似度矩阵非常稀疏(大约 0.1% 的值是非零的)。

【问题讨论】:

  • 为了确定,您已经计算了 500K 字符串的成对 LD,这意味着您有一个 500K x 500K 大小的矩阵?
  • 那种。 LD 被计算但不被存储。我只使用scipy.sparse.lil_matrix 存储了稀疏二进制相似度矩阵。

标签: python cluster-analysis


【解决方案1】:

您是否考虑过做类似https://en.wikipedia.org/wiki/Soundex 的事情?这种算法的优点是相似的词具有相同的规范形式。例如,“Robert”和“Rupert”都返回相同的字符串“R163”。然后您的聚类归结为如下地图:

clusters = { canonical_form: [list of similar words] }

当然,您可以根据您的域调整 Soundex 规则。

【讨论】:

  • 这个算法很有趣。我的字符串不是拼音,但我可以找到类似的规则。谢谢。
猜你喜欢
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 2021-01-10
  • 2023-03-12
  • 2018-01-07
  • 2012-07-17
  • 2015-04-05
相关资源
最近更新 更多