我正在尝试考虑一种有效或合理的算法来获取用户提交的测试结果,并将它们与几个配置文件的值进行比较以找到匹配项(例如在线约会服务如何与您的答案相匹配配合)。
我真的不知道该怎么做。如果用户回答了10个关于他自己的问题并且有10个候选人与他匹配,我们正在通过数据库查看数千个比较。必须有更好的方法来做到这一点。
在我所做的研究中,也许我可以用Levenshtein距离函数完成这项工作,但我不知道该怎么做,因为我对此并不完全熟悉,我不明白好。但也许我可以做一些比较用户的结果串联到一个字符串(例如'AEBCDAABEAD')与每个候选人的答案并测量相似性的方式吗?
有什么建议吗?
非常感谢。
答案 0 :(得分:4)
我认为使用确切的答案并不是一个足够灵活的解决方案,因为其他答案可能不会对某些配置文件类型产生深远的影响。 有1-2和3-4的人仍然会有一个不匹配的答案,即使这个人拿20-25是远离的。与Levensthein'AB'和'AC'的Afaik类似于'AZ'到'AB'。
Levensthein算法也是一个好主意,我猜你在某些情况下会得到更糟糕的匹配,如果你这样做基于问题的。
当我读到你的问题时,让我描述一下我的脑海中会出现什么技术。
我正在考虑一种配置,您可以在其中描述一些配置文件或属性类别。
让我们以食物的味道为例。所以我们的类别可能如下:
sweet, sour, spicy, normal
等。
现在,对于您的调查,我会为每个问题配置一个类别权重。你可以累积。
你喜欢辣椒酱
是的 - spicy +3
不 - spicy -1
现在,您可以使用算法确定每个类别中的距离,并在计算中对它们进行加权。
(sweet | spicy | sour | normal)
-5 15 2 8 // Person 1
10 -5 10 2 // Person 2
8 -8 7 12 // Person 3
现在你可以比较一下人的决定,看看[2]和[3]之间的距离小于[1]和[2]之间的距离。 注意:我不是在谈论Levensthein距离,因为这些值是数字的,计算结果比不匹配的字符更好。
我不确定这对你是否有帮助,但是我想到了这个问题,似乎是一个很好的解决方案。