我用Python进行情感分析,让程序员和女神牵手成功

2019-10-09 15:08:57 作者:   |   浏览(205)

我用Python进行情感分析,让程序员和女神牵手成功

先用电影谈论来做情感剖析,首要包括下面几个首要内容(看到最终哦):

1、预备文本数据2、依据文本文档来构建特征向量3、练习机器学习模型来区别电影谈论的正面谈论和负面谈论(对你的女神相同适用哦~~)4、运用外存学习和在线学习算法来处理大数据

在本篇文章中,首要介绍关于电影谈论数据的预备工作。

 

 

 

一、情感剖析

情感剖析也称观念发掘(opinion mining),是机器学习中自然语言处理(NLP)范畴一个十分盛行的分支,它首要是剖析文档的情感倾向。

 

 

二、下载数据

请自行预备一个电影信息(或许直接运用你和女神的谈天信息)

 

 

该电影谈论是来自IMDb中的电影谈论,数据集总共包括了50000个关于电影的正面谈论和负面谈论,正面谈论代表关于影片的评分超过了6颗星,而负面谈论则表明评分低于5颗星。50000条谈论被分成了四个文件夹train的neg和pos和test的neg和pos,其间每个文件夹中包括了12500个txt电影谈论文件,其间pos代表正面谈论,neg代表负面谈论。所以,咱们需求将这50000个txt文件整组成一个表格,表格分为两列,榜首列表明谈论的内容,第二列表明谈论是归于正面(用1表明)仍是负面(用0表明)。

三、生成电影谈论的表格文件

将50000个txt文件整组成一个表格文件的时分,需求十分钟左右。咱们能够经过Python的pyprind库将整个处理进程可视化,一同它还能依据当时核算机的运转状况来估量剩下处理时刻,处理完结之后,还能检查耗费的总时刻。经过python的数据剖析库pandas将电影谈论保存成一个csv文件。

1、估计处理总时刻

 

2、核算处理总时刻

 

3、python完成代码

 

 

 

 

 

咱们还需求知道将文本转化为特征向量前的一些预备工作,首要内容包括:

1、清洗文本数据2、符号文档3、词袋模型

 

 

一、清洗文本数据

清洗文本需求将文本中所包括的一些不必要的字符删去。

1、删去不必要的字符

print(data["review"][0][-50:])

is seven.Title (Brazil): Not Available

发现谈论中含有一些HTML符号符、标点符号、以及其他的非字母符号。HTML符号符在关于咱们对谈论做情感剖析的时分没有影响,至于标点符号可能会影响语句的语义,为了简化处理咱们将标点符号进行删去,保存表情符号(如":)"),由于表情符号关于电影谈论情感的剖析很有协助。下面,咱们经过python的正则表达式来删去这些不必要的字符。

python的正则表达式供给了一种字符串查找特定字符串的便利有用办法,正则表达式也要许多的技巧和办法,假如对正则表达式有爱好的话能够自己去了解一下。在这里咱们仅仅简略的运用一下,所以对正则表达式不会有过分具体的介绍。

 

2、符号文档

关于英文文档咱们能够运用其天然的空格作为单词的分隔符,假如是中文的时分,能够运用一些分词库如jieba分词。在语句中,咱们可能会遇见先"runners"、"run"、"running"单词不同的方式,所以咱们需求经过词干提取(word

stemming)来提取单词原形。开始的词干提取算法是由Martin F. Porter在1979年提出的,被称为porter

stemming算法。咱们能够经过装置python的自然语言工具包NLTK,去官网下载就好,在NLTK中现已是完成了Porter

Stemming算法,还有完成了比它更高档的Snowball stemmer和Lancaster stemmer与porter

stemming比较,它们愈加的提取速度更快。能够经过pip指令进行装置

pip install nltk

 

3、停用词的移除

停用词大致能够分为两类,一类是功用词,这些功用词十分遍及,与其他的词比较,功用词没有什么实践的含义,比方"the"、"is"、"at"、"which"等。还有一类是词汇词,比方"want"等。停用词关于电影谈论的心情分类没有任何含义,所以咱们需求将一些停用词进行删去。经过nltk.download函数获取NLTK供给的停用词,并运用这些停用词来移除电影谈论中的停用词。NLTK库供给的停用词,总共有179个,下面给出部分的停用词

 

咱们还需求做什么呢?

1、将单词转化为特征向量2、TF-IDF核算单词关联度

在之前,咱们现已知道一些文本的预处理和分词。这篇文章中,首要介绍怎么将单词等分类数据转成为数值格局,以便利咱们后边运用机器学习来练习模型。

 

一、将单词转化为特征向量

