集智データセット

中文情感(积极&消极)句子分类数据集

閲覧 1375ダウンロード 107サイズ: 0.85形式: XLSX2024/11/16

概要

数据集概述
本数据集专注于中文情感分析,分为积极情感数据集消极情感数据集两个Excel文件,分别包含表达正向和负向情感的句子文本。数据集适用于自然语言处理(NLP)中的情感分类、文本特征提取和情绪分析任务。通过对积极和消极句子的清晰划分,数据集为构建高效的情感分类模型提供了优质的语料资源。

数据格式
数据集以 xlsx 格式提供,字段说明如下:

  • id:每条句子的唯一标识符,便于索引和数据管理。
  • 积极(消极)情感内容:情感句子的原始中文文本,表达明确的情感倾向。
  • 内容分词:对句子内容进行的分词结果,词与词之间使用 | 分隔,便于特征提取和分析。
  • 中文拼音:句子内容转写为拼音的结果,词与词之间使用 } 分隔,适用于语音处理相关任务。

数据特点

  1. 情感清晰:积极与消极句子分布明确,覆盖了日常生活、工作、社交等多种场景的情感表达方式。
  2. 结构化表示:文本通过分词和拼音两种形式表示,便于语言特征分析和跨模态任务研究。
  3. 语言多样性:句子长度、句式和词汇分布广泛,适合多种NLP任务的语料需求。

应用场景

  1. 情感分类模型训练:用于训练和评估情感分类模型(如正负面情感分析)。
  2. 文本特征提取:结合分词字段,提取情感相关特征进行文本聚类或分类。
  3. 拼音输入法优化:利用拼音字段优化拼音输入法的情感联想能力。
  4. 社交情感分析:分析社交媒体或用户评论中的情感倾向,挖掘潜在用户反馈。
  5. 多模态情感研究:通过分词和拼音结合,支持跨模态(文本+语音)情感分析任务。

数据特点

  • 清晰的情感标注:分别提供积极和消极情感句子,便于构建分类模型。
  • 多字段支持:原文、分词和拼音等多字段内容,适合不同任务需求。
  • 高质量语料:涵盖多种真实情感场景,数据集质量高、实用性强。

本数据集是研究中文情感分析的理想资源,适合机器学习、深度学习情感分类模型的训练和评估,同时为多模态研究提供了多维度的参考语料。

プレビュー

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-learn


2. 数据准备

假设您有两个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")


输出示例

假设输入句子如下:

"天气晴朗,心情很好。"
"今天的工作很糟糕,令人沮丧。"

输出结果

句子: 天气晴朗,心情很好。
情感预测: 积极情感

句子: 今天的工作很糟糕,令人沮丧。
情感预测: 消极情感


技术要点
  1. 轻量化模型:DistilBERT 是 BERT 的轻量化版本,计算效率高,适合句子分类任务。
  2. 多语言支持:使用 distilbert-base-multilingual-cased,支持中文句子分析。
  3. 文本特征提取:通过预训练模型的上下文感知能力,捕获句子中的情感特征。
  4. 可复现性:从数据加载到模型训练,所有步骤都可复现,适用于类似情感分析场景。

通过本文的指导,您可以快速实现一个基于 DistilBERT 的句子情感分类模型,适用于多种情感分析任务。