情感分析-机器学习

Posted TIME0101

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了情感分析-机器学习相关的知识,希望对你有一定的参考价值。

情感分析-机器学习

指路链接:胡言欢


# 导入库
import pandas as pd
# 读入原始数据集
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)

import jieba

安装“jieba”教程:anaconda安装jieba

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

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

wordmtx = countvec.fit_transform(df0.cleantxt)
wordmtx

# 按照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]

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

clf=SVC(kernel = 'rbf', verbose = True)
clf.fit(x_train, y_train) # 内存占用可能较高
clf.score(x_train, y_train)

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

print(classification_report(y_test, clf.predict(x_test)))

clf.predict(countvec.transform([df0.cleantxt[0]]))[0]
# 模型预测
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)

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


仅限学习使用,侵权删

以上是关于情感分析-机器学习的主要内容,如果未能解决你的问题,请参考以下文章

情感分析-机器学习

基于机器学习的情感分析是啥意思

使用机器学习的情感分析分类器

文本情感分析的基础在于自然语言处理情感词典机器学习方法等内容。以下是我总结的一些资源。

Python 基于机器学习的微博情感分析与研究

情感分析-R与spark机器学习库测试分类比较