当前位置:   article > 正文

人工智能 - 朴素贝叶斯、案例:文本情感分析_评论文本分析 朴素贝叶斯

评论文本分析 朴素贝叶斯

朴素贝叶斯:用概率去预测

1、朴素贝叶斯介绍

在这里插入图片描述
朴素:指的是,特征之间相互独立

拉普拉斯平滑系数,每个种类都加k,避免条件概率出现0
区分情书与作业的例子,用关键词:
在这里插入图片描述
在这里插入图片描述
是情书的概率更高,所以估计为情书

2、案例:商品评论情感分析

在这里插入图片描述

import pandas as pd
import numpy as np
import jieba
import matplotlib.pyplot as plt
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayee import MultinomialNB

#获取数据
data = pd.read_csv("./书籍评价.csv",encoding='gbk')
data

#数据基本处理
#2.1取出内容列,用于后面分析
content = data['内容']
content
#把评价列中好评差评转成数字
data.loc[:,'评价']
data.loc[data.loc[:,'评价']=='好评','评论编号']=1
data.loc[data.loc[:,'评价']=='差评','评论编号']=0
#2.3选择停用词
stopwords=[]
with open('./stopwords.txt','r',encoding='utf-8') as f:
	lines = f.readlines()
	#print(lines)
	for tmp in lines:
		line = tmp.strip()
		stopwords.append(line)

stopwords = list(set(stopwords))
stopwords

#2.4 把‘内容’处理,转化成标准格式
comment_list = []
for tmp in content:
	print(tmp)
	seg_list = jieba.cut(tmp,cut_all=False)
	seg_str = ','.join(seg_list)
	comment_list.append(seg_str)

comment_list
#统计词个数
con = CountVetorizer(stop_words = stopwords)
X = con,fit_transform(comment_list)
X.toarray()
con.get_feature_names()

#2.5分割训练集和测试集
x_train = x.toarray()[:10,:]
y_train = data['评价'][:10]
x_train
y_train
x_test = x.toarray()[10:,:]
y_test = data['评价'][10:]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
#3 模型训练
mb = MultinomialNB(alpha=1)
mb.fit(x_train,y_train)
y_pre = mb.predict(x_test)
print('预测值:',y_pre)
print('真实值:',y_pre)
#4.模型评估
mb.score(x_test,y_test)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3、朴素贝叶斯总结

3.1朴素贝叶斯优缺点

优:有稳定的分类效率;对缺失数据不敏感;常用于文本分类
缺:某些时候会由于假设的先验模型的原因导致预测效果不佳
在这里插入图片描述
朴素贝叶斯:基于贝叶斯定理和特征条件独立假设的分类方法

朴素贝叶斯朴素在哪里?
当Y确定时,X的各个特征分量取值之间相互独立

为什么引入条件独立假设?
为了避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题

在估计条件概率时出现概率为0的情况怎么办?
引入拉普拉斯平滑系数

为什么属性独立性假设在实际情况中很难成立,但朴素贝叶斯仍然能取得较好效果?
在使用分类器之前,进行了特征选择,这一过程排除特征之间的共线性,选择相对较为独立的特征

朴素贝叶斯与逻辑回归的区别?
朴素贝叶斯是生成模型,而LR是判别模型
朴素贝叶斯是基于很强的条件独立假设,而LR对此没有要求
朴素贝叶斯适用于数据集少的情景,而LR适用于大规模数据集

生成模型VS判别模型?
判别式模型:要确定一个羊是山羊还是绵羊,从历史数据中学习到模型,通过提取这只羊的特征来预测这只羊是山羊的概率,以及是绵羊的概率。(一个模型)
生成式模型:根据山羊的特征学习出一个山羊模型,根据绵羊模型学习出一个绵羊模型。然后从这只羊中提取特征,放在山羊模型中看概率是多少,放在绵羊中看概率是多少,哪个大取哪个。(两个模型)

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

闽ICP备14008679号