system: [SYSTEM]

user: 3. 基于情感分析和LDA主题拓展的推荐算法 3.1. 用户评论文本情感分析 Word2vec是Google公司在2013年提出的一款以深度学习算法思想为基础将词语表征转化为实数值词向量的高效开源工具。主要是利用深度学习方法训练文本内容将词语转化为词向量形式，从而词语语义相似度可以通过向量空间中词向量相似度表示，也可以对文本处理简化为向量空间中词向量运算。 Word2vec算法主要包含两种语言模型：CBOW (Continuous Bag of Words)和Skip-gram (Continuous Skip-gram Model)。这两种模型都包括输入层(input)、映射层(projection)、和输出层(output)。CBOW根据上下文语境预测目标词语，Skip-Gram根据当前单词预测上下文语境窗口内的词语。 主要步骤： 1) 爬取评论信息经分词、去停用词等预处理； 2) 训练生成word2vec词向量模型； 3) 获取每条评论文本词语的词向量，计算每条评论文本词向量均值，做为每条评论文本的文本向量； 4) 将有标记的评论文本向量按4:1比例分为训练集和测试集，采用SVM分类器，筛选出物品的正向评论、获取物品正向评论率。物品i正向评论率 p o s r i 为物品i正向评论条数 c o u n t i ，与物品i总评论条数 c o m m e n t s i 比值。 3.2. LDA主题模型 隐含狄列克雷分配主题模型(LDA: Latent Dirichlet Allocation)其实是基于“文本–主题–词”的三层贝叶斯产生式模型，用LDA主题模型对产品的评论内容进行主题词的抽取，用主题维度来代替原来的词项维度，可以较好地降低文本表示的特征维度。本文通过使用主题模型，文本就被投影到k个主题上。 矩阵 T = [ p 1 ， 1 p 1 ， 2 ⋯ p 1 ， K p 2 ， 1 p 2 ， 2 ⋯ p 2 ， K ⋮ ⋮ ⋱ ⋮ p N ， 1 p N ， 2 ⋯ p N ， K ] ，其中 p n ， k 表示文本 D n 在主题 T k 上的概率。 LDA的图模型结构如上图1所示，在LDA模型中，一篇文档生成的方式如下： 1) 文档规模的大小服从Poisson分布，记作 N ∼ P o s s i o n ( ξ ) ； 2) 文档 D m 主题分布参数的生成 θ m ∼ D i r ( α ) ，即狄利克雷分布生成文档 D m 的K维主题向量 θ m ，其中狄利克雷分布参数用 α 表示。这个操作需要重复N次，生成所有文档主题随机分布； 3) 生成文档特征词 w m ， n ：以根据文档的主题向量 θ m 的多项式分布 M u l i t i n o m i a l ( θ ) 选择该词对应的某一隐藏主题 z m ， n ，接着以多项式概率分布 M u l i t i n o m i a l ( φ ( z ) ) 即 φ k ，从主题z中择某一特征词 w m ， n 。 图1. LDA的三层贝叶斯网络模型图 3.3. LDA主题模型拓展 LDA主题模型对特征维度较高的评论词进行降维处理，对于评论文本信息，在使用LDA主题模型进行降维之后，可以获得每个文本关于主题的概率分布。记 D i ( t 1 ， t 2 ， ⋯ ， t k ) 为电影i评论文本信息主题的概率分布。 如果仅仅使用LDA主题模型，虽然对类似的词语进行归类合并，但也只能获取数量有限的K个主题来实现对文本内容的概述。这样的特征较为宽泛，粒度较为粗糙。即 D i ( t 1 ， t 2 ， ⋯ ， t k ) 为电影i评论文本信息关于主题的粗粒度特征。如果在对文本进行预处理后，将每个特征词都作为文本的特征，那么就会导致粒度太细致而具有稀疏性。对此，本文通过粗粒度主题特征选取每个主题下m个主题关键词作为细粒度特征，即 D i ( w 1 ， w 2 ， ⋯ ， w m k ) 为物品i评论文本信息关于主题关键词的细粒度特征。将粗、细粒度特征的结合综合特征记为 D i ( t 1 ， t 2 ， ⋯ ， t K ， w 1 ， w 2 ， ⋯ ， w m k ) ，可增强文本描述能力。 对评论文本信息 D = { d 1 ， d 2 ， ⋯ ， d n } 进行TF-IDF值的计算选取细粒度特征 D i ( w 1 ， w 2 ， ⋯ ， w m k ) 定义一种运算： A ⊗ B = R (1) 其中A是 m × n 的矩阵，B为 n × 1 矩阵，R为 1 × m n 的矩阵。 A m ， n ∗ B n = R m n 。 矩阵 T D i = [ p 1 p 2 ⋯ p K ] ，矩阵 Q D i = [ f 1 ， 1 f 1 ， 2 ⋯ f 1 ， K f 2 ， 1 f 2 ， 2 ⋯ f 2 ， K ⋮ ⋮ ⋱ ⋮ f M ， 1 f M ， 2 ⋯ f M ， K ] 。 其中 f m ， k 表示词语 W m ， k 在文本 D i 上的 t f − i d f 值。矩阵 R D i = [ r 1 r 2 ⋯ r M K ] ，其中 r m k = f m ， k ∗ p k ， 则 Q D i ⊗ T D i T = R D i ， R D i 即为文本 D i 的细粒度拓展主题关键词特征向量。 3.4. 个性化产品推荐列表 在用户的诸多信息中，评分是用户最简单、量化的偏好，因此在大量的推荐系统研究中均使用评分矩阵来分析用户对物品的偏好，但是不同用户的评价标准不同，只有在研究特定某一用户时，同一用户对不同物品的评分信息能够直接、有效的反映该用户对不同类型物品的喜好程度。 在给具体某用户推荐物品时还需要考虑该用户历史评分，把用户 u i 对物品j的评分用 s i ， j 进行表示，用户历史记录中有打分行为的物品数目为n，用户 u i 对物品j的评分偏好记为 w i ， j ，则计算公式如下： w i ， j = s i ， j ∑ k = 1 k = n s i ， k (2) 除了以数值形式呈现的评分数据，用户的历史评论数据中也包含用户的偏爱信息，在分析具体某个用户的兴趣偏爱时，由于用户的历史评论数据量一般并不是很庞大，很难精准的分析出用户对物品某个特征的喜爱程度，存在数据稀疏的问题，因此本文分析用户对主题的偏爱，主题包含一类相似的特征，用户主题偏爱能够反映用户对同一主题下物品相似特征的喜爱程度，同时能够有效的解决数据稀疏问题。 用户主题偏爱度的获取方法是将每个用户历史评论集合作为该用户的评论文档，如用户 u i 的评论文档记作 D U i 。使用LDA主题模型将所有用户的评论文档进行降维，可以获得用户评论文档关于主题的K维分布向量 D T U i = [ u t 1 ， u t 2 ， ⋯ ， u t K ] 。如果用户无历史评论信息或者评论文本数据过于稀疏的情况下， u t k 均设置为1。在LDA主题扩展时是将同一物品的评论作为同一文档，研究物品评论主题分布，用户兴趣分析时是将同一用户的评论文本作为同一文档，研究用户评论主题分布，但原始语料是相同的，描述物品也相同，所以主题维度K的选择应该等同3.3节物品评论的主题维度K。 推荐系统中物品特征提取、降向量维规格化后，需要计算物品之间相似度，计算不同产品之间相似性的方法有很多种。如余弦相似性、皮尔森相关系数和欧氏距离等，欧氏距离是直观且被广泛使用，它表示N维欧氏空间中两个点之间的距离，本文利用欧氏距离计算项目的相似性。 s i m ( x ， y ) = 1 1 + ∑ ( x i − y i ) 2 (3) 在个性化推荐中目标用户 u i 历史记录中包含物品j，其评论文本 D j 的主题拓展特征向量可以表示为 D j = ( T D j | R D j ) = ( p j ， 1 ， p j ， 2 ， ⋯ ， p j ， K ， r j ， 1 ， r j ， 2 ， ⋯ ， r j ， M K ) ，同理对目标用户 u i 历史记录中不包含的物品i，其评论文本 D i 的主题拓展特征向量也可以表示为 D i = ( T D i | R D i ) = ( p i ， 1 ， p i ， 2 ， ⋯ ， p i ， K ， r i ， 1 ， r i ， 2 ， ⋯ ， r i ， M K ) ，物品i和物品j评论文本主题拓展特征向量的欧几里德距离相似度： s i m i j = 1 1 + d ( D i ， D j ) = 1 1 + ∑ s = 1 s = K ( p i ， s − p j ， s ) 2 + ∑ s = 1 s = M K ( r i ， s − r j ， s ) 2 (4) 已知用户 u i 的主题偏爱向量为 D T U i = [ u t 1 ， u t 2 ， ⋯ ， u t K ] ，用户 u i 对物品j的评分偏好记为 w i ， j ，在为用户 u i 进行个性化推荐时，在物品评论文本相似度计算中加入用户主题偏爱和评分偏好权重后的物品相似度计算公式为： s i m i j = w i ， j 1 1 + ∑ s = 1 s = K u t s ( p i ， s − p j ， s ) 2 + ∑ s = 1 s = M K ( r i ， s − r j ， s ) 2 ⋅ p o s r i (5) 其中 p o s r i 是物品i的正向评论率，是物品i正向评论条数与其总评论条数比值。