如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动的问题。
冷启动问题(cold start)主要分3类。
用户冷启动
物品冷启动
系统冷启动
1)用户冷启动可以利用用户注册信息,也可以选择合适的物品启动用户的兴趣(基于NLP方向的推荐)
2)物品冷启动可以利用物品的内容信息
3)系统冷启动可以发挥专家的作用
本文重点介绍文本处理(基于用户冷启动的NLP推荐算法)。
算法涉及到了:
- 文本相似度 (COS相似度;Jaccard相似度)
- 文本距离 (欧式距离;曼哈顿距离;闵科夫斯基距离,马氏距离)
- NFM (基于内容的协同过滤 + 基于人物的协同过滤)
- 主题模型推荐 (PLSA模型,LDA模型,ATM模型)
- 知识图谱 (知识关联,知识推理)
- 后台热门统计 (分时,分天,分周,分月分别进行统计结果输出)
1.针对于非结构化的数据(文本类)
- 非标准字符的去掉(标点符号)
(标点符号认为是无用的,选择python的re工具包即可) - 分词 (仅中文需要)
(中文的问题是所有词都是挨着的,分开才有效,选择jieba工 具包) - 词干化和统一化(仅英文需要)
(英文的单词是由过去,将来,现在进行时的,所以词干化,这部分选择NLTK处理) - 去除停用词(中英文都需要)
(比如常用的“的”“得”“了”......"the""in""too"......等词,无论是经过one-hot,TF-IDF,word2vec处理,都是一些相关性很低的词,这些词的加入很引起特征值不必要的增大和运算时候的难度和时间,但是并没有效果提升) - 向量化
(计算机只能处理矩阵,所以变化为矩阵是必经之路,Bag ofword,TF-IDF法,Word2vec法,工具包是基本每个ML和DL框架平台都提供API)
文本预处理流程:
- re正则表达式去除标点符号,HTML无用信息,表情符号........
re正则表达式学习教程地址:http://www.runoob.com/regexp/regexp-tutorial.html
re正则表达式练习地址:http://tool.oschina.net/regex/ - jieba 分词API:https://github.com/fxsjy/jieba
- nltk工具包: http://www.nltk.org/
- 去除停用词:各种计算框架均有stopword
- 词的向量化方法: bag of word, N-Grame, TF-IDF, word2vec
词的向量化表示:bag of word, N-Gram, TF-IDF, word2vec.