【发布时间】:2018-08-22 21:53:18
【问题描述】:
我有一个非常有趣的问题,过去几天我一直在尝试解决,但没有运气。我有 120k 个项目的描述,我必须将这些描述与 38k 个项目进行比较,并确定它们之间的相似程度。最终,我想根据相似性查看 120k 中是否存在 38k 中的任何一个。 我在 excel 中找到了很好的相似性脚本,并将我的数据组织为乘法表,这样我就可以将 120k 中的每个描述与 38k 中的每个描述进行比较。见下图。所以该功能有效,但是计算量无法在excel中运行。如果我将其分成两半(120k X 16k),我们正在谈论超过 20 亿次计算。该函数将描述从 A2 到 B1,然后从 A2 到 C1,依此类推,直到结束,即 16k。然后它从 A3 开始描述,并做同样的事情和 120k 次。
有谁知道如果把它放在强大的服务器上可以做到这一点的 SQL 或 R 或 Python 脚本?
【问题讨论】:
-
您可以使用 Jaro Winkler,它与您的数据非常匹配,因为它似乎是产品名称?这是 Python 实现的链接:pypi.python.org/pypi/pyjarowinkler,但这也在 R 中,并且也有 SQL 版本。我用 C# 编写了一个版本来匹配数以百万计的产品名称,并在大约 4-5 小时内完成了所有工作。不过我不得不把我的笔记本电脑放在冰箱里,因为它到最后就开始过热了!
-
@RichardHansell 谢谢你的建议。我正在尝试弄清楚如何在 R 中运行它。 :-)
-
您可能会发现这与您的要求非常相似(使用两个列表 - 通常只有一个列表):stackoverflow.com/questions/29102155/…