【发布时间】:2011-03-20 05:12:48
【问题描述】:
我开始了一个比我最初想象的要复杂得多的项目。我正在尝试规划一个基于布尔(真/假)问题和答案的系统。系统上的用户可以从大量布尔(真/假)问题中回答任何问题,并根据他们的答案显示最相似用户的列表(按相似度排序)。
我已经在 Google 上进行了广泛搜索,但仍然没有想出太多,所以我希望有人能指出我正确的方向。我想知道:
存储此类数据的最佳数据结构和方法是什么?我最初假设我可以在 SQL 数据库中创建两个表“问题”和“答案”。但是,我不知道如果它们都被列为数字字符串,比较两组答案是否会更简单。 IE。 0 = 未回答,1 = 正确,2 = 错误。在比较字符串时,可以添加“未回答”= 0、“相同答案”= 1、“相反答案”= -1 的权重,从而产生相似度分数。
我将如何比较两组答案?为了能够计算出这组答案之间的“相似性”,我将不得不编写一个比较函数。有谁知道哪种比较最适合这个问题?我研究了sequence alignment,我认为这可能是正确的方法,但我不确定,因为这要求数据是一个长序列,而且问题不相关,所以自然不是一个序列.
如何将此比较函数应用于大量数据? 编写比较函数后,我可以将每个用户的答案与其他每个用户的答案进行比较,但这并不能看起来非常有效,可能不会很好地扩展。我一直在研究cluster analysis 根据类似答案自动对用户进行分组的方法,您认为这可行吗?或者有人知道我可以研究的更好方法吗?
非常感谢任何有用的指示。谢谢!
【问题讨论】:
-
对于什么数据库? MySQL 没有任何排名/窗口/分析功能...
-
我不知道。我什至不知道数据库是否是存储这些数据的最佳方式。还有其他更适合此类问题的数据结构吗?
-
我想我在 Jaccard 索引方面有所进展:en.wikipedia.org/wiki/Jaccard_index
标签: sql language-agnostic database-design data-structures computer-science