情感分类学习笔记(1)

文本情感分类(二):深度学习模型 - 科学空间|Scientific Spaces

一、代码理解

cw = lambda x: list(jieba.cut(x)) #定义分词函数

您给出的代码定义了一个使用 jieba 分词库的分词函数。jieba 是一个用于中文分词的 Python 库。该函数 cw 是一个 lambda 函数,它接受一个字符串 x 作为输入,然后使用 jieba.cut(x) 方法对字符串进行分词,并返回一个分词后的列表。

这里是该代码的一个简单解释和如何使用它的例子:

首先,确保您已经安装了 jieba 库。如果没有,您可以使用 pip 来安装它:

bash复制代码

pip install jieba

然后,您可以使用您定义的 cw 函数来对中文文本进行分词:

python复制代码

import jieba
# 定义分词函数
cw = lambda x: list(jieba.cut(x))
# 使用分词函数
text = "我来到北京清华大学"
words = cw(text)
print(words) # 输出: ['我', '来到', '北京', '清华大学']

在上面的例子中,文本 "我来到北京清华大学" 被分词成了 ['我', '来到', '北京', '清华大学']。

lambda 函数在这里是一个简单的函数定义方式,对于简单的函数,使用 lambda 可以使代码更简洁。但是,如果函数变得更加复杂,使用常规的 def 语句来定义函数会更清晰和易于阅读。例如:

 

python复制代码

def cut_words(x):
return list(jieba.cut(x))
# 使用该函数
words = cut_words(text)
print(words) # 输出: ['我', '来到', '北京', '清华大学']

这两种定义方式(使用 lambda 和使用 def)在功能上是等效的。

2.

pn['words'] = pn[0].apply(cw)后pn的内容

3.

comment = comment[comment['rateContent'].notnull()]

DataFrame 是 Pandas 库中用于处理表格型数据的核心数据结构。以下是一些常用的 DataFrame 操作:

  1. 创建 DataFrame

使用 pd.DataFrame() 从字典、列表、Series、其他 DataFrame 或其他数据源创建 DataFrame。

 

python复制代码

import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
  1. 查看 DataFrame

使用 head()tail()info()describe()shape 等方法查看 DataFrame 的内容、结构或统计信息。

 

python复制代码

print(df.head()) # 显示前几行
print(df.info()) # 显示摘要信息,包括列名、数据类型和非空值计数
print(df.describe()) # 显示数值列的统计信息
print(df.shape) # 显示行数和列数
  1. 选择数据

使用列名、行标签、条件表达式、布尔索引等选择数据。

 

python复制代码

print(df['A']) # 选择列 A
print(df.iloc[0]) # 选择第一行(基于整数位置)
print(df.loc[0]) # 选择第一行(基于标签)
print(df[df['A'] > 1]) # 选择 A 列大于 1 的行
  1. 设置和修改数据

使用列名、行标签或条件表达式设置或修改 DataFrame 中的值。

 

python复制代码

df['C'] = df['A'] + df['B'] # 添加新列 C,其值为 A 和 B 列的和
df.at[0, 'A'] = 10 # 修改第一行 A 列的值为 10
df.loc[df['A'] > 1, 'B'] = 0 # 将 A 列大于 1 的行对应的 B 列值设置为 0
  1. 排序数据

使用 sort_values() 方法按列值对 DataFrame 进行排序。

 

python复制代码

df_sorted = df.sort_values(by='A') # 按列 A 的值排序
  1. 数据分组和聚合

使用 groupby() 方法对数据进行分组,并使用聚合函数(如 sum()mean()count() 等)对每个组进行计算。

 

python复制代码

grouped = df.groupby('A').sum() # 按列 A 分组并计算每组的和
  1. 缺失值处理

使用 dropna()fillna()interpolate() 等方法处理缺失值。

 

python复制代码

df_cleaned = df.dropna() # 删除包含缺失值的行
df_filled = df.fillna(0) # 将缺失值替换为 0
  1. 合并和连接

使用 merge()concat()join() 等方法合并或连接多个 DataFrame。

 

python复制代码

