人工智能学习6(贝叶斯实现简单的评论情感分析)

编译工具PyCharm

文章目录

      • 编译工具PyCharm
  • 文本分析与表示
    • 实现方式:
    • 文本表示方法
    • 文本相似度计算
    • LDA主题模型
  • 朴素贝叶斯算法
    • 应用:评论情感分析,工具评论分析是好评还是差评
      • 获取数据
      • 加载停用词
      • 内容标准化(将每一句话划分成一个个的词)
      • 统计词的个数
      • 模型训练及预测

文本分析与表示

文本分析基于深度学习和自然语言处理的原则工作。

实现方式:

正则表达式REGEX:指作为需提取内容的前提条件的特定格式化符号数组
条件随机场CRFs:之通过评估特定模式或短语提取文本的机器学习方法,更加精细和灵活。

文本表示方法

one-hot是指在一个向量中,只有一个位置上的值是1,其他位置都是0.缺点:无法表现词与词之间的语义关系,当数据量大的时候,维数也会变得很大。
Bag of Words(词袋表示):也成为Count Vectors,每个文档的字词可以使用其出现次数来进行表示。缺点:会忽略文本的表达顺序,如我爱你和你爱我,表示都一样。
N-gram:与Count Vectors类似,不过加入了相邻单词组合成新的单词,并且进行计数。
TF-IDF关键词提取:两部分组成,词频TF逆文档概率IDF
TF=某个词在文中出现的次数/文本中一共包含多少个词
IDF=log(语料库的文档总数/包含该词的文档数)

文本相似度计算

余弦相似度

LDA主题模型

LDA主题模型不关心词的顺序,用bag of words词袋表示。

朴素贝叶斯算法

在这里插入图片描述
朴素贝叶斯假定特征与特征相互独立
在这里插入图片描述
但是如果词频列表里有很多出现的次数为0,是计算结果可能为0;

解决方法:拉普拉斯平滑系数
在这里插入图片描述
例如:特征词个数为6
在这里插入图片描述

应用:评论情感分析,工具评论分析是好评还是差评

data.csv数据如下

内容,评价
从编程小白的角度看,入门极佳,好评
很好的入门书,简洁全面,适合小白,好评
讲解全面,许多小细节都有顾及,三个小项目受益匪浅,好评
前半部分讲概念深入浅出,要言不烦,很赞,好评
看了一遍还是不会写,有个概念而已,差评
中规中矩的教科书,零基础的看了依旧看不懂,差评
内容太浅显,个人认为不适合有其它语言编程基础的人,差评
破书一本,差评
适合完完全全的小白读,有其他语言经验的可以去看别的书,差评
基磁知识写的挺好的!,好评
太基础,差评
略_嗦。。适合完全没有编程经验的小白,差评
真的真的不建议买,差评

stopwords.csv上网找一个中文禁用词表即可,我用的是这一篇博客提供的。
https://blog.csdn.net/dilifish/article/details/117885706

获取数据

import pandas as pd# 获取数据
data = pd.read_csv("./data/data.csv")
# 数据基本处理
content = data['内容']
# print(content)
# 将评价中的好差评转换为数字
# 添加一列为评价编号,如果是好评评价编号为1,差评为0
data.loc[data.loc[:,'评价']=="好评","评价编号"]=1
data.loc[data.loc[:,'评价']=="差评","评价编号"]=0
print(data)

在这里插入图片描述

加载停用词

# 加载停用词
stopwords = []
with open("./data/stopwords.csv","r",encoding="utf-8") as f:lines=f.readlines()print(lines)# 有些数据并不是按照一行一行排序的,而是很乱,一个数据里面含\n进行换行# 通过下面的方法可以将其变成一行一行排列的for tmp in lines:line = tmp.strip()print(line)stopwords.append(line)
# 去重
stopwords = list(set(stopwords))
print(stopwords)

在这里插入图片描述
去重后的数据
在这里插入图片描述

内容标准化(将每一句话划分成一个个的词)

# 内容标准化
# 将每一句话划分成词
comment_list=[]
for tmp in content:print(tmp)# 对文本进行切割seg_list=jieba.cut(tmp,cut_all=False)print(seg_list)     # 这个只能打印出对象# 拼接字符串seg_str = ','.join(seg_list)print(seg_str)comment_list.append(seg_str)
print(comment_list)

