qq_59077251 2022-11-24 17:52
浏览 2
已结题

将代码转换为scala的

def item_based_recommend(user_id, user_item_time_dict, i2i_sim, sim_item_topk, recall_item_num, item_topk_click):
"""

    :param user_id: 用户id
    :param user_item_time_dict: 字典, 根据点击时间获取用户的点击文章序列   {user1: [(item1, time1), (item2, time2)..]...}
    :param i2i_sim: 字典,文章相似性矩阵
    :param sim_item_topkuser择与当前文章最相似的前k篇文章
    :param recall_item_num: 整数, 最后的召回文章数量
    :param item_topk_click: 列表,点击次数最多的文章列表,用户召回补全
     return: 召回的文章列表 {item1:score1, item2: score2...}

"""

# 获取用户历史交互的文章
user_hist_items = user_item_time_dict[user_id]
user_hist_items_ = {user_id for user_id, _ in user_hist_items}

item_rank = {}
for loc, (i, click_time) in enumerate(user_hist_items):
    for j, wij in sorted(i2i_sim[i].items(), key=lambda x: x[1], reverse=True)[:sim_item_topk]:
        if j in user_hist_items_:
            continue

        item_rank.setdefault(j, 0)
        item_rank[j] += wij

# 不足10个,用热门商品补全
if len(item_rank) < recall_item_num:
    for i, item in enumerate(item_topk_click):
        if item in item_rank.items():  # 填充的item应该不在原来的列表中
            continue
        item_rank[item] = - i - 100  # 随便给个负数就行
        if len(item_rank) == recall_item_num:
            break

item_rank = sorted(item_rank.items(), key=lambda x: x[1], reverse=True)[:recall_item_num]

return item_rank

哪位能把这段代码改成用scala语言写的

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月2日
    • 创建了问题 11月24日

    悬赏问题

    • ¥50 rk3588板端推理
    • ¥50 opencv怎么去掉 数字0中间的斜杠。
    • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
    • ¥50 paddleocr带斜线的0很容易识别成9
    • ¥15 电子档案元素采集(tiff及PDF扫描图片)
    • ¥15 flink-sql-connector-rabbitmq使用
    • ¥15 zynq7015,PCIE读写延时偏大
    • ¥15 使用spss做psm(倾向性评分匹配)遇到问题
    • ¥20 vue+UEditor附件上传问题
    • ¥15 想做个WPS的自动化代码,不知道能做的起不。