我正在尝试考虑一种有效或合理的算法来获取用户提交的测试结果并将其与多个配置文件的值进行比较以找到匹配项(例如在线约会服务如何将您的答案与合适的答案相匹配)伙伴们)。
我真的不知道该怎么办。如果用户回答了 10 个关于他自己的问题,并且有 10 个候选人可以与他匹配,我们就会通过数据库查看数千个比较。必须有更好的方法来做到这一点。
在我所做的研究中,也许我可以使用 Levenshtein 距离函数来完成此任务,但我不知道如何去做,因为我对此并不完全熟悉,而且我不明白它出色地。但也许我可以做一些事情,比如将连接成字符串的用户结果(例如“AEBCDAABEAD”)与每个候选人的答案进行比较,并以这种方式衡量相似性?
有什么建议吗?
非常感谢。
最佳答案
我认为使用确切的答案并不是一个能够满足各种目的的灵活解决方案,因为其他答案可能不会对某些配置文件类型产生深远的影响。 拥有 1-2 和 3-4 的人仍然会得到不匹配的答案,即使该人选择 20-25 的答案相差甚远。据我所知,Levensthein 的“AB”和“AC”与“AZ”与“AB”相似。
Levensthein 算法也是一个好主意,我猜如果你这样做基于问题,在某些情况下你会得到更糟糕的匹配。
让我描述一下当我读到你的问题时我想到的技术。
个人资料类别和答案权重
我正在考虑一种配置,您可以在其中描述一些配置文件或属性类别。
让我们以食物的口味为例。所以我们的类别可能看起来像:
甜、酸、辣、普通
等
现在,对于您的调查,我将为每个问题配置一个类别权重。您可以积累。
示例
你喜欢辣椒酱
是的 - 辣+3
否 - 辣-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 距离,因为这些值是数字,计算得出的结果比不匹配字符更好。
我不确定这对您是否有帮助,但我想到了这似乎是一个很好的解决方案。
关于php - "Personality quiz"风格比较[PHP],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106969/