df1 = pd.DataFrame({'key': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'], 'value': range(8)})
df2 = pd.DataFrame({'key': ['B', 'B', 'A', 'A', 'B', 'A'], 'value2': range(6)})
merged = pd.merge(df1, df2, on='key') # 基于 key 列合并 df1 和 df2
  1. 数据导出

使用 to_csv()to_excel()to_sql() 等方法将 DataFrame 导出到 CSV 文件、Excel 文件、数据库等。

 

python复制代码

df.to_csv('output.csv', index=False) # 将 DataFrame 导出到 CSV 文件,不包含索引列
  1. 其他常用操作
  • 重命名列:df.rename(columns={'old_name': 'new_name'})
  • 删除列:del df['column_name'] 或 df.drop(columns=['column_name'])
  • 删除行:df.drop(index=labels_to_drop)
  • 转换数据类型:df['column_name'] = df['column_name'].astype(new_type)
  • 排序索引:df.sort_index()
  • 重置索引:df.reset_index()
  • 转换日期和时间数据:pd.to_datetime()
  • 等等...

这句话的意思就是选取comment 里面rateContent列里面非空的数据重新赋值给comment

4.d2v_train = pd.concat([pn['words'], comment['words']], ignore_index = True)

pd.concat 是 Pandas 库中的一个函数,用于沿一条轴将多个 pandas 对象(如 Series、DataFrame)连接在一起。这个函数在处理多个 DataFrame 或 Series 时非常有用,尤其是当你需要将它们合并成一个更大的数据集时。

基本用法

  1. 连接 Series

假设你有两个 Series:

 

python复制代码

import pandas as pd
s1 = pd.Series(['A', 'B', 'C'])
s2 = pd.Series(['D', 'E', 'F'])
result = pd.concat([s1, s2])

这将把 s2 连接到 s1 的后面。

  1. 连接 DataFrame

你可以沿行(axis=0)或列(axis=1)连接 DataFrame。

沿行连接:

 

python复制代码

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
result = pd.concat([df1, df2], ignore_index=True)

沿列连接:

 

python复制代码

df3 = pd.DataFrame({'C': [9, 10], 'D': [11, 12]})
result = pd.concat([df1, df3], axis=1)

参数

  • objs:要连接的 pandas 对象列表或字典。
  • axis:默认为 0,表示沿行连接。如果为 1,则沿列连接。
  • join:默认为 'outer',表示连接操作。对于 DataFrame,这可以是 'inner'(交集)或 'outer'(并集)。
  • ignore_index:默认为 False。如果为 True,则忽略原始索引并生成一个新的整数索引。
  • keys:对于分层索引,可以提供一个列表或数组作为连接键。
  • ...:还有其他参数,但上述是最常用的。

注意事项

  • 当连接 DataFrame 时,确保列名匹配(除非你使用 join='outer' 并希望保留不匹配的列)。
  • 如果 DataFrame 的索引不同,但在连接时你想忽略它们并生成一个新的整数索引,请使用 ignore_index=True
  • 你可以使用字典来连接 DataFrame,其中字典的键将用作新的列级索引。例如:pd.concat({'key1': df1, 'key2': df2}, axis=1)

5.dict = pd.DataFrame(pd.Series(w).value_counts())

步骤分解:

  1. pd.Series(w): 这里假设 w 是一个可迭代的对象(如列表),您正在将其转换为一个 Pandas Series。如果 w 已经是一个 Series,则这一步是多余的。

  2. .value_counts(): 对 Series 对象调用 value_counts() 方法会计算每个唯一值出现的次数,并返回一个 Series,其中索引是唯一值,值是它们出现的次数。

  3. pd.DataFrame(...): 接下来,您尝试将这个 Series 转换为一个 DataFrame。虽然这是技术上可行的,但通常当您只处理一个 Series(即一列数据)时,没有必要将其转换为 DataFrame。

6.dict['id']=list(range(1,len(dict)+1))

7.

pn['sent'] = pn['words'].apply(get_sent) #速度太慢

8.

x = np.array(list(pn['sent']))[::2] #训练集

在您提供的代码 x = np.array(list(pn['sent']))[::2] 中,您正在对 pn['sent'](假定它是一个Pandas Series、列表或其他可迭代对象)执行几个操作。下面是对这些操作的详细解释:

  1. pn['sent']:这部分代码假定 pn 是一个Pandas DataFrame,并且 'sent' 是其中的一个列名。这个列可能包含文本数据、数字或其他任何类型的可迭代数据。
  2. list(pn['sent']):这里,您正在将 pn['sent'] 列转换为Python列表。这通常是因为Pandas Series对象虽然可以像列表一样迭代,但有时为了与其他Python库或功能一起使用,您可能需要将其转换为列表。
  3. np.array(...):使用NumPy库的 array 函数将列表转换为一个NumPy数组。NumPy数组是优化过的数据结构,用于存储大量同类型数据,并提供高效的数值计算功能。
  4. [::2]:这是一个切片操作,用于从NumPy数组中选取元素。具体来说,[::2] 意味着从数组的开始到结束,每隔一个元素取一个。因此,如果原始数组是 [a, b, c, d, e],那么切片后的数组将是 [a, c, e]

最终,x 将是一个NumPy数组,其中包含 pn['sent'] 列中每隔一个元素的值。

注意:这里有一个潜在的陷阱。如果 pn['sent'] 列中的元素是字符串(例如文本数据),那么将它们转换为NumPy数组可能不会提供您期望的功能或性能优势,因为NumPy主要用于数值计算,而不是字符串处理。如果您的目标是处理文本数据,那么使用Pandas的字符串方法或Python的内置字符串功能可能更为合适。

总结:

苏大神的思路是用jieba分词,将词汇分出。然后通过词频统计对分过的词进行数字映射。然后这样每一个句子就变成了一个长短不一的向量,再将向量裁切或增加为规定大小的长度。之后将裁切的向量与对于的二分类的标签送入构造的网络中训练。训练后统计准确度。

网络第一层用embedding层来生成语义向量,向量长度为256维。第二层为LSTM层,第三层为Dropout层,第四层为Dense全连接层,第五层为激活层,激活函数为sigmoid二分类激活函数。

思考能否实现多分类细腻情感?喜怒哀乐?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker部署小试

一 1.1 需求:根据docker部署nginx并且实现https 1.2 前期准备 准备一台装备好的docker-ce虚拟机,容量至少满足4G/2C,同时做好关闭防火墙的操作 systemctl stop firewalld setenforce 0 1.3 实验部署 1.3.1 创建并进入文件夹 1.3.2 编辑run脚本…

如何设计一个自动化测试平台

之前写过很多自动化测试相关的文章,后台有同学留言:希望写一篇自动化测试平台的文章。他的原话是这样:目前市场上开源或者商业的自动化测试平台很多,但试用下来总感觉有些地方不太融洽,想自己落地一个适合自己团队和项…

紧跟生成式AI暴雨发布新时代推理服务器

近日,暴雨发布最新训推一体AI服务器,以大容量内存和灵活的高速互连选项满足各种AI应用场景,最大可能支持扩展插槽,从而大幅提升智能算力性能,以最优的性能和成本为企业的模型训练推理落地应用提供更好的通用算力。 AIG…

物联网实战--平台篇之(三)账户后台数据库

目录 一、账户后台设计 二、账户数据库 三、数据库操作——增 四、数据库操作——改 五、数据库操作——查 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240…

Netty的第一个简单Demo实现

说明 Netty 的一个练习,使用 Netty 连通 服务端 和 客户端,进行基本的通信。 需求 Client 连接服务端后,给服务端发送消息HelloServer Server 客户端连接成功后,打印连接成功读取到客户端的消息后,打印到控制台&…

企业是保留传统的MES还是换新的MES?

在选择上MES系统的时候,企业可以根据自身所处行业不同、当前阶段不同,以及业务需求的差异,对症下药,选择适合自己的解决方案。对于有些企业本来就有MES系统,但是已经过时过旧,就要考虑换新的MES系统了. 保留…

高精度数学计算的瑞士军刀,mpmath库详解与应用示例

写在前言 hello,大家好,我是一点,专注于Python编程,如果你也对感Python感兴趣,欢迎关注交流。 做为一个一只脚已经踏进35岁大关的程序员,对于职场,几乎向上无望,已经没有太多的期待…

DJANGO_PART 1

DJANGO_PART 1 文章目录 DJANGO_PART 11. 安装DJANGO2. 创建项目3. APP概念4. 快速上手5. templates6. 引入其它静态文件7. 模板语法8. 请求与响应 1. 安装DJANGO 安装语句:pip install django 2. 创建项目 django中项目会有一些默认的文件和默认的文件夹 终端创建…

渗透之sql注入实战2(二次注入)

目录 平台地址: 开始: 方法1: 方法二 找提示 这里存在一个文件包含(file)。 爆源码 index.php源码 confirm.php源码: search.php源码: change.php源码: delete.php源码&…

Linux---HTTP协议

HTTP HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是一种应用层协议,主要用于在Web浏览器和Web服务器之间传输数据。 一、认识URL 平时我们俗称的 " 网址 " 其实就是说的 URL http请求样例 看起来是一行一…

英语学习笔记7——Are you a teacher?

Are you a teacher? 你是教师吗? 词汇 Vocabulary name /neɪm/ n. 名字,名声 英文名字构成: 名 字 姓      given name family name  也叫做:first name last name      例:Yanyan Gao 例句&#xff1…

Baidu Comate智能编码助手-程序员的神助攻

🎉Baidu Comate:程序员编程最牛的辅助利器,没有之一 🎈AI编程助力开发者提质增效 智能代码补全:AI编程助手可以根据上下文和用户的编码习惯,智能地提供代码补全和建议,帮助程序员更快速地编写代码&#xf…

Service 和 Ingress

文章目录 Service 和 IngressServiceEndpointservice 的定义代理集群外部服务反向代理外部域名Service 常用类型 IngressIngress-nginx安装使用 Service 和 Ingress service 和 ingress 是kubernetes 中用来转发网络请求的两个服务,两个服务用处不同,se…

OpenGL 入门(四)—— 贴纸与美颜滤镜

本篇我们来介绍贴纸效果与美颜滤镜的实现。 1、贴纸效果 贴纸实际上是一个图片,用 Bitmap 加载图片后用 OpenGL 渲染到指定的位置上。我们举例添加一个耳朵贴纸: 1.1 获取人脸位置 上一篇我们在讲大眼滤镜时,在 Native 层除了获取到人脸 5…

JAVA学习笔记(第三周)

文章目录 继承概述使用场景继承的特点子类继承的内容成员变量访问特点成员方法访问特点方法的重写构造方法this super 多态多态的表现形式多态的前提成员变量和方法调用instanceof优势弊端 包包名的规则全类名final常量 权限修饰符代码块 继承 概述 继承就是子类继承父类的特征…

PHP ASCII码的字符串用mb_convert_encoding 转utf-8之后不生效

检测数据类型是ascii,转码之后再检测还是utf-8没生效 private function toUTF8($str){$encode mb_detect_encoding($str, array("ASCII",UTF-8,"GB2312","GBK",BIG5,LATIN1));if ($encode ! UTF-8) {$str1 mb_convert_encoding($str, UTF-8, …

(2024,LSTM,Transformer,指数门控,归一化器状态,多头内存混合)xLSTM:扩展的 LSTM

xLSTM: Extended Long Short-Term Memory 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. 扩展的 LSTM 2.1 LSTM 回顾 2.2 sLSTM 2.3 mLSTM 2.4 xLSTM 架构 2…

python:画饼图

我现在因工作需要在写一篇中文文章,领导要我用python处理数据和画图,那我也刚好学习一下python画图。 import matplotlib.pyplot as plt # 饼图数据 labels [A, B, C, D] sizes [15, 30, 45, 10] # 每个部分的大小 # 绘制饼图 plt.figure(figsize(6,…

读书笔记——《高质量C++/C编程指南》(2)

目录 前言 命名规则 共性规则 简单的Windows应用程序命名规则 表达式和基本语句 运算符优先级 复合表达式 if语句 布尔变量与零值比较 整型变量与零值比较 浮点变量与零值比较 指针变量与零值比较 对if 语句的补充说明 循环语句的效率 for 语句的循环控制变量 s…

数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面

项目目录的管理 前言 在上几篇的文章里面我们完成了基本环境的搭建,整理了项目数据库表结构并且成功的手动的加载了Qt的mysql数据库驱动,现在就要开始完成项目准备工作的最后一步:构建项目目录,一个好的项目离不开一个好的代码组织结构,所以在开始动手写我们这个项…