先用电影评论来做情感分析,主要包括下面几个主要内容(看到最后哦):
1、准备文本数据2、基于文本文档来构建特征向量3、训练机器学习模型来区分电影评论的正面评论和负面评论(对你的女神同样适用哦~~)4、使用外存学习和在线学习算法来处理大数据
在本篇文章中,主要介绍对于电影评论数据的准备工作。
一、情感分析
情感分析也称观点挖掘(opinionmining),是机器学习中自然语言处理(NLP)领域一个非常流行的分支,它主要是分析文档的情感倾向。
二、下载数据
请自行准备一个电影信息(或者直接使用你和女神的聊天信息)
该电影评论是来自IMDb中的电影评论,数据集一共包含了个关于电影的正面评论和负面评论,正面评论代表对于影片的评分超过了6颗星,而负面评论则表示评分低于5颗星。条评论被分成了四个文件夹train的neg和pos和test的neg和pos,其中每个文件夹中包含了个txt电影评论文件,其中pos代表正面评论,neg代表负面评论。所以,我们需要将这个txt文件整合成一个表格,表格分为两列,第一列表示评论的内容,第二列表示评论是属于正面(用1表示)还是负面(用0表示)。
三、生成电影评论的表格文件
将个txt文件整合成一个表格文件的时候,需要十分钟左右。我们可以通过Python的pyprind库将整个处理过程可视化,同时它还能根据当前计算机的运行状态来估计剩余处理时间,处理完成之后,还能查看消耗的总时间。通过python的数据分析库pandas将电影评论保存成一个csv文件。
1、预计处理总时间
2、统计处理总时间
3、python实现代码
我们还需要知道将文本转换为特征向量前的一些准备工作,主要内容包括:
1、清洗文本数据2、标记文档3、词袋模型
一、清洗文本数据
清洗文本需要将文本中所包含的一些不必要的字符删除。
1、删除不必要的字符
print(data[review][0][-50:])
isseven.Title(Brazil):NotAvailable
发现评论中含有一些HTML标记符、标点符号、以及其他的非字母符号。HTML标记符在对于我们对评论做情感分析的时候没有影响,至于标点符号可能会影响句子的语义,为了简化处理我们将标点符号进行删除,保留表情符号(如:)),因为表情符号对于电影评论情感的分析很有帮助。下面,我们通过python的正则表达式来删除这些不必要的字符。
python的正则表达式提供了一种字符串搜索特定字符串的方便有效方法,正则表达式也要很多的技巧和方法,如果对正则表达式有兴趣的话可以自己去了解一下。在这里我们只是简单的使用一下,所以对正则表达式不会有太过详细的介绍。
2、标记文档
对于英文文档我们可以利用其天然的空格作为单词的分隔符,如果是中文的时候,可以利用一些分词库如jieba分词。在句子中,我们可能会遇见先runners、run、running单词不同的形式,所以我们需要通过词干提取(word
stemming)来提取单词原形。最初的词干提取算法是由MartinF.Porter在年提出的,被称为porter
stemming算法。我们可以通过安装python的自然语言工具包NLTK,去