当前位置:   article > 正文

文本情感分析-机器学习实验三_datacastle中的文本情感分析

datacastle中的文本情感分析

情感分析-机器学习实验三

实验目的:
通过实验,掌握文本分析的整体流程,了解文本分类、情感分析、自动摘要等内容
通过给定的文本内容,完成分词、文本向量化、文本分类、情感分析等相关实验
实验可从文本分类、情感分析、自动摘要中任选一个,进行完整实验

1、导入pandas库

import pandas as pd
  • 1

在这里插入图片描述
2、读入“购物评论”的数据集,并打印出前10行。

# 读入原始数据集
dfpos = pd.read_excel("购物评论.xlsx", sheet_name = "正向", header=None)
dfpos['y'] = 1
dfneg = pd.read_excel("购物评论.xlsx", sheet_name = "负向", header=None)
dfneg['y'] = 0
df0 = dfpos.append(dfneg, ignore_index = True)
df0.head(10)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
3、导入“jieba”库
Jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。

import jieba
  • 1

安装“jieba”教程:anaconda安装jieba
4、进行分词和预处理。
查看分词结果:

# 分词和预处理
cuttxt = lambda x: " ".join(jieba.lcut(x)) # 这里不做任何清理工作,以保留情感词
df0["cleantxt"] = df0[0].apply(cuttxt) 
df0.head()
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
5、忽略少于5个文档中出现的术语

from sklearn.feature_extraction.text import CountVectorizer
countvec = CountVectorizer(min_df = 5) # 出现5次以上的才纳入

wordmtx = countvec.fit_transform(df0.cleantxt)
wordmtx
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
6按照7:3的比例生成训练集和测试集

# 按照7:3的比例生成训练集和测试集
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(
    wordmtx, df0.y, test_size=0.3) # 这里可以直接使用稀疏矩阵格式
x_train[0]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
7使用SVM进行建模

# 使用SVM进行建模
from sklearn.svm import SVC

clf=SVC(kernel = 'rbf', verbose = True)
clf.fit(x_train, y_train) # 内存占用可能较高
clf.score(x_train, y_train)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
8对模型效果进行评估

# 对模型效果进行评估
from sklearn.metrics import classification_report

print(classification_report(y_test, clf.predict(x_test)))
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

clf.predict(countvec.transform([df0.cleantxt[0]]))[0]
  • 1

10使用模型对实际文本进行处理,查看预测效果

# 模型预测
import jieba

def m_pred(string, countvec, model) : 
    words = " ".join(jieba.lcut(string))
    words_vecs = countvec.transform([words]) # 数据需要转换为可迭代格式
     
    result = model.predict(words_vecs)
    
    if int(result[0]) == 1:
        print(string, ":正向")
    else:
        print(string, ":负向")
        

comment = "外观美观,速度也不错。上面一排触摸键挺实用。应该对得起这个价格。当然再降点大家肯定也不反对。风扇噪音也不大。"
m_pred(comment, countvec, clf)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

comment = "作为女儿6.1的礼物。虽然晚到了几天。等拿到的时候,女儿爱不释手,上洗手间也看,告知不好。竟以学习毛主席来反驳我。我反对了几句,还说我对主席不敬。晕。上周末,告诉我她把火鞋和风鞋拿到学校,好多同学羡慕她。呵呵,我也看了其中的人鸦,只可惜没有看完就在老公的催促下睡了。说了这么多,归纳为一句:这套书买的值。"
m_pred(comment, countvec, clf)  
  • 1
  • 2

在这里插入图片描述
总结:在这次试验中,我基本掌握了文本分析的整体流程,了解了情感分析的内容,并进行了购物评论的情感分析。
结合课本和实验我了解到,情感分析就是对文本内容所表达出来的主观情感额色彩进行挖掘和分析的过程。这次实验也用到了Jieba库,“jieba”的分词原理是利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,从而形成分词结果。

关注公众号:Time木
回复:文本情感分析
可获得相关代码,数据,文档
更多大学课业实验实训可关注公众号回复相关关键词
学艺不精,若有错误还望指点

)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/550906
推荐阅读
相关标签
  

闽ICP备14008679号