中文情感(积极&消极)句子分类数据集
просмотров 1376загрузок 107Размер: 0.85Формат: XLSX16.11.2024
Обзор
数据集概述
本数据集专注于中文情感分析,分为积极情感数据集和消极情感数据集两个Excel文件,分别包含表达正向和负向情感的句子文本。数据集适用于自然语言处理(NLP)中的情感分类、文本特征提取和情绪分析任务。通过对积极和消极句子的清晰划分,数据集为构建高效的情感分类模型提供了优质的语料资源。
数据格式
数据集以 xlsx 格式提供,字段说明如下:
id:每条句子的唯一标识符,便于索引和数据管理。积极(消极)情感内容:情感句子的原始中文文本,表达明确的情感倾向。内容分词:对句子内容进行的分词结果,词与词之间使用|分隔,便于特征提取和分析。中文拼音:句子内容转写为拼音的结果,词与词之间使用}分隔,适用于语音处理相关任务。
数据特点
- 情感清晰:积极与消极句子分布明确,覆盖了日常生活、工作、社交等多种场景的情感表达方式。
- 结构化表示:文本通过分词和拼音两种形式表示,便于语言特征分析和跨模态任务研究。
- 语言多样性:句子长度、句式和词汇分布广泛,适合多种NLP任务的语料需求。
应用场景
- 情感分类模型训练:用于训练和评估情感分类模型(如正负面情感分析)。
- 文本特征提取:结合分词字段,提取情感相关特征进行文本聚类或分类。
- 拼音输入法优化:利用拼音字段优化拼音输入法的情感联想能力。
- 社交情感分析:分析社交媒体或用户评论中的情感倾向,挖掘潜在用户反馈。
- 多模态情感研究:通过分词和拼音结合,支持跨模态(文本+语音)情感分析任务。
数据特点
- 清晰的情感标注:分别提供积极和消极情感句子,便于构建分类模型。
- 多字段支持:原文、分词和拼音等多字段内容,适合不同任务需求。
- 高质量语料:涵盖多种真实情感场景,数据集质量高、实用性强。
本数据集是研究中文情感分析的理想资源,适合机器学习、深度学习情感分类模型的训练和评估,同时为多模态研究提供了多维度的参考语料。
Предпросмотр
| id | 积极情感内容 | 分词 | 中文拼音 |
|---|---|---|---|
| 1 | 阳光洒满大地,心情格外明媚。 | 阳光|洒满|大地|,|心情|格外|明媚|。 | yang|guang|sa|man|da|di|,|xin|qing|ge|wai|ming|mei|。 |
| 2 | 成功的喜悦溢于言表。 | 成功|的|喜悦|溢于言表|。 | cheng|gong|de|xi|yue|yi|yu|yan|biao|。 |
| 3 | 每一天都是新的希望。 | 每|一天|都|是|新|的|希望|。 | mei|yi|tian|dou|shi|xin|de|xi|wang|。 |
| 4 | 笑容是最好的装饰。 | 笑容|是|最好|的|装饰|。 | xiao|rong|shi|zui|hao|de|zhuang|shi|。 |
| 5 | 心中充满感恩,生活更加美好。 | 心中|充满|感恩|,|生活|更加|美好|。 | xin|zhong|chong|man|gan|en|,|sheng|huo|geng|jia|mei|hao|。 |
| 6 | 梦想成真的感觉太棒了! | 梦想成真|的|感觉|太棒了|! | meng|xiang|cheng|zhen|de|gan|jue|tai|bang|le|! |
| 7 | 积极的心态让一切变得可能。 | 积极|的|心态|让|一切|变得|可能|。 | ji|ji|de|xin|tai|rang|yi|qie|bian|de|ke|neng|。 |
| 8 | 爱与被爱都是幸福的。 | 爱|与|被|爱|都|是|幸福|的|。 | ai|yu|bei|ai|dou|shi|xing|fu|de|。 |
| 9 | 努力后的成果令人欣慰。 | 努力|后|的|成果|令人欣慰|。 | nu|li|hou|de|cheng|guo|ling|ren|xin|wei|。 |
| 10 | 拥抱每一个美好的瞬间。 | 拥抱|每|一个|美好|的|瞬间|。 | yong|bao|mei|yi|ge|mei|hao|de|shun|jian|。 |
| 11 | 正能量满满,无所畏惧。 | 正|能量|满满|,|无所畏惧|。 | zheng|neng|liang|man|man|,|wu|suo|wei|ju|。 |
| 12 | 勇敢追求,终将收获。 | 勇敢|追求|,|终将|收获|。 | yong|gan|zhui|qiu|,|zhong|jiang|shou|huo|。 |
| 13 | 心中的阳光永不消逝。 | 心中|的|阳光|永不|消逝|。 | xin|zhong|de|yang|guang|yong|bu|xiao|shi|。 |
| 14 | 幸福就在身边,只需用心感受。 | 幸福|就|在|身边|,|只|需|用心|感受|。 | xing|fu|jiu|zai|shen|bian|,|zhi|xu|yong|xin|gan|shou|。 |
| 15 | 乐观面对,困难也能变成机遇。 | 乐观|面对|,|困难|也|能|变成|机遇|。 | le|guan|mian|dui|,|kun|nan|ye|neng|bian|cheng|ji|yu|。 |
| 16 | 朋友的支持让我倍感温暖。 | 朋友|的|支持|让|我|倍感|温暖|。 | peng|you|de|zhi|chi|rang|wo|bei|gan|wen|nuan|。 |
| 17 | 每一次进步都值得庆祝。 | 每|一次|进步|都|值得|庆祝|。 | mei|yi|ci|jin|bu|dou|zhi|de|qing|zhu|。 |
| 18 | 热爱生活,生活也会爱你。 | 热爱生活|,|生活|也|会|爱|你|。 | re|ai|sheng|huo|,|sheng|huo|ye|hui|ai|ni|。 |
| 19 | 信心百倍,迎接挑战。 | 信心百倍|,|迎接挑战|。 | xin|xin|bai|bei|,|ying|jie|tiao|zhan|。 |
| 20 | 美好的回忆总是让人微笑。 | 美好|的|回忆|总是|让|人|微笑|。 | mei|hao|de|hui|yi|zong|shi|rang|ren|wei|xiao|。 |
| 21 | 梦想的翅膀带我飞向远方。 | 梦想|的|翅膀|带|我|飞向|远方|。 | meng|xiang|de|chi|bang|dai|wo|fei|xiang|yuan|fang|。 |
| 22 | 感恩遇见,珍惜拥有。 | 感恩|遇见|,|珍惜|拥有|。 | gan|en|yu|jian|,|zhen|xi|yong|you|。 |
| 23 | 快乐是会传染的,我要传递给每一个人。 | 快乐|是|会|传染|的|,|我要|传递|给|每|一个|人|。 | kuai|le|shi|hui|chuan|ran|de|,|wo|yao|chuan|di|gei|mei|yi|ge|ren|。 |
| 24 | 心中充满希望,未来无限光明。 | 心中|充满希望|,|未来|无限|光明|。 | xin|zhong|chong|man|xi|wang|,|wei|lai|wu|xian|guang|ming|。 |
| 25 | 坚持的力量让人感动。 | 坚持|的|力量|让|人|感动|。 | jian|chi|de|li|liang|rang|ren|gan|dong|。 |
| 26 | 爱是最强大的正能量。 | 爱|是|最|强大|的|正|能量|。 | ai|shi|zui|qiang|da|de|zheng|neng|liang|。 |
| 27 | 每一次微笑都是心灵的绽放。 | 每|一次|微笑|都|是|心灵|的|绽放|。 | mei|yi|ci|wei|xiao|dou|shi|xin|ling|de|zhan|fang|。 |
| 28 | 成功的路上,每一步都值得纪念。 | 成功|的|路上|,|每|一步|都|值得纪念|。 | cheng|gong|de|lu|shang|,|mei|yi|bu|dou|zhi|de|ji|nian|。 |
| 29 | 积极的心态让生活充满色彩。 | 积极|的|心态|让|生活|充满|色彩|。 | ji|ji|de|xin|tai|rang|sheng|huo|chong|man|se|cai|。 |
| 30 | 幸福的感觉如同春暖花开。 | 幸福|的|感觉|如同|春暖花开|。 | xing|fu|de|gan|jue|ru|tong|chun|nuan|hua|kai|。 |
| 31 | 勇敢追梦,不负韶华。 | 勇敢|追梦|,|不负|韶华|。 | yong|gan|zhui|meng|,|bu|fu|shao|hua|。 |
| 32 | 美好的事物总是值得等待。 | 美好|的|事物|总是|值得|等待|。 | mei|hao|de|shi|wu|zong|shi|zhi|de|deng|dai|。 |
| 33 | 感恩的心,让生活更加美好。 | 感恩|的|心|,|让|生活|更加|美好|。 | gan|en|de|xin|,|rang|sheng|huo|geng|jia|mei|hao|。 |
| 34 | 每一次努力都是为了更好的自己。 | 每|一次|努力|都|是|为了|更好|的|自己|。 | mei|yi|ci|nu|li|dou|shi|wei|le|geng|hao|de|zi|ji|。 |
| 35 | 心中充满爱,世界也变得温柔。 | 心中|充满|爱|,|世界|也|变得|温柔|。 | xin|zhong|chong|man|ai|,|shi|jie|ye|bian|de|wen|rou|。 |
| 36 | 快乐是生活的调味剂。 | 快乐|是|生活|的|调味剂|。 | kuai|le|shi|sheng|huo|de|tiao|wei|ji|。 |
| 37 | 梦想的实现让人心潮澎湃。 | 梦想|的|实现|让|人|心潮澎湃|。 | meng|xiang|de|shi|xian|rang|ren|xin|chao|peng|pai|。 |
| 38 | 积极向上,生活才有意义。 | 积极向上|,|生活|才|有|意义|。 | ji|ji|xiang|shang|,|sheng|huo|cai|you|yi|yi|。 |
| 39 | 幸福就在平凡的日子里。 | 幸福|就|在|平凡|的|日子|里|。 | xing|fu|jiu|zai|ping|fan|de|ri|zi|li|。 |
| 40 | 朋友的鼓励让我信心倍增。 | 朋友|的|鼓励|让|我|信心倍增|。 | peng|you|de|gu|li|rang|wo|xin|xin|bei|zeng|。 |
| 41 | 每一天都是新的开始。 | 每|一天|都|是|新|的|开始|。 | mei|yi|tian|dou|shi|xin|de|kai|shi|。 |
| 42 | 美好的愿望终将实现。 | 美好|的|愿望|终将|实现|。 | mei|hao|de|yuan|wang|zhong|jiang|shi|xian|。 |
| 43 | 热爱生活,从珍惜每一刻开始。 | 热爱生活|,|从|珍惜|每一刻|开始|。 | re|ai|sheng|huo|,|cong|zhen|xi|mei|yi|ke|kai|shi|。 |
| 44 | 心中的信念让我无所畏惧。 | 心中|的|信念|让|我|无所畏惧|。 | xin|zhong|de|xin|nian|rang|wo|wu|suo|wei|ju|。 |
| 45 | 快乐的时光总是过得飞快。 | 快乐|的|时光|总是|过得|飞快|。 | kuai|le|de|shi|guang|zong|shi|guo|de|fei|kuai|。 |
| 46 | 成功的喜悦源自不懈的努力。 | 成功|的|喜悦|源自|不懈|的|努力|。 | cheng|gong|de|xi|yue|yuan|zi|bu|xie|de|nu|li|。 |
| 47 | 感恩每一个帮助过我的人。 | 感恩|每|一个|帮助|过|我|的|人|。 | gan|en|mei|yi|ge|bang|zhu|guo|wo|de|ren|。 |
| 48 | 梦想的种子终将开花结果。 | 梦想|的|种子|终将|开花结果|。 | meng|xiang|de|zhong|zi|zhong|jiang|kai|hua|jie|guo|。 |
| 49 | 积极的心态让困难变得渺小。 | 积极|的|心态|让|困难|变得|渺小|。 | ji|ji|de|xin|tai|rang|kun|nan|bian|de|miao|xiao|。 |
Пример кода (Python загрузчик)
以下是使用DistilBERT对积极和消极情感句子(如“天气晴朗,心情很好”)进行分类的完整技术博客,保证通俗易懂、可复现且贴合实际场景。
使用 DistilBERT 实现情感句子分类
情感分析是自然语言处理(NLP)中的核心任务之一。本文将基于 DistilBERT 构建一个轻量化情感分类模型,识别句子的积极或消极情感(如“天气晴朗,心情很好”被分类为积极情感)。
1. 环境准备
确保安装必要的库:
pip install transformers torch pandas scikit-learn2. 数据准备
假设您有两个Excel表格:积极情感数据集.xlsx 和 消极情感数据集.xlsx,分别包含以下字段:id、积极(消极)情感内容、内容分词、中文拼音。
加载和合并数据:
import pandas as pd
# 加载积极和消极情感数据
positive_data = pd.read_excel("积极情感数据集.xlsx")
negative_data = pd.read_excel("消极情感数据集.xlsx")
# 为数据添加标签:积极情感标记为1,消极情感标记为0
positive_data['label'] = 1
negative_data['label'] = 0
# 合并数据集
data = pd.concat([positive_data, negative_data], ignore_index=True)
# 提取文本和标签
texts = data['积极(消极)情感内容'].values # 替换为实际字段名
labels = data['label'].values
# 检查数据样本
print(f"数据样本数量: {len(data)}")
print(data.head())
3. 数据预处理
使用 Hugging Face 的 transformers 库中的 DistilBERT 分词器,将句子转化为模型可接受的格式。
from transformers import DistilBertTokenizer
# 加载DistilBERT分词器
tokenizer = DistilBertTokenizer.from_pretrained("distilbert-base-multilingual-cased")
# 定义分词函数
def tokenize_texts(texts, max_length=128):
return tokenizer(
list(texts),
max_length=max_length,
padding="max_length",
truncation=True,
return_tensors="pt"
)
# 对句子进行分词
tokenized_texts = tokenize_texts(texts)
print(tokenized_texts.keys()) # 包含 input_ids 和 attention_mask
4. 数据集划分
使用 scikit-learn 将数据划分为训练集和测试集。
from sklearn.model_selection import train_test_split
import torch
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
tokenized_texts["input_ids"], labels, test_size=0.2, random_state=42
)
# 转换标签为张量
y_train = torch.tensor(y_train)
y_test = torch.tensor(y_test)
X_train_masks, X_test_masks = train_test_split(tokenized_texts["attention_mask"], test_size=0.2, random_state=42)
5. 构建 DistilBERT 模型
加载 DistilBERT 模型并添加分类层。
from transformers import DistilBertForSequenceClassification
# 加载DistilBERT模型,输出2个类别(积极和消极)
model = DistilBertForSequenceClassification.from_pretrained("distilbert-base-multilingual-cased", num_labels=2)
# 定义优化器
from torch.optim import AdamW
optimizer = AdamW(model.parameters(), lr=2e-5)
6. 模型训练
使用 PyTorch 的 DataLoader 和训练循环训练模型。
from torch.utils.data import DataLoader, TensorDataset
# 构建数据集和DataLoader
train_data = TensorDataset(X_train, X_train_masks, y_train)
train_loader = DataLoader(train_data, batch_size=16, shuffle=True)
# 模型训练
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
epochs = 3
for epoch in range(epochs):
model.train()
total_loss = 0
for batch in train_loader:
b_input_ids, b_input_mask, b_labels = tuple(t.to(device) for t in batch)
# 清零梯度
optimizer.zero_grad()
# 前向传播
outputs = model(input_ids=b_input_ids, attention_mask=b_input_mask, labels=b_labels)
loss = outputs.loss
total_loss += loss.item()
# 反向传播
loss.backward()
optimizer.step()
print(f"Epoch {epoch + 1} | Loss: {total_loss / len(train_loader):.4f}")
7. 模型评估
在测试集上评估模型性能。
from sklearn.metrics import accuracy_score, classification_report
# 模型评估
model.eval()
with torch.no_grad():
outputs = model(input_ids=X_test.to(device), attention_mask=X_test_masks.to(device))
predictions = torch.argmax(outputs.logits, dim=1).cpu().numpy()
# 计算准确率
accuracy = accuracy_score(y_test, predictions)
print(f"测试集准确率: {accuracy:.4f}")
# 输出分类报告
print("分类报告:\n", classification_report(y_test, predictions))
8. 模型应用
对新句子进行情感分类。
def predict_sentiment(sentence):
inputs = tokenize_texts([sentence])
input_ids = inputs["input_ids"].to(device)
attention_mask = inputs["attention_mask"].to(device)
with torch.no_grad():
outputs = model(input_ids=input_ids, attention_mask=attention_mask)
prediction = torch.argmax(outputs.logits, dim=1).item()
return "积极情感" if prediction == 1 else "消极情感"
# 测试新句子
sentences = [
"天气晴朗,心情很好。",
"今天的工作很糟糕,令人沮丧。"
]
for sentence in sentences:
print(f"句子: {sentence}\n情感预测: {predict_sentiment(sentence)}\n")
输出示例
假设输入句子如下:
"天气晴朗,心情很好。"
"今天的工作很糟糕,令人沮丧。"
输出结果:
句子: 天气晴朗,心情很好。
情感预测: 积极情感
句子: 今天的工作很糟糕,令人沮丧。
情感预测: 消极情感
技术要点
- 轻量化模型:DistilBERT 是 BERT 的轻量化版本,计算效率高,适合句子分类任务。
- 多语言支持:使用
distilbert-base-multilingual-cased,支持中文句子分析。 - 文本特征提取:通过预训练模型的上下文感知能力,捕获句子中的情感特征。
- 可复现性:从数据加载到模型训练,所有步骤都可复现,适用于类似情感分析场景。
通过本文的指导,您可以快速实现一个基于 DistilBERT 的句子情感分类模型,适用于多种情感分析任务。