SQL或Python或R

时间:2018-03-14 11:25:17

标签: python sql r excel

我有一个非常有趣的问题,过去几天我一直试图解决这个问题而没有运气。我有120k的项目描述,我必须与38k项目进行比较,并确定两者之间的相似程度。最后,我想看看基于相似性,在120k内是否存在38k中的任何一个。 我在excel中找到了很好的相似性脚本,我将数据组织为乘法表,因此我可以将每个描述从120k与38k中的每个描述进行比较。见下图。因此,该功能可行,但是在excel中无法运行计算量。如果我把这个分成两半(120k X 16k),我们正在谈论超过20亿的计算。该功能是将描述从A2到B1,然后从A2到C1等进行比较,直到结束为16k。然后它从A3进行描述并做同样的和120k次。

如果把它放在功能强大的服务器上,有没有人知道SQL或R或Python中的Script可以做到这一点?

enter image description here

1 个答案:

答案 0 :(得分:1)

您正在寻找aproximate string matching。 Excel提供免费的add-on,由Microsoft开发,用于创建所谓的模糊匹配。它使用Jaccard index算法来确定两个给定值的相似性。

  • 确保两个描述列表都列在可排序表列(Ctrl + L);
  • 通过访问“左列”和“右列”部分中的列链接并按下中间的连接按钮;
  • 选择要输出的列(如果要在左侧或右侧选择多个列,请按住Ctrl键);
  • 确保选中FuzzyLookup.Similarity,这将给出值0-1之间的相似性得分;
  • 确定每个可比较字符串显示的最大匹配数;
  • 确定您的阈值。该数字表示两个字符串在将其标记为匹配之前的最小相似百分比;
  • 转到单元格A1的新工作表,这是因为新生成的相似性表格将覆盖当前数据;
  • 点击'Go'button!
  • 选择所有相似性得分并为其提供更多小数以获得正确的结果。

See example.