首页 > 其他分享 >一起学Hugging Face Transformers(15)- 使用Transformers 进行情感分析

一起学Hugging Face Transformers(15)- 使用Transformers 进行情感分析

时间:2024-07-13 12:30:18浏览次数:18  
标签:15 sentiment 模型 Hugging 情感 train Transformers 加载

文章目录


前言

情感分析(Sentiment Analysis)是自然语言处理(NLP)中的一个重要任务,旨在确定文本的情感倾向,如积极、消极或中性。Hugging Face 的 Transformers 库提供了强大的工具,可以轻松实现情感分析。在这篇文章中,我们将介绍如何使用 Transformers 库进行情感分析。

一、环境准备

在开始之前,我们需要安装必要的库:

pip install transformers
pip install torch  # 或者 tensorflow,根据你选择的深度学习框架
pip install pandas  # 用于处理数据

二、加载预训练模型

我们可以使用 Hugging Face 提供的预训练情感分析模型。这里我们将使用 distilbert-base-uncased-finetuned-sst-2-english,这是一个基于 DistilBERT 的模型,已经在情感分析数据集 SST-2 上进行了微调。

from transformers import pipeline

# 加载预训练的情感分析模型
sentiment_analysis = pipeline("sentiment-analysis")

三、示例:情感分析

加载模型后,我们可以对一些示例文本进行情感分析。

texts = [
    "I love this product! It's amazing.",
    "I am very disappointed with the service.",
    "The movie was just okay, nothing special.",
]

results = sentiment_analysis(texts)

for text, result in zip(texts, results):
    print(f"Text: {text}\nSentiment: {result['label']}, Score: {result['score']:.4f}\n")

输出结果如下:

Text: I love this product! It's amazing.
Sentiment: POSITIVE, Score: 0.9998

Text: I am very disappointed with the service.
Sentiment: NEGATIVE, Score: 0.9991

Text: The movie was just okay, nothing special.
Sentiment: NEUTRAL, Score: 0.7890

四、处理数据集

在实际应用中,我们通常需要对大量文本数据进行情感分析。以下是如何使用 Pandas 处理数据集的示例。

假设我们有一个包含评论的数据集(CSV 文件),每行包含一个评论文本:

import pandas as pd

# 加载数据集
df = pd.read_csv("reviews.csv")

# 显示前几行
print(df.head())

# 对所有评论进行情感分析
df["sentiment"] = df["review"].apply(lambda x: sentiment_analysis(x)[0]['label'])

# 保存结果
df.to_csv("reviews_with_sentiment.csv", index=False)

五、自定义模型

如果预训练模型不能完全满足你的需求,你可以在自己的数据集上微调模型。以下是一个简单的微调示例:

from transformers import Trainer, TrainingArguments, AutoModelForSequenceClassification, AutoTokenizer

# 加载预训练模型和分词器
model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased", num_labels=2)
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")

# 准备数据集
train_texts = ["I love this!", "I hate this!"]
train_labels = [1, 0]
encodings = tokenizer(train_texts, truncation=True, padding=True, max_length=128)
train_dataset = Dataset(encodings, train_labels)

# 定义训练参数
training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir="./logs",
    logging_steps=10,
)

# 定义 Trainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
)

# 训练模型
trainer.train()

总结

Hugging Face Transformers 库使得情感分析变得非常简单,无论是使用预训练模型还是在自己的数据集上微调模型。通过本文,你应该已经掌握了如何加载预训练模型、处理文本数据并进行情感分析。希望这对你的 NLP 项目有所帮助!

思考

  1. 学习Transformers的pipeline
  2. pipeline 和 AutoModel.from_pretrained这种加载模型的方式有什么不同

标签:15,sentiment,模型,Hugging,情感,train,Transformers,加载
From: https://blog.csdn.net/kljyrx/article/details/140374305

相关文章

  • 【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用
    ​​​​​​​目录一、引言 二、pipeline库2.1概述2.2使用task实例化pipeline对象2.2.1基于task实例化“自动语音识别”2.2.2task列表2.2.3 task默认模型2.3 使用model实例化pipeline对象2.3.1基于model实例化“自动语音识别” 2.3.2查看model与task的......
  • 2015 北京省队集训
    2015北京省队集训Day1训练题树的难题给定n个点的边带权三色树(黑白灰),定义“均衡的”三色树为“不存在黑点”或“只存在不超过1个白点”。删掉一些边得到“均衡的”森林,最小化删掉的边权和。数据范围\(n\le3*10^5\)key:dp\(f(u,op)\)代表u子树合法,且u所在连通块......
  • Day8(字符串)| 151.翻转字符串里的单词 55.右旋转字符串 28.实现 strStr() 459.重复
    151.翻转字符串里的单词给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或......
  • MacOS 15 Sequoia 启用允许“任何来源”应用
    MacOS15Sequoia启用允许“任何来源”应用spctl无法使用在MacOS15SequoiaBeta3系统中spctl命令被禁用。无法使用sudospctl--master-disable来禁用AssessmentSubsystem.导致每一次安装新应用(除非来源于AppleStore或者受信任开发者)都会提醒应用无法安全打开。......
  • POJ 15221 Entropy
    题目链接:POJ1521【Entropy】思路    典型哈夫曼树,求哈夫曼树的带权路径长度。代码#include<iostream>#include<queue>#include<string>#include<cstdio>#include<algorithm>#include<map>usingnamespacestd;intmain(){strings;......
  • 基于51单片机智能热电偶温度检测PID控制恒温箱设计套件24-157
    24-157、51热电偶PID控制恒温箱设计-LCD1602-热电偶-KEY-AO4405本系统由STC89C52单片机电路+LCD1602液晶显示电路+热电偶检测电路+按键电路+AO4405-MOS管驱动发热电阻电路+AO4405-MOS管驱动制冷片电路+电源电路组成。1、LCD1602液晶实时显示温度和温度上下限。2、通过按键可......
  • 《昇思25天学习打卡营第15天|计算机视觉-SSD目标检测》
    FCN图像语义分割&ResNet50迁移学习&ResNet50图像分类SSD目标检测模型简介SSD,全称SingleShotMultiBoxDetector,是WeiLiu在ECCV2016上提出的一种目标检测算法。使用NvidiaTitanX在VOC2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP(meanAveragePrecisi......
  • 572、基于51单片机的温度检测(3路,PT100,TLC1543)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下......
  • CleanMyMac X4.15.5破解版下载!你的电脑清洁神器,让垃圾无处遁形
    ......
  • laravel:访问es,索引和搜索(Laravel 11.15.0)
    一,安装需要的库1,包的地址:https://packagist.org/packages/elasticsearch/elasticsearch2,文档地址:https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html3,用composer从命令行安装[lhdop@blogdignews]$composerrequireelasticsearch/ela......