推荐系统学习笔记——十二、结巴分词用于内容相似推荐

十二、结巴分词用于内容相似推荐

计算物品最相似的其他物品,直接用于I2I相似推荐,或者U2I2I推荐

以文章为例,进行内容相似推荐,一般需要以下几个步骤:

推荐系统学习笔记——十二、结巴分词用于内容相似推荐

内容获取

  • 一般包含ID、标题、介绍、详情等,存储于MySQL数据库中。批量查取这些内容,进行下一步

中文分词:提取关键词

  • 中文没有空格进行分词,所以需要手动分词,使用TFIDF技术,jieba分词
  • 结巴分词,中文分词组件,三种模式:全模式、精确模式、搜索引擎模式。一般用精确模式。
  • 有一些词是不需要的,比如我、一些等等。结巴分词提供了关键词提取技术
    • 基于TF-IDF算法的关键词提取
    • import jieba.analysis
    • jieba.analysis.extract_tags(sentence,topK=20,withWeight=True,allowPOS=())
      • sentence:待分词的句子
      • topK=20:返回20个权重最大的关键词
      • withWeight=True:是否一并返回关键词的权重,默认为False,一般选择True
      • allowPOS=():仅包含指定词性的词,默认为空,即不筛选
    • jieba.analysis.TFIDF(idf_path=None) 新建TFIDF实例,idf_path为IDF频率文件
  • 通过这种方式,过滤掉没有意义的词,并获取关键词的权重。得到结果之后,有两个分支,一个是Doc2Vec,一个是Word2vec

Doc2Vec:平均、加权平均

  • 得到关键词和权重之后,计算文章的数字向量,两种方法:平均、加权平均
    • 平均:[1,0,0,1,0]
    • 加权平均:[0.8, 0.6, 0, 0.3, 0.5]
  • 这样就把文章的多个关键词和权重变成一个向量,这是多个词的组合得到的一个结果
  • 有缺点:只能实现精确匹配。原来的文章中有“推荐系统”关键词,那目标文章中也有“推荐系统”才能被匹配到

Word2vec:语意扩展

  • 可以发现语意的关系,比如推荐系统的文章中经常出现大数据,那么推荐系统文章下面的推荐也会有大数据的文章
  • 实现:
    • 自己训练一个Word2vec,比如Spark Word2vec,
      • Spark官网——Programming Guides ——MLlib(Machine Learning)进入spark的机器学习库,点击Extracting,transforming and selecting features进入提取、转换和选择特征,找到Word2vec,看例子
      • 问题:数据量小的话,训练结果不是很好,不能发现相关语意的词
    • 使用开源的,比如腾讯的Word2vec
      • ai.tencent.com/ailab/nlp/embedding.html
      • 腾讯AI实验室,根据百度百科、维基百科得到的
      • 数据有两列,一列是词,一列是向量,下载可以直接用
      • 可以得到字面不等、语意相关的词,用于推荐系统有很好的泛化性

TopN相似近邻搜索

得到每篇文章的向量之后,进行相似近邻搜索,输入一篇文章,计算相似得到TopN。方法有两种:scipy余弦相似度、LSH局部敏感哈希

  • scipy余弦相似度,直接算出相似度,
    • scipy.spatial.distance.cosine(u,v)
      • u,v都是一维数字数组,
      • scipy库是C实现的,效果比python实现效果好。
      • 有问题:需要自己实现每篇文章和其他文章的相似度,再排序找出TopN
  • LSH局部敏感哈希
    • spark官网——Programming Guides ——MLlib(Machine Learning)进入spark的机器学习库,点击Extracting,transforming and selecting features进入提取、转换和选择特征,找到Locality Sensitive Hashing局部敏感哈希
    • 局部敏感哈希,一种重要的哈希算法,一般用于聚类、相似近邻搜索
    • 把一万篇文章,分到多个分桶,再分桶中计算相似

redis缓存

把相似近邻搜索的TopN文章,存储在redis中,key是文章ID,value是TopN文章ID的list

Flask/Java Web服务

根据redis中存储的文章ID列表,查询文章并返回文章列表,实现内容相似推荐