推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python爬虫的电影评论情感倾向性分析

更新时间:2019-12-26 11:15:35 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

通过对豆瓣网站评分高(9.1分)的与评分(5.2分)两部电影进行电影评论的搜集,利用Python网络爬虫获取这些评论数据并清理.利用PMI算法,对TF-IDF算法进行改进,并对评论进行分类,得出PMI最高的15个分词,最后对分词进行分析统计,得出分析结果.


部分文件列表

文件名 大小
基于Python爬虫的电影评论情感倾向性分析.pdf 2M

部分页面预览

(完整内容请下载后查看)
研究与开发  
文章编号1007-1423201735-0055-04  
DOI10.3969/j.issn.1007-1423.2017.35.011  
基于 Python 爬虫的电影评论情感倾向性分析  
涂小琴  
南师范大学文理学院650222)  
摘要:  
通过对豆瓣网站评分9.1 与评5.2 部电影进行电影评论的搜集Python 网络爬虫获取这些评  
论数据并清理。利用 PMI 算法TF-IDF 算法进行改进对评论进行分类PMI 最高的 15 个分词后对分  
词进行分析统计出分析结果。  
关键词:  
Python感分析评  
通过豆瓣网站中最近热点的两部电跤吧!  
0
引言  
及电影评进行数据处理过  
随着现代生活水平的提高多的愿意将时间和  
PLN 机器学习进行情感分析析观众情感倾向。  
精力投入至精神生活来越多的人去到电影院为  
国内电影最有影响的莫过于豆,  
豆瓣给电影爱好者提供了一个很好的分享及评论平  
台。每一部电影豆瓣上都可以看到很多的评论可  
见人们对电影的喜爱。那什么样的电影是大众所喜欢  
的呢?什么样的电影又是不被大众所喜爱呢Py  
thon 爬虫们可以获取大量的影评来进行分析而  
得出观众的喜好。  
1
数据获取  
豆瓣上有很多关于每一部电影的评论于一些  
评分比较高的电影而言的评论在几十万条以采  
Python 网络爬虫来进行处理于豆瓣是一个反爬  
虫的网站以在做网络爬虫时需要进行浏览器访  
问模拟过对网页源代码的分析正则表达式来获  
取所需数据。为了能够更好地分析观众的情感获  
取数据时别获取了豆瓣网站上得分高于 9.0 的两部  
电影及得分低于 4.0 的两部电影的影评数据进行分  
析。通过高分的两部电影与低分的两部电影进行对比  
分析能反映观众的喜好。  
情感分析是一种常见的自然语言处NLP法  
的应用NLP 情感分析中一般有两种方法一种是根  
据语义和依存关系来量化文本的情感色彩。但这种方  
法首先需要很完善的情感词库外需要很好的语言  
学基础就是说需要知道一个句子通常在什么情况  
为表现为 Positive Negative。个人认为们永远无  
法穷尽所有的语法规则和感情词汇也就无形之中  
增加了构造分类规则的难度。第二种方法是基于  
机器学习的方法。基于机器学习质上就是要转化  
为机器学习能解决的问题。情感分析实际上就是认为  
是机器学习中的二分类问题。但是机器是无法理解文  
本的以我们必须能够实现让文本转化为向量而  
让机器能够理解。  
要获取相应的数据同的网站对应着不同的正  
则表达式近在豆瓣网站中得分比较高的其中一部  
电影跤吧分在 9.1 先通过进入  
豆瓣网站进入该电影影评取影评首页的 URL与  
影评的下一页进行 URL 比较到这部电影所有影评  
URL 规则用循环来进行读取每页影评的数据。  
借助库文件 BeautifulsoupRequests 以及 Re 来进行数  
据的爬取取的数据有论人论的时间论等  
论具体内容等为评论量比较大以将获取  
现代计算机 2017.12 中  
研究与开发  
到的数据存放到 Excel 中。获取影评的关键代码如下:  
数据。通过 Python 中的正则表达式模块 RE 来进行清  
理工作键代码如下:  
get_url = url #url 即需要获取数据的网页地址  
data=requests.get(get_url, timeout =20, headers = header,cook  
ies=cookies).text  
pattern = re.compile(r[\u4e00-\u9fa5]+)  
filterdata = re.findall(pattern, lnfolist)  
cleaned_comments = ′′.join(filterdata)  
soup = BeautifulSoup(data,lxml)  
comments=soup.find_all("div", class_=comment-item)  
for i in comments:  
并对数据进行停用词去除:  
stopwords=filterdata.read_csv("stopwords.txt",index_col=False,  
quoting=3,sep="\t",names=[stopword], encoding=utf-8)  
words_df=words_df[words_df.segment.isin(stopwords.stopword)]  
words_stat=words_stat.reset_index().sort_values(by=[""],as⁃  
cending=False)  
listinfo=[]  
com=i.find(span,class_=comment-info)  
listinfo.append(com.contents[1].text.strip()) #用户名  
#rating  
以及对词频进行统计。  
rating=i.find(span,class_="rating")  
if rating!=None:  
3
情感分析  
rating=rating.get(title)  
3.1 分类算法改进  
else:  
Term FrequencyTF的是某一个给定的词  
语在该文件中出现的频率。这个数字是对词数(term  
count)的归一化防止它偏向长的文件一个词语  
在长文件里可能会比短文件有更高的词数不管该  
词语重要与否于在某一特定文件里的词语来说,  
它的重要性可表示为:  
rating=无评分′  
#print(rating)  
listinfo.append(rating)  
listinfo.append(i.find(span,class_ ="comment- time").text.  
strip()) #评论时间  
#listinfo.append(i.find(span,class_ ="votes pr5").text.strip  
()) #点赞人数  
ni,j  
tfi,j =  
1)  
n
listinfo.append(i.find(p).text.strip()) # 相应的评论  
#print(i.find(p).text)  
k,j  
k
n
d
在以上式子中, 是该词在文件 中的出现次  
i,j  
j
Infolist.append(listinfo)  
d
分母则是在文件 中所有字词的出现次数之和。  
j
数据获取结果如图 1 所示。  
D
|
|
idfi = log  
2)  
j:t d  
{
}
|
|
i
j
D
j:t d  
|
|
其中, :语料库中的文件总数,  
{
}
|
:包含  
|
i
j
n 0  
t
词语 的文件数即  
的文件数果该词  
语不在语料库中会导致被除数为 0此一般情况  
tf idf = tf × idf  
i,j  
i
1 + j:t d  
下使用  
{
}
后,  
|
|
i,j  
ij  
i
i
j
某一特定文件内的高词语频率及该词语在整  
个文件集合中的低文件频率以产生出高权重的  
TF-IDF。因此TF-IDF 倾向于过滤掉常见的词语保  
留重要的词语。为了能够分类出最有效的情感词引  
PMIPointwise Mutual InformationPMI 用来衡量两  
个事物之间的相关如两个所以对公2)  
进行修改。  
1 获取数据结果  
2
数据处理  
通过图 1 可以看出取到的数据中有很多的语  
气词等等有不少的标点符号这  
些都不利于我们对关键词出现次数的统计以需对  
相应的数据进行清理工作WordStop.txt停用词  
来进行处理停用词进行对比过滤。得到清理后的  
P word,pos  
(
)
PMI word,pos = log  
(
)
3)  
P pos *P word  
)
(
)
(
其中pos 表示文档的情感word 表示某一个词。  
现代计算机 2017.12 中  

全部评论(0)

暂无评论