词袋模型(bag-of-words model):将文本以数值特征向量的方式来表明。首要经过两个进程来完成词袋模型:

1、为整个文档集(包括了许多的文档)上的每个单词创立一个仅有的符号。

2、为每个文档构建一个特征向量,首要包括每个单词在文档上的呈现次数。

留意:由于每个文档中呈现的单词数量仅仅整个文档会集很少的一部分,因而会有许多的单词没有呈现过,就会被符号为0。所以,特征向量中大大都的元素就会为0,就会发生稀少矩阵。

下面经过sklearn的CountVectorizer来完成一个词袋模型,将文档转化成为特征向量

 

经过count.vocabulary_咱们能够看出每个单词所对应的索引方位,每一个语句都是由一个6维的特征向量所组成。其间,榜首列的索引为0,对应单词"and","and"在榜首和二条语句中没有呈现过,所认为0,在第三条语句中呈现过一些,所认为1。特征向量中的值也被称为原始词频(raw

term frequency)简写为tf(t,d),表明在文档d中词汇t的呈现次数。

留意:在上面词袋模型中,咱们是运用单个的单词来构建词向量,这样的序列被称为1元组(1-gram)或单元组(unigram)模型。除了一元组以外,咱们还能够构建n元组(n-gram)。n元组模型中的n取值与特定的运用场景有关,如在反垃圾邮件中,n的值为3或4的n元组能够获得比较好的作用。下面举例阐明一下n元组,如在"the weather is sweet"这句话中,1元组:"the"、"weather"、"is"、"sweet"。2元组:"the weather"、"weather is"、"is sweet"。在sklearn中,能够设置CountVecorizer中的ngram_range参数来构建不同的n元组模型,默许ngram_range=(1,1)。sklearn经过CountVecorizer构建2元组

 

 

 

二、TF-IDF核算单词关联度

在运用上面的办法来构建词向量的时分可能会遇到一个问题:一个单词在不同类型的文档中都呈现,这种类型的单词其实是不具备文档类型的区别才能。咱们经过TF-IDF算法来构建词向量,从而来战胜这个问题。

词频-逆文档频率(TF-IDF,term frequency-inverse document frequency):tf-idf能够界说为词频×逆文档频率

 

其间tf(t,d)表明单词t在文档d中的呈现次数,idf(t,d)为逆文档频率,核算公式如下

 

其间,nd表明文档的总数,df(t,d)表明包括单词t的文档d的数量。分母中参加常数1,是为了避免df(t,d)=0的状况,导致分母为0。取log的意图是确保当df(t,d)很小的时分,不会导致idf(t,d)过大。

经过sklearn的TfidfTransformer和CountVectorizer来核算tf-idf

 

 

 

能够发现"is"(第二列)和"the"(第六列),它们在三个语句中都呈现过,它们关于文档的分类所供给的信息并不会许多,所以它们的tf-idf的值相对来说都是比较小的。

留意:sklearn中的TfidfTransformer的TF-IDF的核算与咱们上面所界说TF-IDF的公式有所不同,sklearn的TF-IDF核算公式

 

通常在核算TF-IDF之前,会对原始词频tf(t,d)做归一化处理,TfidfTransformer是直接对tf-idf做归一化。TfidfTransformer默许运用L2归一化,它经过与一个未归一化特征向量L2范数的比值,使得回来向量的长度为1,核算公式如下:

 

下面经过一个比如来阐明sklearn中的TfidfTransformer的tf-idf的核算进程,以上面的榜首句话"The sun is shining"为比如

1、核算原始词频

a、单词所对应的下标

 

b、核算第三句话的原始词频tf(t,d)

 

c、核算逆文档频率idf(t,d)

 

留意:其他的词在核算tf-idf都是0,由于原始词频为0,所以就不需求核算idf了,log是以自然数e为底。

d、核算tf-idf

 

所以,榜首个语句的tf-idf特征向量为[0,1,1.29,1.29,0,1,0]

e、tf-idf的L2归一化

 

鄙人一篇文章中将介绍怎么运用这些语句的特征向量来构建一个模型进行情感分类。虽然在实践演示的是电影影评,但是练习好了但是能够用来处理你的谈天信息的哦~~~

 

想不想用来测验一下你的女神和你谈天时分的心情呢?保你牵手成功!!!

我们有什么问题都能够在谈论区留言,假如我们想要一同学习能够加小编自己的*哦,假如你没看到,就阐明阅览不细心

 

 

沈阳失眠医院

南京精神病医院

南京焦虑医院

苏州哪家哪家医院治抑郁症好

上海看精神分裂症医院

南京仁康医院怎么样