问题:
我想通过将他/她的“兴趣”与所有其他人的兴趣进行比较,为特定用户推荐前 10 个最兼容的匹配项。我正在用户之间构建一个无向加权图,其中权重 = 两个用户之间的匹配分数。
我已经有一组 N 个用户:S。对于 S 中的任何用户 U,我都有一组兴趣 I。经过很长时间(一周?)我创建一个具有一组兴趣的新用户 U,并将其添加到S. 为了为这个新用户生成一个图表,我将新用户的兴趣集 I 与 S 中所有用户的兴趣集迭代地进行比较。问题在于这个“所有用户”部分。
我们来谈谈比较兴趣的功能。对一组兴趣 I 的兴趣是一个字符串。我正在使用 WikipediaMiner 比较两个字符串/兴趣(它使用 Wikipedia 链接来推断两个字符串的相关程度。例如,Billy Jean & Thriller ==> 高匹配,Brad Pitt & Jamaica ==> 低匹配等等)。我也问过一个关于这个的问题(看看是否有比我目前使用的更好的解决方案。
因此,上述功能花费的时间不可忽略,总的来说,当我们比较数千(可能是数百万?)用户及其数百个兴趣时,将花费大量时间。对于 100,000 个用户,我无法以这种方式在短时间内(<30 秒)进行 100,000 个用户比较。但是,我必须在 30 秒内给出前 10 条建议,可能是初步建议,然后在接下来的 1 分钟左右对其进行改进,计算改进的建议。简单地按顺序比较 1 个用户和 N 个用户太慢了。
问题:
请提出一种算法、方法或工具,我可以使用它来改善我的情况或解决我的问题。