1

我有一个大型(约 250 万条记录)图像元数据数据库。每条记录代表一个图像,并具有唯一的 ID、描述字段、以逗号分隔的关键字列表(例如每张图像 20-30 个关键字)和一些其他字段。没有真正的数据库模式,如果不遍历每个图像并计算它们,我无法知道数据库中存在哪些关键字。此外,元数据来自几个不同的供应商,每个供应商对如何填写不同的字段都有自己的想法。

我想用这个元数据做一些事情,但由于我对这种算法完全陌生,我什至不知道从哪里开始寻找。

  1. 其中一些图像对它们有一定的使用限制(以文字形式给出),但每个供应商的措辞不同,无法保证一致性。我想进行一个简单的测试,我可以将其应用于图像,以指示该图像是否不受限制。它不必是完美的,只要“足够好”。我怀疑我可以为此使用某种贝叶斯过滤器,对吧?我可以用我知道是受限制或不受限制的图像语料库训练过滤器,然后过滤器就能够对其余图像进行预测?还是有更好的方法?
  2. 我还希望能够根据“关键字相似度”对这些图像进行索引,这样如果我有一张图像,我就可以快速判断它与哪些其他图像共享最多的关键字。理想情况下,该算法还将考虑到某些关键字比其他关键字更重要,并对它们进行不同的权衡。我什至不知道从哪里开始看这里,如果有任何指示,我会很高兴:)

我主要在 Java 中工作,但语言选择在这里无关紧要。我更感兴趣的是了解哪些方法最适合我开始阅读。提前致谢 :)

4

2 回答 2

2

当然,您必须首先将“关键字列表”字段转换为真正的标记方案。最简单的一个是标签表,以及与图像表的“多对多”关系(即第三个表,其中每条记录都有一个图像外键和另一个关键字外键)。使用一组特定关键字查找所有图像非常快。

用于检测限制措辞的贝叶斯过滤器很有趣。我会说去吧,除非你时间紧迫。如果是这样的话,一些简单的模式匹配应该能满足 90-95% 以上的情况,其余的可以由几个操作员手动快速完成。

于 2009-02-10T16:55:43.783 回答
1

(1) 看起来像是一个分类问题,将文本中的单词作为特征,将“受限”和“不受限”作为标签。贝叶斯过滤或任何分类算法都可以解决问题。

(2) 看起来像一个聚类问题。首先,您想提出一个良好的相似度函数,该函数根据它们的关键字返回两个图像的相似度分数。余弦相似度可能是一个很好的起点,因为您正在比较关键字。从那里您可以计算相似度矩阵并记住数据集中每个图像的“最近邻”列表,或者您可以更进一步并使用聚类算法来提出实际的图像聚类。

由于您有如此多的记录,您可能希望跳过计算整个相似度矩阵,而只为数据集的一个小的随机样本计算集群。然后,您可以将其他数据点添加到适当的集群。如果您想保留更多相似性信息,可以查看软聚类。

希望这会让你开始。

于 2009-02-10T21:59:15.847 回答