将用户兴趣与内容相匹配(基于标签)
Matching user interests with content (based on tags)
我在数据库中存储了很多内容项,我知道用户对哪些标签感兴趣。例如,Alice 对 "healthcare"、"sports" 和 "social" 等标签表现出兴趣。每个内容项都包含一个或多个标签。我将如何匹配这些以便向 Alice 推荐新内容?
考虑这些基本数据库表:
CREATE TABLE `content_tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_id` INT(11) NOT NULL,
`tag_id` INT(11) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);
而且我有爱丽丝的兴趣以及(相关性)分数,这就像权重:
array:3 [
'healthcare' => 2.20
'sports' => 1.30
'socal' => 0.5
]
你会如何处理这个问题?
有没有办法为此使用算法,例如余弦相似性,或者这只是句子的改进?
您可以找到爱丽丝和物品之间的相似之处,然后对它们进行排序。因此,将推荐最相似的 n 项。
其中一个相似性指标是余弦相似性(正如您所建议的),其工作原理如下;
对于每个项目,您可以使用标签创建一个矢量。据我了解,您的项目没有分数,因此项目向量的值将为 0 或 1。每个值将代表特定项目的一个标签。
项目表示;
[0,0,1,1,0,0] -> 假设第一个值代表 'healthcare',第二个代表运动,最后一个标签是对于标签 5。此商品没有 tag5 所以它的值为 0
并且用户也有类似于物品的向量。
例如爱丽丝的向量是;
[2.20,1.30,0.5,0,0,0]
创建向量后,您可以计算相似度(例如,通过使用余弦相似度。)
请注意,每个用户和项目向量的大小等于系统中所有标签的数量。
在此示例中,系统中有 6 个不同的标签。
我在数据库中存储了很多内容项,我知道用户对哪些标签感兴趣。例如,Alice 对 "healthcare"、"sports" 和 "social" 等标签表现出兴趣。每个内容项都包含一个或多个标签。我将如何匹配这些以便向 Alice 推荐新内容?
考虑这些基本数据库表:
CREATE TABLE `content_tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_id` INT(11) NOT NULL,
`tag_id` INT(11) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `tag` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);
而且我有爱丽丝的兴趣以及(相关性)分数,这就像权重:
array:3 [
'healthcare' => 2.20
'sports' => 1.30
'socal' => 0.5
]
你会如何处理这个问题?
有没有办法为此使用算法,例如余弦相似性,或者这只是句子的改进?
您可以找到爱丽丝和物品之间的相似之处,然后对它们进行排序。因此,将推荐最相似的 n 项。
其中一个相似性指标是余弦相似性(正如您所建议的),其工作原理如下;
对于每个项目,您可以使用标签创建一个矢量。据我了解,您的项目没有分数,因此项目向量的值将为 0 或 1。每个值将代表特定项目的一个标签。
项目表示;
[0,0,1,1,0,0] -> 假设第一个值代表 'healthcare',第二个代表运动,最后一个标签是对于标签 5。此商品没有 tag5 所以它的值为 0
并且用户也有类似于物品的向量。 例如爱丽丝的向量是; [2.20,1.30,0.5,0,0,0]
创建向量后,您可以计算相似度(例如,通过使用余弦相似度。)
请注意,每个用户和项目向量的大小等于系统中所有标签的数量。 在此示例中,系统中有 6 个不同的标签。