13|基于关键词的召回:如何使用关键词吸引用户?
黄鸿波
你好,我是黄鸿波。
在讲解了基于时间的召回和基于热度的召回后,今天我们进入到基于规则召回的最后一种——基于关键词的召回,我将本节课分为了下面两个大的部分。
基于关键词的召回。
提取关键词的几种获取方式。
那么话不多说,我们直接开始本节课的内容。
基于关键词的召回
对于任何一篇文章、段落、标题等,只要是以文字形式展现的内容,我们都能够通过一系列的词语组合起来代表一篇文章的主旨,而这一系列的词语就是文章的关键词。
文章的标题是一篇文章最精辟的概括,摘要是一篇文章的主旨,正文是文章的详细信息。对于一篇文章来说,我们最先看到的是关键词,其次是摘要,然后才是文章正文的本身。因此,在做关键词提取和文章的特征时,我们一般需要分开来做关键词的提取和保存。
基于关键词的召回往往与用户画像或搜索关键词息息相关。在用户画像中实际上也会有用户常看的内容关键词的集合,甚至还可以对这些关键词的出现频率进行排序,从而来确定这些关键词的重要性。而在基于关键词召回的算法中,我们可以将文章的关键词和用户画像中用户标签的关键词进行结合,从而进行基于关键词的召回。
除了用户画像外,用户的搜索内容往往是基于关键词召回的关键所在。一般来讲,一旦用户搜索了一个关键词,说明用户对这个关键词表示的内容是非常感兴趣的。因此,我们在做推荐的时候就需要尽可能把关键词相关的内容给展示出来,从而增加用户的黏性和点击率。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了关键词吸引用户的技术方法,重点讨论了基于关键词的召回和提取关键词的算法。首先,强调了关键词在文章中的重要性,以及如何结合用户画像和搜索内容进行基于关键词的召回。其次,详细解释了TF-IDF算法的原理和应用,以及TextRank算法相对于TF-IDF的优势,包括对相邻词语之间的语义关系的考虑和脱离语料库的特点。文章还介绍了TextRank算法的具体思路,包括句子切分、数据清洗、构建候选关键词的图、节点权重的迭代计算等步骤。此外,还介绍了两种算法联合提取关键词的方法,以及如何使用开源jieba库编写的整体算法进行处理。最后,总结了基于关键词的召回算法的实现和提取关键词中两种常见的算法:TF-IDF和TextRank算法,以及这两种算法的实现原理。整体而言,本文深入浅出地介绍了关键词召回和提取关键词的技术方法,对于想要了解如何利用关键词吸引用户的读者来说,是一篇值得阅读的技术文章。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你搭建推荐系统》,新⼈⾸单¥59
《手把手带你搭建推荐系统》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- Weitzenböck老师,能提供一下stopword.txt和user_dict.txt,而且我在运行代码的时候出现了定义Segment
作者回复: https://github.com/ipeaking/recommendation https://github.com/ipeaking/scrapy_sina
2023-09-05归属地:江苏2 - Weitzenböck这个课程真的是一点代码和资料的github都没有吗?
作者回复: https://github.com/ipeaking/recommendation https://github.com/ipeaking/scrapy_sina
2023-09-05归属地:江苏 - peter关键词的获取,是否有现成的可用的工具?就是说拿来就能用、基本不用开发。比如我要搭建一个推荐系统,也用到了关键词获取,导入一个库然后调用其API就可以直接获取;或者运行一个工具软件,可以直接获取;或者某个平台提供该服务。等等。
作者回复: 可以的,其实有很多基于深度学习和机器学习的关键词提取的库,你可以去百度下这些库的用法,jieba就是其中一个。
2023-05-16归属地:北京 - Geek_ccc0fd我装的jieba==0.42.1可以直接对句子提取关键词,分词的部分已经封装在jieba代码里面了,修改了一下关键词提取代码: import jieba from jieba.analyse import extract_tags from jieba.analyse import textrank class KeywordModel(object): def __init__(self): jieba.load_userdict('../data/user_dict.csv') jieba.analyse.set_stop_words('../data/stopWord.txt') def get_keywords(self, sentence, type, topK=10, pos=('ns', 'n', 'vn', 'v')): """ 获取关键词 :param sentence: 文本 :param type: 使用哪种关键词算法,可选:tfidf,textrank :param topK: 获取topK关键词 :param pos: 分词保留的词性类型,eg:('ns', 'n', 'vn', 'v') :return: """ if type == 'tfidf': tfidf_keywords = extract_tags(sentence, topK=topK, allowPOS=pos) return tfidf_keywords elif type == 'textrank': textrank_keywords = textrank(sentence, topK=topK, allowPOS=pos) return textrank_keywords def keyword_interact(self, tfidf_keyword, textrank_keyword): """ 关键词交集 :param tfidf_keyword: :param textrank_keyword: :return: """ return list(set(tfidf_keyword).intersection(set(textrank_keyword))) def keyword_combine(self, tfidf_keyword, textrank_keyword): """ 关键词并集 :param tfidf_keyword: :param textrank_keyword: :param k: :return: """ combine = list(tfidf_keyword) for word in textrank_keyword: combine.append(word) return list(set(combine)) def keyword_combine_topk(self, tfidf_keyword, textrank_keyword, k): """ 关键词topk并集 :param tfidf_keyword: :param textrank_keyword: :param k: :return: """ combine = list(tfidf_keyword[:k]) for word in textrank_keyword[:k]: combine.append(word) return list(set(combine))
作者回复: 不错,可以推广给同学们
2023-05-16归属地:广东 - 翡翠虎有常用的停用词表吗
作者回复: 一般常用的停用词表可以在网上找到,或者找敏感词表,有些github上面也会公布,可以搜关键词stopwords。
2023-05-15归属地:广西2 - Juha老师,这里的from segment import Segment,segment怎么安装呀,通过pip install segment的这个包没有Segment2024-02-28归属地:北京
收起评论