您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析

自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析

来源:爱玩科技网

一、2020数学建模美赛C题简介

从提供的亚马逊电商平台的商品评价数据中识别关键模式、关系、度量和参数。

需求

评价内容

  1. 个人评级,星级评价,1~5分
  2. 评论,文本信息
  3. 帮助评分, 其他用户对“评论”的作用的评价

提供数据

tsv格式的数据, 如下图

二、解题思路

使用LDA模型量化评论,再结合其他数据进行下一步数据挖掘。这里主要讨论LDA。

三、LDA简介

LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为:

  • 一篇文章以一定概率选择了某个主题
  • 这个主题以一定概率选择了某个词语得到。
  • 文档到主题服从多项式分布,主题到词服从多项式分布。
  • 每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。

应用

  • LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。

使用了词袋(bag of words)方法

  • 将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。
  • 但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。

四、代码实现

代码头部全局变量,方便理解后续的代码:

import re
import nltk
import pandas as pd
from nltk.corpus import stopwords
from nltk.stem.wordnet import WordNetLemmatizer
from gensim import corpora, models

TOPIC_NUM = 1  # 主题数

lmtzr = WordNetLemmatizer()

m_files = [r"..\data\microwave.tsv",
           r"..\data\microwave_lda_1rmv_cols.tsv",
           r"..\data\microwave_lda_2dup_revs.tsv",
           r"..\data\microwave_lda_3rmv_invds.tsv",
           r"..\data\microwave_lda_4pos_revs.txt",
           r"..\data\microwave_lda_5neg_revs.txt",
           r"..\data\microwave_lda_6pos_rev_words.txt",  # 文本进行了处理
           r"..\data\microwave_lda_7neg_rev_words.txt",
           r"..\data\microwave_lda_8pos_topic.tsv",
           r"..\data\microwave_lda_9neg_topic.tsv",
           r"..\data\microwave_lda_10pos_topic_words.txt",
           r"..\data\microwave_lda_11neg_topic_words.txt",
           r"..\data\microwave_lda_12rev_words.tsv",
           r"..\data\microwave_lda_13rev_score.tsv"]

#  停用词集合
stop_words = set(stopwords.words('english'))
stop_words = [word for word in stop_words if word not in ['not']]
# print(stop_words)
# 自定义停用词
m_stop_words = ['would', 'br', 'microwave', 'use', 'get', 'old', 'new', 'look', 'work', 'could', 'oven',
                'purchase', 'take', 'make', 'buy', 'go', 'come', 'say', 'not', 'bought', 'even', 'ge',
                'also', 'ca', 'dry']
# 情感分析中重要的词性
m_tags = ['MD', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'RP', 'RB', 'RBR', 'RBS', 'JJ', 'JJR', 'JJS']
# 正则表达式过滤特殊符号用空格符占位,双引号、单引号、句点、逗号
pat_letter = re.compile(r'[^a-zA-Z \']+')
# 还原常见缩写单词
pat_is = re.compile("(it|he|she|that|this|there|here)(\'s)", re.I)
pat_s = re.compile("(?<=[a-zA-Z])\'s")  # 找出字母后面的字母
pat_s2 = re.compile("(?<=s)\'s?")
pat_not = re.compile("(?<=[a-zA-Z])n\'t")  # not的缩写
pat_would = re.compile("(?<=[a-zA-Z])\'d")  # would的缩写
pat_will = re.compile("(?<=[a-zA-Z])\'ll")  # will的缩写
pat_am = re.compile("(?<=[I|i])\'m")  # am的缩写
pat_are = re.compile("(?<=[a-zA-Z])\'re")  # are的缩写
pat_ve = re.<

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务