Я был частью проекта рекомендации mov ie. Мы разработали модель doc2ve c с использованием Gensim. Вы можете взглянуть на документацию Gensim, если это необходимо. https://radimrehurek.com/gensim/models/keyedvectors.html#gensim .models. 1960, 1950, ...). Поэтому я попытался включить release_yr в качестве параметра для модели gensim, но все равно он показывает мне старые фильмы. Как я могу решить эту разницу release_yr? Когда я вижу топ-10 рекомендаций для фильма, мне нужны те фильмы, чья разница в release_yr меньше (например, фильмы последних 10 лет не более того). Как я могу это сделать?
код для doc2ve c модель
def d2v_doc(titles_df):
tagged_data = [TaggedDocument(words=_d, tags=[str(titles_df['id_titles'][i])]) for i, _d in enumerate(titles_df['doc'])]
model_d2v = Doc2Vec(vector_size=300,min_count=10, dm=1)
model_d2v.build_vocab(tagged_data)
model_d2v.train(tagged_data,epochs=100,total_examples=model_d2v.corpus_count)
return model_d2v
заголовки_df dataframe содержит столбцы (id_titles, title, release_year, актеры, режиссер, писатель, do c)
col_names = ['actors', 'director','writer','release_year']
titles_df['doc'] = titles_df[col_names].apply(lambda x: ' '.join(x.astype(str)), axis=1).str.split()
Код для 10 лучших похожих фильмов
def titles_lookup(similar_doc,titles_df):
df = pd.DataFrame(similar_doc, columns =['id_titles', 'simialrity'])
df = pd.merge(df, titles_df[['id_titles','title','release_year']],on='id_titles',how='left')
print(df)
def demo_d2v_title(model,titles_df, id_titles):
similar_doc = model.docvecs.most_similar(id_titles)
titles_lookup(similar_doc,titles_df)
def demo(model,titles_df):
print('hunt for red october')
demo_d2v_title(model,titles_df, 'tt0099810')
Выход для 10 лучших похожих фильмов для фильма - «Охота за красным октябрем»
id_titles similarity title release_year
0 tt0105112 0.541722 Patriot Games 1992.0
1 tt0267626 0.524941 K19: The Widowmaker 2002.0
2 tt0112740 0.496758 Crimson Tide 1995.0
3 tt0052151 0.471951 Run Silent Run Deep 1958.0
4 tt1922685 0.464007 Phantom 2013.0
5 tt0164184 0.462187 The Sum of All Fears 2002.0
6 tt0058962 0.459588 The Bedford Incident 1965.0
7 tt0109444 0.456760 Clear and Present Danger 1994.0
8 tt0063121 0.455807 Ice Station Zebra 1968.0
9 tt0146309 0.452572 Thirteen Days 2001.0
Вы можете видеть из вывода, что я все еще получаю старые фильмы. Пожалуйста, помогите мне, как решить это. Заранее спасибо.