1

我想了解有助于识别重叠数据集之间的共性和差异的算法信息。

以stackoverflow的标签系统为例:

假设这个问题被赋予了 5 个标签。假设有 1000 个其他问题至少具有这些标签之一。在这 1000 个问题中,有多少问题具有我的原始帖子所没有的共同标签?

另一种更简单的描述方式是自动建议标记系统:

“您用 [5 个我选择的标签] 标记了您的问题。其他类似的问题用 [可能感兴趣的标签列表] 进行了标记。其中 [可能感兴趣的标签列表] 是经常出现的标签,这些标签不在我的原始清单。

如果可能的话,c# 中的代码示例:)

4

2 回答 2

1

查看 Wager-Hamming 距离。这是在字符串上定义的汉明距离,即将一个字符串转换为另一个字符串所需的编辑操作数。

您还可以潜在地使用等价类的偏序并设置包含:当问题 A 和 B 具有完全相同的一组标签直到重新排序时,它们相等,设置并集、设置差异和设置交集,然后定义偏序< 和 > 比较。

于 2008-12-17T21:09:54.100 回答
0

我不知道任何特定的算法或数据结构,但我可以建议一种基本的处理方法:

假设:每个条目有五个唯一的标签。

  • 收集包含五个标签中任何一个的所有条目(无重复)。
  • 对于列表中的每个条目,为每个标记使用关联数组(哈希表),并递增值。
  • 对于数组中的每个条目,将标签名称附加到该数组的条目索引中。

在(草率的)伪代码中,使用两个循环(如果可能):

for each entry
    if any tag in original_tags
        tag_list[tag]++
end

for next in tag_list
    tag_count[tag_list[next]] += next
end  

这应该会产生一个稀疏的连接标签名称数组(好吧,我没有包含分隔符,但嘿,它是伪代码:-)。保持最高数字,然后向后迭代以获得最佳建议。

(缓存要优化,但要注意更新)

保罗。

于 2008-12-17T22:05:44.830 回答