【自然语言处理】 - 作业3: 文本情感分析

news2025/1/17 22:58:00

课程链接: 清华大学驭风计划

代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com)


驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算机语言(刘知远教授) 以及数据结构与算法(邓俊辉教授)。本人是综合成绩第一名,除了数据结构与算法其他单科均为第一名。代码和报告均为本人自己实现,由于篇幅限制,只展示任务布置以及关键代码,如果需要报告或者代码可以私聊博主



自然语言处理部分授课老师为刘知远教授,主要通过从统计方法入门,embedding,预训练模型,知识图谱,关系抽取,文本生成以及信息检索等不同下游任务入门自然语言处理


有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~



任务介绍

情感分析旨在挖掘文本中的主观信息,它是自然语言处理中的经典任务。在本次任务中,我们将在影评文本数据集(Rotten Tomato)上进行情感分析,通过实现课堂讲授的模型方法,深刻体会自然语言处理技术在生活中的应用。

同学们需要实现自己的情感分析器,包括特征提取器(可以选择词袋模型、n-gram模型或词向量模型)、简单的线性分类器以及梯度下降函数。随后在数据集上进行训练和验证。我们提供了代码框架,同学们只需补全 model.py中的两个函数。

数据说明

我们使用来自Rotten Tomato的影评文本数据。其中训练集 data_rt.train和测试集 data_rt.test均包含了3554条影评,每条影评包含了文本和情感标签。示例如下:

+1 visually , 'santa clause 2' is wondrously creative .

其中,+1 表示这条影评蕴涵了正面感情,后面是影评的具体内容。

数据特征提取

TODO:补全 featureExtractor函数

在这个步骤中,同学们需要读取给定的训练和测试数据集,并提取出文本中的特征,输出特征向量。

同学们可以选择选择词袋模型、n-gram模型或词向量模型中的一种,也可以对比三者的表现有何差异。

训练分类器

TODO:补全 learnPredictor函数

我们提供的训练数据集中,每句话的标签在文本之前,其中 +1表示这句话蕴涵了正面感情,-1表示这句话蕴涵了负面感情。因此情感分析问题就成为一个分类问题。

我们采用最小化hinge loss的方法训练分类器,假设我们把每条影评文本 x x x映射为对应的特征向量 ϕ ( x ) \phi(x) ϕ(x),hinge loss的定义为

L ( x , y ; w ) = max ⁡ ( 0 , 1 − w ⋅ ϕ ( x ) y ) L(x,y; \mathbf{w})=\max(0,1-\mathbf{w}\cdot\phi(x)y) L(x,y;w)=max(0,1wϕ(x)y)

同学们需要实现一个简单的线性分类器,并推导出相应的梯度下降函数。

实验与结果分析

在训练集上完成训练后,同学们需要在测试集上测试分类器性能。本小节要求同学们画出训练集上的损失函数下降曲线和测试集的最终结果,并对结果进行分析。

评分要求

同学们需要提交源代码和实验报告。实验报告中应包含两部分内容:

  • 对hinge loss反向传播的理论推导,请写出参数的更新公式。
  • 对实验结果的分析,请描述采用的模型结构、模型在训练集上的损失函数下降曲线和测试集的最终结果,并对结果进行分析。分析可以从模型的泛化能力、参数对模型性能的影响以及不同特征的影响等方面进行。

报告

核心代码

填充learnPredict函数

在这里插入图片描述

利用词袋模型提取特征
在这里插入图片描述

利用N-gram提取特征

在这里插入图片描述

结果

整个情感分析利用了词袋模型 , tfidf , N-gram模型 , word2vec模型 以及 doc2vec模型做对比,结果如下。

在这里插入图片描述

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

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

相关文章

C++的继承

继承 1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6. 继承与静态成员7.复杂的菱形继承及菱形虚拟继承 1.继承的概念及…

舒适交友 - 什么样的婚姻最舒服 稳态婚姻

