Git Product home page Git Product logo

textmining's Introduction

基于文本挖掘对商品销量的预测

——以某电商手机销售为例

概述

爬虫获取的源数据,通过pre_data.py对数据进行预处理。在经过lda_model.py提取评论特征名词,对于每一条评论相关特征名词相前后的情感副词、情感词进行加权得分,建立一个以特征名词为列向量的DataFrame评论得分数据。最后通过PCA、皮尔逊等提取特征数据进行建模,对基本数据模型有LRMode、SVM、Xgboost进行建模训练,预测销量排名。

数据预处理

分句

每条评论可能由多个句子组成,没一句话所谈到的内容或者产品特征均不相同。如果以每条评论为单位来进行产品特征评论语句来分类容易产生混淆。与英文分词不同,中文词与词之间不能够严格的按照空格来区分,所以中文的分词工作需要利用某些方法来进行。本次分句使用python包jieba进行切词。

分词与词性标注

无论是产品的特征词还是情感观点词都需要通过分词从连续的句子中分离出来,而这些往往都是名词和形容词,所以分词之后对词性标注有利于我们识别这些词,这为之后的文本处理工作奠定了数据基础。

去除停用词

文本中一些介词、量词、助词、标点符号等文本要就无意义的词,需要剔除,所以我们还需要对这些评论语料进行停用词过滤和标点符号过滤。停用词和标点符号的过滤可以采用根据停用词表,用python加载停用词文件进行过滤操作。

LDA模型获取特征词

LAD模型

1:一种分监督机器学习技术,可以用来识别大规模文档集或语料库中潜藏的主题信息。

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

3:每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。

名词过滤

产品特征大多数为名词,所以还需要在预处理语料的基础 上剔除掉其他词,只留下名词,这样再一次缩小产品特征词的提取范围。并不是评论语料中所有的名词都可以作为产品的特征词,一些名词往往不是产品特征,例如“时间”、“地点”、“人物”、“东西”等。为了得到能够较为准确的表达产品特征的候选词,我们需要对上述名词语料进行名词过滤处理。使用过滤规则对名词进行名词过滤处理是常用的方法。

同义词合并

中文对某一特征可以用多种方式表达,例如“价钱”、 “价格”、“价位”表达的都是一个意思。在网络评论中,消费者往往都有自己的语言习惯,不会使用同一的表达方式,从而导致某些表达方式因为出现频率过高被选出来而其他的则不能被选出来。为了解决这个问题,在LDA模型提取特征词之前将表达同一个意思的不同表达词汇统一用一个词来表示。

LDA模型特征提取步骤

1)以评论语料中所有词汇最为LDA模型的词典

2)使用上述词典对所有评论语料转换为LDA模型语料库

3)使用LDA模型对语料库进行训练

4)得到每个主题下词汇的概率分布

5)使用阀值筛选出合适的词作为产品特征词

情感极性判断与程度计算

建立情感词典

首先我们需要建立情感极性词典,也就是正面情感词典和负面情感词典,其中包含了一些表示情感极性的词,例如“好”、“漂亮”、“差”、“烂”等词。在得到了情感极性词典之后只能对语句进行情感极性的判断,要计算极性程度还需要另外一些词典,其中最重要的就是副词词典。

副词词典

包含的主要是否定副词和程度副词,否定副词可以在一定程度上提高情感词典对语句极性判断的准确率。例:“质量不好”,在使用了否定副词词典后结果就为负向;另外通过程度副词比如“较”、“极”、“稍微”、“有点”,并给不同程度的副词赋予不同的权值,可以在情感极性基础上计算极性程度

对情感词典赋权值

有了情感词典和程度词词典,在进行程度计算之前还需要对不同程度词赋予不同的权值。

| 情感程度 | 权值|
| ------ | ------ |
| 积极情感 | +1 |
| 消极情感 | -1 |
| 反向副词 | -1 |
| most副词 | 2 |
| very副词 | 1.5 |
| more | 1.25 |
| lsh副词 | 0.5 |
| insufficient副词 | 0.25 |

极性程度计算

对含有特征词的语句进行以下极性程度计算,并以均值代 表该产品特征的极性程度 Score = score * weight

回归模型预测销量排序

1:建立三个基本模式处理提取出来的特征(PCA、PCC、None)

2:建立三个基本模型训练数据(LRModel、SVM、Xgboost)

3:对以上基本模型使用sklearn网格搜索选择最优超参数

4:对预测结果与真实值可视化展示

5:采用r方评估模型,最优模型r方为0.96

————待补充......2019/03/05

textmining's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

textmining's Issues

请教

博主能分享一下爬虫的代码吗

StopwordsCN.txt文件能分享一下嘛?

data_pre.py中的这些文件

stopwords_path = './data/StopwordsCN.txt'
data_1_path = './data/data1.csv'
data_2_path = './data/data2.csv'
data_3_path = './data/data3.csv'
data_4_path = './data/data4.csv'

技术交流

一直在组织一些师兄弟业余在围绕数据进行积累,有一批手机数据需要挖掘,有兴趣么?我的qq: 1840658279 谢谢!

请教

ida和data_pre中涉及到的字典可以分享一下吗?
data_pre.py
stopwords_path = './data/StopwordsCN.txt' data_1_path = './data/data1.csv' data_2_path = './data/data2.csv' data_3_path = './data/data3.csv' data_4_path = './data/data4.csv'
ida.py
stopwords_path = './data/StopwordsCN.txt' simi_path = './data/simi_words.txt' positive_path = './data/posdict.txt' negative_path = './data/negdict.txt' mostdict_path = './data/mostdict.txt' verydict_path = './data/verydict.txt' moredict_path = './data/moredict.txt' lshdict_path = './data/lshdict.txt' insufficientdict_path = './data/insufficientdict.txt'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.