现在想到的方法是如下
--方法 1--
A 列表:['aa', 'bb', 'cc']
B 列表:['bb', 'cc', 'ff', 'kk']
因为'bb'和'cc'相同所以有
A:2/3
B:2/4
所以 AB 相似度等于:(2/3 + 2/4) / 2 = 0.583
假如有 C 列表:['bb']
同样与 B 列表比较,同理 BC 相似度等于:(1/4+1/1) / 2 = 0.625
然而 AB 相似度<BC 相似度却不太理想
--方法 2--
另外一个方法就是分母用元素的合计数
AB 相似度等于:(2/(3+4) + 2/(3+4)) / 2 = 0.286
BC 相似度等于:(1/(4+1)+1/(4+1)) / 2 = 0.2
结果:AB 相似度>BC 相似度
所以正确的方案应该用数学上的那些手段来实现呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.