在这里插入图片描述
comment_list打印出来
在这里插入图片描述

统计词的个数

# 统计词的个数
# from sklearn.feature_extraction.text import CountVectorizer
con = CountVectorizer(stop_words=stopwords)
X = con.fit_transform(comment_list)
name = con.get_feature_names_out()
print(X.toarray())
print(name)

打印出来的矩阵
在这里插入图片描述
矩阵分别对应的字词
在这里插入图片描述

模型训练及预测

# 准备训练集和测试集
# 训练集
x_train = X.toarray()[:10,:]
y_train = data["评价"][:10]
# 测试集
x_test = X.toarray()[10:,:]
y_test = data["评价"][10:]
# 模型训练
# from sklearn.naive_bayes import MultinomialNB
# alpha=1即拉普拉斯平滑系数为1
mb = MultinomialNB(alpha=1)
mb.fit(x_train,y_train)
y_pre = mb.predict(x_test)
print("预测值: ",y_pre)
print("真实值: ",y_test)
# 模型评估
print(mb.score(x_test, y_test))
```![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/54bf7af8e9af44c7b0d22fed86cd0019.png)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四通道轨-轨运算芯片 D8054,外围应用简便,低功耗2.3mA (典型值)运放供电电流

D8054是一款四通道轨-轨运算放大器,外围应用简便,价格低廉。封装形式为SOP14,TSSOP14, SOP16, TSSOP16。 主要特点: ● 轨-轨输出,输出失调2mV (典型值) ● 高速250MHz,-3dB带…

HNU-电路与电子学-2018期末A卷(含标准解析)

【写在前面】 电路与电子学好像是从2020级开设的课程,故实际上目前只有2020与2021两个年级考过期末考试。 这门课程主要由所谓的“数电”与“模电”组成。而且先学的“模电”后学的“”数电,故期中考试主要以“模电”为主,期末考试主要以“数…

“上云”还是“下云”?探云计算的下一站未来!

引言 10 月 27 日,X(原Twitter)工程技术发布帖子称,在过去的一年里,技术团队优化了 X 的云服务使用方式,着手将更多工作负载迁往本地基础设施。这一转变使 X 每月的云成本降低了 60%。所有媒体、Blob 存储均…

[全志]更新bootlogo分区数据从而更新bootlogo

一、需求 在不进行镜像烧录的情况下,通过启动项或脚本将已存在于主板的bootlogo文件更新到bootlogo分区中,从而实现bootlogo的更新 二、操作 1、在主板上查找bootlogo文件路径 find -name bootlogo* 实机效果: 2、进入文件夹路径 cd ./d…

视频剪辑方法:AI智剪高效稳定,视频批量处理有技巧

随着社交媒体的兴起和视频制作工具的普及,视频剪辑已经成为一项重要的工作。然而对于许多非专业创作者来说,视频剪辑可能是一项困难的任务。所幸AI智剪提供了一种高效稳定的视频剪辑方法,使得视频批量处理变得更加简单。使用AI智剪可以大大节…

派对的最大快乐值

与其明天开始,不如现在行动! 文章目录 派对的最大快乐值 💎总结 派对的最大快乐值 题目 员工信息的定义如下: 公司的每个员工都符合 Employee 类的描述。整个公司的人员结构可以看作是一棵标准的、没有环的多叉树。树的头节点是公…

蓝桥杯物联网竞赛_STM32L071_10_温度传感器扩展模块

原理图: 温度传感器原理图: 其中芯片可以通过SCL和SDA引脚通过I2C通信向温度传感器指定地址获取温度的模拟量 再利用公式将模拟量转换成相应温度即可 实验板接口原理图: 模拟量转相应温度公式: CubMx配置: Keil配置&…

Ribbon 负载均衡

1、负载均衡整体流程 2、负载均衡流程逐级跟踪运行 (1) LoadBlanced 注解可以使LoadBalancerInterceptor拦截到; (2)LoadBalancerInterceptor 实现了ClientHttpRequestInterceptor接口; (3)ClientHttpRequestInterceptor接口释义如下; (4)int…

金和OA saveAsOtherFormatServlet接口任意文件上传漏洞复现 [附POC]

文章目录 金和OA saveAsOtherFormatServlet接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 金和OA saveAsOtherFormatServlet接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责…

TIA博途中快速修改变量值的方法和技巧

TIA博途中快速修改变量值的方法和技巧 如下图所示,正常情况下选中该变量,然后右击选择“修改”—然后选择修改为0或1, 快速调试技巧: 如下图所示,鼠标选中该变量上方的“FALSE”,直接双击,系统会提示是否进行切换该变量的值, 点击“是”即可切换变量的值, 如下图所示,…

第三期丨酷雷曼无人机技能培训

第3期无人机技能提升培训 2023年9月15日,第三期酷雷曼合作商无人机技能提升培训圆满举办,数十位来自各地的合作商齐聚北京,在酷雷曼总部的帮助下学习无人机理论及实操知识,并成功取得权威认可的无人机飞行执照。本届培训会的新晋…

发明无止境:简单的螺丝钉也有复杂悠久的专利故事?

今天跟大家分享一个螺丝钉专利的故事。 我们从人类开始就有了连接和固定的需求。 最早期的时候,人类就想到了连接和固定最简单的办法就是用钉子把两个物体连接在一起,最早的时候用的是木钉或者楔子。用木钉和楔子的方式简单粗暴,成本也非常的…

【Linux】more命令使用

more 是linux的一个命令,类似cat命令,会以一页一页的显示,方便使用者逐页阅读。 More是一个过滤器,用于一次一屏地对文本进行分页。这个版本特别原始。用户应该意识到,less(1)提供了更多的模拟…

修改TV app卸载页面选中样式(GuidedStepFragment)

1.源码位置 packages\apps\PackageInstaller2.解决方案 1.继承Theme.Leanback.GuidedStep <style name"Theme.Settings.GuidedStep" parent"style/Theme.Leanback.GuidedStep"><item name"guidedStepBackground">color/settings_…

百度APP iOS端包体积50M优化实践(七)编译器优化

一. 前言 百度APP iOS端包体积优化系列文章的前六篇重点介绍了包体积优化整体方案、图片优化、资源优化、代码优化、无用类优化、HEIC图片优化实践和无用方法清理&#xff0c;图片优化是从无用图片、Asset Catalog和HEIC格式三个角度做深度优化&#xff1b;资源优化包括大资源…

字符串和内存函数(1)

strcat函数 如上图&#xff0c;strcat函数就是将一个字符串拼接在另一个字符串后面&#xff0c;第一个参数是目标字符串&#xff0c;第二个参数是源字符串&#xff0c;strcat的返回值是目标字符串的起始地址。 注意&#xff1a;1.目标空间必须足够大&#xff0c;还需要可以修改…

λ表达式、智能指针

lambda 表达式 1、C11标准支持&#xff0c;实现匿名函数的功能&#xff1b; 2、通常用于实现轻量级的函数 格式 mutable->返回值{函数体}; // 返回值即使是 void 也必须得写 [] 内&#xff0c;可以填外部数据&#xff1b; () 内&#xff0c;可以带有参数列表。 lambda 表达…

机器学习实验二:决策树模型

系列文章目录 机器学习实验一&#xff1a;线性回归机器学习实验二&#xff1a;决策树模型机器学习实验三&#xff1a;支持向量机模型机器学习实验四&#xff1a;贝叶斯分类器机器学习实验五&#xff1a;集成学习机器学习实验六&#xff1a;聚类 文章目录 系列文章目录一、实验…

linux管道_tee_xargs

5.2 管道 管道命令可以将多条命令组合起来&#xff0c;一次性完成复杂的处理任务。 语法&#xff1a; command1 | command2 | command3...例&#xff1a; 查看passwd中最后3行内容。 cat /etc/passwd | tail -3 查看passwd中包含root所在行的第一条信息。 cat /etc/p…

FPGA串口接收解帧、并逐帧发送有效数据——1

FPGA串口接收解帧、并逐帧发送有效数据 工程实现的功能&#xff1a;FPGA串口接收到串口调试助手发来的数据&#xff0c;将其数据解帧。判断到正确的帧头和帧尾之后&#xff0c;将有效数据存入rx_data中&#xff1b;另一方面发送端将有效数据逐帧发送出去。 参考&#xff1a;正…