【发布时间】:2017-03-26 17:33:42
【问题描述】:
我正在尝试构建一种算法来返回与用户相关性最高的图像列表。
因此,用户将拥有一个标签列表以及每个标签的出现次数。
因此与用户关联的标签将如下所示(地图):
Photography ->4
trees ->3
nature ->3
snow ->2
lake ->2
sky ->2
在我的数据库中,我有一个带有标签的图像列表。 一个例子是:
**Image1**: photography, animals, nature, snow
**Image2**: photography, trees, lake, sky
**Image3**: sky, animals, dark, moon
所以使用标签图,我想在数据库中搜索相似度最高的图像,并为出现次数较多的图像赋予权重。
因此,带有标签的图片:photography, trees, nature 会比带有标签的图片更重要:nature, sky, moon
我尝试获取出现次数最多的事件,例如。 photography 并搜索所有这些图像,然后从这个结果列表中,从地图中搜索下一个词,在本例中为 trees,然后交换 trees 对于 nature,因为它具有相同的出现次数,因此返回一个排名图像列表。
我正在使用 java 并使用 MySQL 来存储 userTags 和出现次数以及图像和标签。
我觉得有更好的方法可以根据这些信息返回排名列表。
我这样做的方法是根据每个图像的标签和相应的值给每个图像打分。
所以图片 1 将是摄影、动物、自然、雪的得分 (4+0+3+2) = 8
和图像 2 摄影,树木,湖泊,天空(4+3+2+2)= 11
和图像 3 天空,动物,黑暗,月亮 (2+0+0+0) = 2
因此,根据这个分数,排名列表返回图像 2、图像 1、图像 3
【问题讨论】:
-
欢迎来到 Stack Overflow!我们是一个问答网站,而不是一个雇佣编码员的服务。请将您的问题缩小到本网站主题的特定编码问题。请参阅:Why is "Can someone help me?" not an actual question? 和 How to ask a good question when I'm not sure what I'm looking for?
标签: java sql algorithm search recommendation-engine