给定用户数据,如下所示:
user query date
0 jack mango 2020-01-03
1 jack banana 2020-01-04
2 jack apple 2020-02-03
3 jack orange 2020-03-03
4 john meat 2020-07-03
5 john water 2020-07-03现在假设我们有一个新用户进入mango,我正在找到一种推荐用户产品的好方法。
一种方法是基于item2vec的以下方法:
import pandas as pd
df_user= pd.DataFrame( {'user':['jack','jack','jack','jack','john','john'],'query':['mango','banana', 'apple','orange','meat', 'water'],'date':['2020-1-3','2020-1-4','2020-2-3','2020-3-3','2020-7-3','2020-7-3']})
df_user['date']=pd.to_datetime(df_user['date'])
new_query='mango'
from gensim.models import Word2Vec
model = Word2Vec(sentences = df_user.groupby(['user'], as_index=False).agg(list)['query'], window = 9999999, min_count=1)
model.wv.most_similar(new_query, topn=10) 奇怪的是,它给了
[('banana', 0.09904204308986664),
('orange', 0.004004828631877899),
('water', -0.022172965109348297),
('meat', -0.05908803641796112),
('apple', -0.1611100435256958)]作为产出,“水”和“肉”排在“苹果”之后,
发布于 2022-03-17 03:02:31
这似乎是使用Word2Vec imho的一种奇怪的方式。
一种简单的方法:
如果您只想要最频繁的关联,您可以使用条件概率而不是PMI。
https://datascience.stackexchange.com/questions/109078
复制相似问题