人人都是心理学家,mbti等_个人渣记录仅为自己搜索用的博客-CSDN博客 人生两大目标: 生产力提升 让身边的人快乐. 激动 兴奋 不一定 舒适 开心 幸福 安全感 平静 宁静 祥和 婚姻 稳态 041 探秘“情绪”——如何确定只有六种基本情绪? - 知乎 ( 6种原始情绪&am…

chatgpt赋能Python-python_dilate

Python中的dilate操作:了解该操作及其应用 在计算机视觉领域,dilate操作是一种常用的图像处理技术。在Python中,我们可以使用OpenCV库来实现dilate操作。本文将介绍dilate操作的基本概念,讨论其应用及如何使用Python进行实现。 …

C++爱好者的自我修养(13.1):一维数组——简介,声明,初始化(赋值)

文章目录 1.什么是数组?2.数组的声明2.1格式2.2特别注意:有效下标值的重要性 3.数组的初始化(赋值)3.1格式3.2 C11新增的初始化方法规则功能3.2.1 等号的省略3.2.2 当大括号内无东西3.2.3 禁止缩窄转换 1.什么是数组? …

Kafka实时数据同步

目录 1 概述 2 捕获Oracle数据到Kafka 2.1 数据捕获设置 2.2 数据发布任务设置 2.3 捕获到发布数据流映射 2.4 查看任务执行日志 3 订阅Kafka数据到ClickHouse 3.1 数据订阅设置 3.2 数据加载设置 3.3 订阅到加载数据流映射 3.4 查看任务执行日志 4 校验数据一致性 …

GEE:GEDI数据提取值到矢量区域和点

作者:CSDN @ _养乐多_ 本文将介绍GEDI数据集从GEE上下载到本地,并将每一个激光点的值提取为一个矢量区域,并提取值到矢量区域的方法。 文章目录 一、GEDI数据下载二、GEDI数据栅格矢量化三、提取值到区域四、提取栅格值到点五、空间插值一、GEDI数据下载 GEDI数据下载链接:…

80个Python练手小项目;AI开发者的总结与反思;B站免费Stable Diffusion视频教程;五问ChatGPT+医学影像 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『美团大模型已秘密研发数月』在仅剩一年的窗口期里努力奔跑 5月18日下午,美团内部召开大模型技术分享会,美团…

【深度学习】- 作业5: Didi交通场景-车辆预测

课程链接: 清华大学驭风计划 代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算…

ONVIF协议了解

第一部分:ONVIF理论基础 一. 为什么要用ONVIF协议: IPC厂商主流的遵循的是RTSP协议进行推流,那么RTSP最重要的就是RTSP的URL地址。但是各个厂商的URL地址格式都不一样,所以就诞生了一个标注协议—ONVIF。ONVIF协议的出现&#x…

开源赋能 普惠未来|QUICKPOOL诚邀您参与2023开放原子全球开源峰会

QUICKPOOL算力调度系统的诞生和发展,为广大的算力领域从业者和技术开发者,提供了一条中国技术路线,并与IBM LSF、SLURM、PBS、SGE等产品,共同助力全球算力发展。QUICKPOOL算力调度系统成熟、稳定,具备“超算&智算”…

MATLAB 搜索某一点的K邻近点(12)

MATLAB 搜索某一点的K邻近点(12) 前言一、算法介绍1.1 :无序点云的K邻近点搜索1.2 :有序点云的K邻近点搜索二、具体实现示例2.1 算法一 (含详细注释)2.2 算法二 (含详细注释)前言 在点云处理中,最基本的算法之一就是搜索某一点的近邻点(1个最近或多个邻近),这在重…

MySQL数据库学习笔记(八)实验课五之数据库系统设计

一上来就实验课五了,实验课四呢?实验课四的内容是添加索引,差不多就是那样。 这次实验课的内容感觉就有点硬核了,数据库系统设计。 重点: 记录下我在实验里面遇到的一些问题 1,E-R图绘制 我是用drawio绘…

Rancher1.6高可用架构设计与实现思路

文章目录 [toc] 1.架构图2.建立数据导入脚本2.1 单机运行命令2.2 导出单机容器中的数据库文件2.3 dump文件 3.启动命令4.总结 1.架构图 架构说明:本文重点是rancher1.6.17的多实例共用一个数据库持久化数据,对于前置的负载均衡和mysql5.7的高可用不做过多…

linux 框架学习法

学习视频:【北京迅为】再谈Linux学习方法-框架学习法 学习UBOOT 框架学习法 linux基础框架 文件系统框架 bootloader是上电后执行的第一个程序bootloader会引导linux内核,会执行zimagelinux内核会挂载文件系统,文件系统可大可小,…

Go语言gin框架项目:按模板导出excel并在网页端下载,并将此接口完成swagger的配置

1.需求 甲方的需求是以这种格式导出一个开工通知单 前端页面是这个样子: 前端勾选一部分部室,后端根据勾选的这些部室名称进行查询,将查询到的部室主任名字填充到表格对应的位置中,另外将前端传过来的信息都填充到表格的指定位置…

4.1 一级存储结构

本节介绍 GPU 上的一级缓存结构,重点介绍统一的 L1 数据缓存和暂存器“共享内存”,以及它们如何与计算核心交互。 我们还简要讨论了 L1 纹理缓存的典型微架构。 我们包括对纹理缓存的讨论,虽然它在 GPU 计算应用程序中的使用有限,…

前端GC垃圾回收机制

js中的管理是自动的,对象不再被引用时就是垃圾,不能从根上访问时也是垃圾。 能够访问到的对象就是可达对象(引用,作用域链),可达的标准就是从根触发是否能够被找到,根可以理解为是全局变量。 …

【机器学习】 - 作业7: 某闯关类手游用户流失预测

课程链接: 清华大学驭风计划 代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算…

并发和线程

并行和并发 1.并行跟并发有什么区别? 从操作系统的角度来看,线程是CPU分配的最小单位。 并行就是同一时刻,两个线程都在执行。这就要求有两个CPU去分别执行两个线程。 并发就是同一时刻,只有一个执行,但是一个时间段…

详解HTTPS加密过程

目录 前言 HTTPS是什么 HTTPS的工作过程 引入对称加密 引入非对称加密 引入证书 总结 前言 对于HTTP上篇文章已经做了详细的解释了。众所周知,HTTPS要比HTTP要安全,但是为什么HTTPS要比HTTP安全呢? 这篇文章主要研究HTTPS的加密机制…