Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到;相关项目“;在PHP中_Php_Sql_Taxonomy - Fatal编程技术网

如何找到;相关项目“;在PHP中

如何找到;相关项目“;在PHP中,php,sql,taxonomy,Php,Sql,Taxonomy,我们经常看到“相关项目”。例如,在博客中,我们有相关的帖子,在书中,我们有相关的书,等等。我的问题是,我们如何编辑这些相关性?如果只是标签,我经常看到相关的项目没有相同的标签。例如,当搜索“粉色”时,相关项目可能有一个“紫色”标签 有人有什么想法吗?它可以不仅仅是一个标签,例如,它可以是一段中出现的每件作品的平均值,然后是标题,等等它还可以基于“买了这本书的人也买了” 无论怎样,你都需要在你的物品之间建立一些联系,而这些物品大多是由人类制作的有很多方法可以计算两个物品的相似性,但对于一个简单的方

我们经常看到“相关项目”。例如,在博客中,我们有相关的帖子,在书中,我们有相关的书,等等。我的问题是,我们如何编辑这些相关性?如果只是标签,我经常看到相关的项目没有相同的标签。例如,当搜索“粉色”时,相关项目可能有一个“紫色”标签


有人有什么想法吗?

它可以不仅仅是一个标签,例如,它可以是一段中出现的每件作品的平均值,然后是标题,等等

它还可以基于“买了这本书的人也买了”


无论怎样,你都需要在你的物品之间建立一些联系,而这些物品大多是由人类制作的

有很多方法可以计算两个物品的相似性,但对于一个简单的方法,请看一下Jaccard系数

即:J(a,b)=交点(a,b)/并(a,b)


以下是一些方法:

  • 手动连接它们。建立一个包含
    item\u id
    related\u item\u id
    字段的表,然后创建一个接口来插入连接。用于关联两个相关但不相似或不属于同一类别/标签(或未分类的条目表)的项目。例子:浴缸和橡皮鸭
  • 拉起一些属于同一类别或具有类似标签的项目。其想法是,这些项目必须有一定的相关性,因为它们属于同一类别。示例:在查看LCD监视器的页面中,“相关项目”部分有随机LCD监视器(具有相同的价格范围/制造商/分辨率)
  • 执行文本搜索,将当前项的名称(和或描述)与表中的其他项进行匹配。你明白了

  • 我想说,他们使用的是为应用程序添加更多优秀功能的功能。

    这是我对PostgreSQL和Ruby on Rails的看法

    要获得基于标记的相关项目的简单列表,基本解决方案如下所示:

    3个表,一个带项目,一个带标签,一个带连接。连接表由两列组成,其余表中的每个id对应一列。连接表中的一个条目通过将标记和项目各自的ID放在一行中,将标记与项目链接起来

    现在,获取相关项目的列表

    获取与原始项至少共享一个标记的所有项。确保将标记与项目一起获取,然后使用简单的分级机制来确定哪个项目与原始项目共享的标记最多。每个标记将关系相关性增加一个


    根据您的标记习惯,添加一些计数器机制以防止大型总体标记混淆相关性可能是明智的。为了实现这一点,您可以在设备的某个阈值以下为标签赋予更大的权重。一个对我来说通常很有效的阈值是设备的总数量/设备的总数量,这会导致设备的平均数量。如果tags appliance count小于平均值,则关系相关性将增加一倍。

    这里是一个基于Bigram的两个文本之间jaccard索引的实现。

    这里还有一个相关的问题
    So lets say you want to compute the coefficient of two items:
    
    Item A, which has the tags  "books, school, pencil, textbook, reading"
    Item B, which has the tags  "books, reading, autobiography"
    
    intersection(A,B) = books, reading
    union(A,B) = books, school, pencil, textbook, reading, autobiography
    
    so J(a,b) = 2/6 = .333
    
    So the most related item to A would be the item which results in the highest Jaccard Coefficient when paired with A.