使用 BERT 嵌入解决冷电影问题:推荐系统

简介: 推荐冷启动问题是指添加到目录中的项目没有或只有很少的交互。这主要是协同过滤算法的一个问题,因为它们依赖于项目的交互来进行推荐。解决这个问题 我使用 BERT Embeddings。我嵌入所有电影类型并保存所有 . 还将新电影类型转换为BERT 嵌入并使用最近邻。我找到最近的 k 部电影的新电影并将它们推荐给用户。我没有使用预训练电影嵌入层。因为每部电影都有 1 X 50 维度表示。在查询时,我需要计算每个点之间的距离,如果每个点都是 50 个或更多维度,这将非常耗时。

推荐冷启动问题是指添加到目录中的项目没有或只有很少的交互。这主要是协同过滤算法的一个问题,因为它们依赖于项目的交互来进行推荐。解决这个问题我使用 BERT Embeddings。我嵌入所有电影类型并保存所有 . 还将新电影类型转换为BERT 嵌入并使用**最近邻。**我找到最近的 k 部电影的新电影并将它们推荐给用户。**我没有使用预训练电影嵌入层。因为每部电影都有 1 X 50 维度表示。在查询时,我需要计算每个点之间的距离,如果每个点都是 50 个或更多维度,这将非常耗时。**所以我使用 BERT Embeddings 并 为每部电影获得 1 X 1 Dimensions 表示。对于低延迟应用程序。用于此任务的数据是MovieLens数据集。

movies = pd.read_csv(PATH + 'movies.csv') 
movies.head()

预压:

movies['genres']=movies.genres.str.replace('Sci-Fi','science fiction')
movies['genres']=movies.genres.str.replace('|',' ')

类型转换为 Bert Tokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True)
new=[]
for i in movies['genres'].values:
  gen1=tokenizer(i)
  gen2=gen1['input_ids']
  gen2.pop(0)
  gen2.pop(-1)
  new.append(sum(gen2))
movies['genres_token']=new

这里有一些类型转换数据 -

此函数根据 Tokenize 类型返回 K 最近的电影

def Recommendation_Movie(myNumber,myList,j):
  i=set()
  while len(i)<=j:
    i.update(myList.title[myList.genres_token==myNumber].tolist())
    g=min(myList.genres_token.values, key=lambda x:abs(x-myNumber))
    i.update(myList.title[myList.genres_token==g].tolist())
    bgh=myList.genres_token[myList.genres_token == g].index.tolist()
    myList=myList.drop(index=bgh)
  return i

使用这种方法,它会显示与新电影相似的电影,但这种方法是过拟合的。主要目标是降低低延迟

输出

目录
相关文章
|
7月前
|
PyTorch 算法框架/工具
Bert PyTorch 源码分析:一、嵌入层
Bert PyTorch 源码分析:一、嵌入层
79 0
|
21天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
42 1
|
6月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
2月前
|
搜索推荐 关系型数据库 数据库
#646253#基于django/neo4j的电影打分推荐系统
#646253#基于django/neo4j的电影打分推荐系统
18 0
|
6月前
|
搜索推荐 算法 Java
基于SpringBoot+Vue电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot+Vue电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的协同过滤电影推荐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的协同过滤电影推荐系统附带文章源码部署视频讲解等
48 0
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的个性化电影推荐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的个性化电影推荐系统附带文章源码部署视频讲解等
49 0
基于springboot+vue.js+uniapp小程序的个性化电影推荐系统附带文章源码部署视频讲解等
|
7月前
|
搜索推荐 算法 Java
电影推荐|基于SSM+vue的电影推荐系统的设计与实现(源码+数据库+文档)
电影推荐|基于SSM+vue的电影推荐系统的设计与实现(源码+数据库+文档)
134 3
|
6月前
|
机器学习/深度学习 搜索推荐 算法
【阿旭机器学习实战】【37】电影推荐系统---基于矩阵分解
【阿旭机器学习实战】【37】电影推荐系统---基于矩阵分解
|
7月前
|
机器学习/深度学习 数据采集 算法
基于Apriori关联规则的电影推荐系统(附python代码)
这是一个基于Apriori算法的电影推荐系统概览。系统通过挖掘用户评分数据来发现关联规则,例如用户观看某部电影后可能感兴趣的其他电影。算法核心是逐层生成频繁项集并设定最小支持度阈值,之后计算规则的置信度。案例中展示了数据预处理、频繁项集生成以及规则提取的过程,具体包括用户评分电影的统计分析,如1-5部电影的评分组合。最后,通过Python代码展示了Apriori算法的实现,生成推荐规则,并给出了一个简单的推荐示例。整个过程旨在提高推荐的精准度,基于用户已评分的电影推测他们可能尚未评分但可能喜欢的电影。
344 1
基于Apriori关联规则的电影推荐系统(附python代码)