Skip to content

LexuanWang-Michelle/SCAYS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SCAYS — Strong-Context Annotation for Youth Sentiment

面向中文青少年社交媒体的强情境情感标注语料库

A multi-dimensional sentiment corpus for Chinese adolescent social media — building data from identity, temporality, relationships, and subculture, not just keywords.

License: CC BY-NC-SA 4.0 Language: Chinese Data: Xiaohongshu Model: BERT


中文版 | English Version

TL;DR

SCAYS 1.2 是一个从小红书采集的中文青少年情感语料库,目前包含 14,288 条 句子级标注数据(三分类:负面 / 中性 / 正面),覆盖 2 个维度、26 个关键词(身份锚点 17 个 + 周期节律 9 个)。

现有的中文情感数据集几乎都是"扁平"的——随机抓一批文本,标上正面/负面/中性,结束。它们不关心说话的人是谁、处在什么阶段、面对什么关系。但青少年的情绪从来不是孤立存在的,它长在具体的 身份、周期、关系、文化、身体、经济、行为 里。

SCAYS 和其他数据集最大的区别:我们从一开始就按照这七个维度去设计采集策略、搜罗数据。不是先有数据再贴标签,而是先有维度框架,再围绕每个维度的关键词定向采集。这套 从"扁平化"到"多维情境化" 的数据构建方式,才是 SCAYS 存在的核心理由。


为什么需要 SCAYS?

传统数据集的根本问题:数据本身就是扁平的

传统情感数据集的问题不只是标注方法,而是从数据采集阶段就已经丢失了情境

传统数据集 SCAYS
采集方式 通用关键词抓取,或随机采样 按七维体系定向采集:每个维度都有专门设计的采集关键词(共 100+ 个)
数据视角 一句话就是一句话,没有上下文 一句话 + 谁在说(身份)+ 什么时候说(周期)+ 在什么关系中说(场域)
标注深度 正面/负面/中性 情绪类型 + 情绪动机 + 所属情境维度
语言覆盖 通用中文 专门覆盖中国初高中生的话语体系和亚文化表达

简单来说:传统数据集在标注环节做优化,SCAYS 在数据源头就做分层

隐含情绪识别:手段而非目的

在这个过程中,SCAYS 也处理了传统模型的一个典型短板——隐含情绪。青少年的真实表达往往不含任何情绪词:

"我妈每天都让我吃一个苹果,我每次都不吃但她每次都还是给我"
→ 无情绪词,但有家庭关系中的复杂情感

"我成绩其实还行,但再这个态度我大概能看到自己以后的成绩了"
→ 无情绪词,但有对未来的焦虑和自我否定

传统模型会把这些全部判为"中性"。但这不是 SCAYS 的目的——识别隐含情绪只是多维情境标注过程中自然附带的能力。真正重要的是,因为我们按维度采集数据,这类句子才不会在采集阶段就被遗漏。


七维情境标注体系

SCAYS 认为,青少年的情绪不是孤立的"正面/负面"标签,而是在具体的 身份、时间、关系、文化、身体、经济、行为 情境中产生的。这七个维度本身是情绪中立的——每个维度都可能产生正面、负面或复杂交织的情感。我们设计它们不是为了捕捉"坏情绪",而是为了还原青少年完整的生存情境:

维度总览

# 维度 英文 核心关注
1 身份锚点 Identity Anchor 你是谁?——年级、学校类型、学科、角色
2 周期节律 Temporal Rhythm 什么时候?——考试、日常、假期、学习周期
3 关系场域 Relational Field 和谁?——家庭、师生、同学、恋爱
4 精神避难所 Digital Refuge 逃向哪里?——饭圈、二次元/谷圈、游戏、设圈
5 躯体觉醒 Somatic Awakening 身体怎么了?——容貌、生理变化、睡眠、疾病
6 消费认知 Economic Imprint 花钱背后?——家庭条件、经济控制、物质攀比
7 主体性夺回 Agency Reclaim 如何反抗?——化妆、逃学、翘课等叛逆行为

维度详细标签

⚠️ 以下仅展示各维度的 代表性标签示例。完整关键词表包含 100+ 个标签,将随数据集 v2.0 发布。

维度 1:身份锚点(Identity Anchor)— 4 个子类,17 个标签

青少年的情绪表达高度依赖其身份定位。同样是"学不完了",准初三和复读生的焦虑浓度完全不同。

子类 示例标签
年级/阶段 准高三 复读生 等 5 个
学校作息 住校生 等 3 个
分科 理科生 美术生 等 4 个
校园地位 学渣 学霸 等 5 个
维度 2:周期节律(Temporal Rhythm)— 4 个子类,24 个标签

青少年的情绪有明显的周期性:月考前焦虑飙升,假期结束前集中爆发,成绩单发放当天是情绪巅峰。

子类 示例标签
考试 月考 一模 发成绩单 等 8 个
日常 晚自习 拖堂 等 6 个
假期 开学综合征 等 5 个
学习 偏科 小镇做题家 等 6 个
维度 3:关系场域(Relational Field)— 4 个子类,30 个标签

青少年无法选择自己的家庭、老师和同学,关系中既有冲突(被孤立、被偏心对待),也有成长(交到新朋友的兴奋、被老师认可的喜悦)。这种关系的"不可选择性"让情绪体验格外强烈——无论正面还是负面。

子类 示例标签
家庭 偏心 查手机 道德绑架 等 9 个
师生 被针对 请家长 全校通报 等 10 个
同学 孤立 校园冷暴力 等 8 个
恋爱 暗恋 早恋被抓 等 3 个
维度 4:精神避难所(Digital Refuge)— 4 个子类,21 个标签

青少年在数字世界中建立自己的精神归属——追星带来的归属感、吃谷带来的满足感、游戏中的成就感,都是真实的正面情绪。同时这些空间也会制造负面波动(塌房、退坑、被骗)。传统 NLP 模型几乎无法理解这些圈层"黑话"。

子类 示例标签
饭圈 塌房 脱粉 等 7 个
二次元/谷圈 吃谷 退坑 等 5 个
游戏 防沉迷 抽卡保底 等 6 个
设圈 OC 等 3 个
维度 5:躯体觉醒(Somatic Awakening)— 4 个子类,16 个标签

青春期的身体在剧烈变化,这些变化既有困扰(烂脸、失眠),也有惊喜(长高了、变好看了)。这个维度关注的是青少年对自身身体变化那种复杂的感受——不只是焦虑,也包括成长带来的喜悦和自信。

子类 示例标签
容貌 青春痘/烂脸 身高 等 4 个
生理 痛经 变声期 等 4 个
其他 睡眠 视力 等 3 个
特殊疾病 躯体化 进食障碍 等 5 个
维度 6:消费认知(Economic Imprint)— 3 个子类,12 个标签

消费行为折射出家庭背景和同辈文化。不只有物质差距带来的自尊冲击,也有买到心仪的谷子、收到礼物时的满足感。这个维度关注的是消费行为背后的情绪体验。

子类 示例标签
家庭条件 留学 等 3 个
经济控制 零花钱 买谷吃土 等 4 个
物质攀比 假鞋 等 5 个
维度 7:主体性夺回(Agency Reclaim)— 6 个标签

青少年在高压环境下通过"越轨行为"夺回自主权。这些行为本身是情绪的出口,也是重要的风险信号。

示例标签
逃学 翘课 等 6 个

七维不是路径,是坐标

这七个维度不是一条因果链,而是 描述青少年所处世界的七个切面

        身份 — 你是谁(准高三 / 住校生 / 学渣)
        周期 — 你在什么时间节点(月考前 / 假期最后一天 / 发成绩单)
        关系 — 你和谁在一起(偏心的父母 / 针对人的老师 / 排挤的同学)
        推   — 你的精神世界在哪(追星 / 吃谷 / 打游戏)
        生长 — 你的身体在经历什么(烂脸 / 失眠 / 痛经)
        消费 — 你的物质条件如何(别人穿AJ我穿假鞋)
        叛逆 — 你做了什么(翘课 / 逃学 / 抽烟)

一个青少年在任意时刻,同时处在这七个轴上的某个位置。这些位置的组合,就是他/她的"情境"。

比如同一句"不想活了",放在不同的坐标组合里意味完全不同:

  • 身份=高三党 + 周期=发成绩单 → 大概率是考试后的情绪宣泄
  • 身份=复读生 + 关系=被孤立 + 生长=长期失眠 → 需要认真对待的求助信号

反过来,同一句"今天好开心"也需要情境才能理解:

  • 关系=交到新朋友 + 身份=小透明 → 长期孤立后的社交突破,情绪意义很大
  • 周期=放假第一天 → 普遍性的轻松感,情绪意义一般

这就是 SCAYS 所说的 "强情境":理解一句话的情绪,不能只看这句话本身,要看说这句话的人同时处在哪些维度的什么位置上。

七维不只是坐标,还是互相推导的依据

在社交媒体上,用户很少主动声明自己的完整身份——但它可能会用一些只有特定身份才说的话。这时候,七个维度之间就可以 互相推导,填补缺失信息

示例:一条提到特定日常作息的帖子

已知维度:
  周期 = 某个日常作息场景
  周期 = 某个师生互动
  
可推导维度:
  身份 → 特定学校类型(作息暗示)
  身份 → 特定学科方向(学科关键词暗示)
  身份 → 学习状态(语气暗示长期困难)
  关系 → 师生压力(被动承受)

再比如:

示例:一条提到亚文化消费的帖子

已知维度:
  推   = 某种亚文化消费行为
  消费 = 经济状况描述
  
可推导维度:
  身份 → 特定年龄段(消费模式暗示)
  消费 → 经济自主程度
  关系 → 可能引发的家庭冲突

这意味着七维框架不只解决了"数据扁平化"的问题,还解决了社交媒体上"身份难以锚定"的问题。传统数据集无法知道一句话是谁说的;SCAYS 的七维体系让维度之间成为彼此的线索,即使用户没有明确表达,也能通过已知维度推导出缺失的情境信息。


当前数据概览(v1.2)

数据规模

维度 1:身份锚点(Identity Anchor)— 8,004 条

类别 数量 label 说明
显性情绪句子 (normal) 2,172 条 1 含明确情绪词汇
隐含情绪句子 (invisible) 514 条 1 无情绪词但有隐含情绪
正面情绪句子 (positive) 173 条 2 正面情绪表达
中性句子 (neutral) 5,052 条 0 无情绪表达
小计 8,004 条 17 个关键词

维度 2:周期节律(Temporal Rhythm)— 6,284 条

类别 数量 label 说明
显性情绪句子 (normal) 1,356 条 1 含明确情绪词汇
隐含情绪句子 (invisible) 520 条 1 无情绪词但有隐含情绪
正面情绪句子 (positive) 137 条 2 正面情绪表达
中性句子 (neutral) 4,202 条 0 无情绪表达
小计 6,284 条 9 个关键词

合计

数量
总计 14,288 条

BERT 三分类模型效果

类别 精确率 召回率 F1
中性 96% 98% 97%
负面 95% 93% 94%
正面 87% 90% 89%
总体准确率 96%

数据来源

  • 平台:小红书(Xiaohongshu / RED)
  • 采集范围:基于维度 1(身份锚点)和维度 2(周期节律)设计的 26 个定向关键词
  • 维度 1 关键词(17 个):准高三、准初三、高三党、初三党、复读生、住校生、住宿生、走读生、理科生、文科生、美术生、体育生、学渣、学霸、卷王、小透明、班干部
  • 维度 2 关键词(9 个):月考、周测、摸底考、开学考、一模、二模、百日誓师、发成绩单、晚自习
  • 内容类型:帖子标题、正文、评论,句子级拆分
  • 采集方式:DrissionPage 模拟真人浏览,保留原始语言风格

标注字段

字段 类型 说明 取值示例
Keyword str 采集关键词 准高三
Note_ID str 原帖 ID 69d9f944...
Source str 来源类型 title / content / comment
Sentence str 句子文本 快中考了这种成绩咋办
label int 三分类标签 0=中性, 1=负面情绪, 2=正面情绪
隐含情绪 str 情绪类别 焦虑/无助/自卑/委屈/愤怒/孤独/正面/中性
情绪动机 str 情绪来源 学业/人际/家庭/未来/自我/身体/生活

数据样例

身份锚点维度:

Keyword,Source,Sentence,label,隐含情绪,情绪动机
准初三,content,快中考了这种成绩咋办🥹🥹,1,焦虑,学业
住宿生,comment,我去我感冒一个多星期了导员不给请假一直硬抗着,1,委屈,身体
复读生,comment,复读生和应届生同分同录无隐形限制,0,中性,
学渣,comment,我成绩其实还行但再这个态度我大概能看到自己以后的成绩了,1,焦虑,学业
体育生,comment,体育生的快乐就是这么简单,2,正面,生活

周期节律维度:

Keyword,Source,Sentence,隐含情绪,情绪动机,置信度
月考,comment,月考前一天晚上才开始复习真的来不及了,焦虑,学业,0.9
百日誓师,comment,百日誓师的时候全班都哭了,中性,,0.8
晚自习,comment,晚自习被老师抓到看小说直接没收了,委屈,人际,0.85
发成绩单,comment,成绩单发下来那一刻感觉世界都安静了,焦虑,学业,0.9

Roadmap

SCAYS v1.0 发布的是基于小红书的初始语料和基础标注。以下是后续的完整规划:

近期(v1.x)

  • 扩大数据规模:从 8,000 条扩展到 14,000+ 条 ✅ 已完成(v1.2,14,288 条)
  • 增加采集关键词:覆盖维度 2(周期节律)的 9 个关键词 ✅ 已完成
  • 继续扩展:覆盖维度 3-7 的关键词,目标 30,000+ 条
  • 完善隐含情绪标注:引入 LLM 辅助 + 人工双审校,提高标注质量
  • 发布 BERT 三分类模型(验证集准确率 92%) ✅ 已更新(准确率 96%)

中期(v2.0)

  • 七维情境标注落地:为每条句子标注所属维度和子标签(而不仅仅是情绪类型)
  • 多平台扩展:从小红书扩展到 B 站评论区、QQ 空间等青少年活跃平台
  • 动态词库:建立青少年亚文化热词的持续更新机制,跟踪语义漂移
  • 对比表:发布与主流中文情感数据集的系统性 benchmark 对比

长期(v3.0)

  • 多模态融合:结合表情包、短视频配乐等非文本信息
  • 情感溯源(Emotion Tracing):不只判断"有没有情绪",而是推理"情绪从哪来"——基于七维情境的因果链条
  • 垂直领域微调模型:针对中国青少年特有的社会压力(学业、亲子关系、校园人际)发布专用的情感分析模型
  • 跨学科应用接口:为心理学和社会学研究者提供标准化的特征提取工具

技术理念

现有中文情感数据集普遍存在四个结构性缺陷。SCAYS 针对每一个都给出了明确的对策:

❶ 语料稀缺——中文青少年情感数据集几乎为零

中文情感分析领域不缺数据集(微博、电商评论、新闻),但 专门面向青少年群体 的几乎没有。模型训练用的是成年人的表达方式,却被拿去分析青少年的话——青少年特有的话语体系("emo""发疯文学""小镇做题家""吃谷吃土")和特定压力场景(月考、住校、被查手机、早恋被抓)在通用数据集中几乎不存在。

SCAYS 的对策:从零构建一个专门面向中国初高中生的情感语料库,采集关键词全部来自青少年的真实话语体系和生活场景。

❷ 数据扁平化

传统数据集的工作流程是:抓数据 → 标正面/负面/中性 → 结束。数据来源是扁平的,标注也是扁平的。一句话脱离了说话人的身份、所处阶段和面对的关系,情绪标签就只是一个无根的判断。

SCAYS 的对策:先建立七维情境框架 → 按维度关键词定向采集 → 标注情绪类型 + 情绪动机 + 情境维度。数据从源头就带有结构化的情境信息。

❸ 身份模糊

在社交媒体上,用户很少主动声明自己的身份。一条帖子几乎不会直接写明自己的年级、学校类型——但它可能会说出一些只有特定身份才会经历的场景。传统数据集只能看到这句话本身,无法锚定说话人的身份,也就无法判断同一句话在不同人嘴里意味着什么。

SCAYS 的对策:七维框架让维度之间可以互相推导、补全缺失信息。日常作息的描述可以推导学校类型,学科关键词可以推导分科方向,语气词可以推导长期状态。即使用户没有明确表达身份,也能通过已知维度推导出缺失的情境。(详见上方 七维不只是坐标,还是互相推导的依据

❹ 语义漂移

青少年的语言是所有年龄段中变化最快的。一个词在半年内可能完全反转含义——亚文化圈层的"黑话"不断向主流扩散,语义也随之漂移。传统数据集是静态的快照——采集完就不管了,遇到新的亚文化表达要么误判,要么直接忽略。

SCAYS 的对策:追踪热词演化,建立动态词库更新机制。数据集不是一次性交付品,而是持续跟踪青少年话语体系的活文档。

总览对比

问题 传统数据集 SCAYS
目标人群 通用(成年人为主) 专门面向中国初高中生
情境信息 无——采集阶段就丢失了 七维情境框架,从源头带入
身份锚定 不知道谁在说话 七维互相推导,补全缺失身份
情绪粒度 正/负/中 三分类 三分类(正面/负面/中性)+ 焦虑/无助/自卑/委屈/愤怒/孤独等细粒度标签
语义消歧 难以识别反讽、自嘲 通过身份和关系情境判定真实意图
语义漂移 静态词库,易过时 通过亚文化维度持续跟踪,动态更新
应用深度 知道"他不开心" 知道"他因为偏科被分到普通班,觉得努力没用,所以不开心"

解决这四个问题之后,同一句话在不同的维度坐标组合里意味着完全不同的事。以 "不想上学了" 为例:

维度组合 情绪 风险等级
周期=假期最后一天 + 周期=作业没写完 焦虑 低(普遍性)
关系=被全校通报 + 身份=住校生 羞耻/愤怒 中(需关注)
关系=长期被孤立 + 关系=家长不理解 + 生长=长期失眠 绝望 高(需干预)

正面情绪同理。"我考了全班第一"

维度组合 情绪 意义
身份=学霸 + 周期=周测 平淡 符合预期
身份=学渣 + 周期=一模 + 关系=同辈比较 强烈的喜悦和自我证明 身份逆转,情绪意义很大

没有情境,模型只能给出一个"负面"或"正面"标签。有了四个问题的解决方案,才能判断同一句话在不同坐标下的真实含义。

应用价值

对于 AI 模型:提供带有完整情境信息的训练数据,显著提升青少年场景下的情感识别精度——尤其是隐含情绪。

对于跨学科研究:为心理学和社会学研究者提供可量化的特征体系,将社交媒体语言数据系统性地转化为青少年生存状态的研究素材。

对于早期识别与危机预防:通过情境维度的组合分析,在情绪累积阶段就识别需要关注的个体——无论是学校的心理辅导系统、互联网平台的内容安全机制,还是心理危机热线的主动筛查,都能从日常语言表达中捕捉到风险信号,而不是等到危机发生后才介入。


快速开始

环境要求

Python >= 3.8
torch >= 1.13
transformers >= 4.20
pandas
scikit-learn

安装

git clone https://github.com/LexuanWang-Michelle/SCAYS.git
cd SCAYS
pip install -r requirements.txt

加载数据

import pandas as pd

# 加载某个维度的数据
identity_normal = pd.read_csv("data/identity/normal.csv")
identity_invisible = pd.read_csv("data/identity/invisible_labeled.csv")
print(f"身份锚点维度: {len(identity_normal) + len(identity_invisible)} 条")

event_normal = pd.read_csv("data/event/normal.csv")
event_invisible = pd.read_csv("data/event/invisible_labeled.csv")
print(f"周期节律维度: {len(event_normal) + len(event_invisible)} 条")

# 加载 BERT 训练集(合并所有维度)
bert_df = pd.read_csv("data/bert训练集.csv")
print(bert_df["label"].value_counts())
# 0 (中性): 9254
# 1 (负面): 5034

训练 BERT 三分类器

python scripts/bert_3class.py --train

预测新数据

python scripts/bert_3class.py --predict

项目结构

SCAYS/
├── data/                              # 📊 数据文件(按维度分目录)
│   ├── identity/                      #   维度1:身份锚点 (8,004 条)
│   │   ├── normal.csv                 #     显性情绪句子 (2,172 条)
│   │   └── invisible_labeled.csv      #     隐含情绪标注 (5,832 条)
│   ├── event/                         #   维度2:周期节律 (6,284 条)
│   │   ├── normal.csv                 #     显性情绪句子 (1,356 条)
│   │   └── invisible_labeled.csv      #     隐含情绪标注 (4,928 条)
│   └── bert训练集.csv                  #   BERT 训练集 (14,288 条,合并所有维度)
├── scripts/                           # 🐍 代码脚本
│   ├── bert_3class.py                 #   BERT 三分类训练/预测
│   ├── xhs身份爬取1.py                #   小红书数据采集
│   ├── filter_emotion.py              #   情绪词匹配与分流
│   ├── label_invisible.py             #   隐含情绪标注
│   ├── merge_review.py                #   人工审核合并
│   └── remove_usernames.py            #   用户名脱敏
├── README.md                          # 📝 项目说明(中文)
├── README_EN.md                       #   项目说明(English)
├── SCAYS项目介绍.md                    #   项目详细介绍
├── requirements.txt                   # ⚙️ Python 依赖
└── LICENSE                            #   CC BY-NC-SA 4.0

数据处理流程

小红书原始帖子
    ↓  DrissionPage 模拟真人浏览采集(26 个关键词,覆盖 2 个维度)
帖子级数据
    ↓  句子级拆分(标题 / 正文 / 评论)
句子级语料
    ↓  去重 + 去广告 + 用户名脱敏
    ↓  按维度分目录存储
    │
    ├── identity/(维度1:身份锚点,17 个关键词)
    │   ├── normal.csv (2,172 条 → 显性负面)
    │   └── invisible_labeled.csv (5,832 条)
    │       ├── 隐含负面 (514 条) + 正面 (173 条) + 中性 (5,052 条)
    │
    └── event/(维度2:周期节律,9 个关键词)
        ├── normal.csv (1,356 条 → 显性负面)
        └── invisible_labeled.csv (4,928 条)
            ├── 隐含负面 (520 条) + 正面 (137 条) + 中性 (4,202 条)

    ↓  合并所有维度 → bert训练集.csv (14,288 条)
    ↓  BERT 三分类训练 → 准确率 96%

伦理声明

  • 所有数据均来自公开可访问的社交媒体内容
  • 已进行 用户名脱敏 处理,不包含任何个人身份信息
  • 本数据集仅用于 学术研究 目的,不得用于商业监控或用户画像
  • 如发现数据中包含可识别个人信息,请联系我们删除

引用

如果本数据集对你的研究有帮助,请引用:

@misc{scays2026,
  title={SCAYS: Strong-Context Annotation for Youth Sentiment},
  author={Yang Chao},
  year={2026},
  howpublished={\url{https://github.com/LexuanWang-Michelle/SCAYS}},
  note={A deep-context Chinese adolescent sentiment corpus from Xiaohongshu}
}

许可证

本数据集采用 CC BY-NC-SA 4.0 许可证发布。

  • ✅ 学术研究使用
  • ✅ 标注方法参考
  • ❌ 商业用途
  • ❌ 用户监控/画像

参与我们

SCAYS 是一个活的基座。我们需要:

  • 数据矿工:挖掘深埋在网络角落的原生情绪。
  • 标注专家:用你的直觉与 AI 协同,定义下一个潮流标签。
  • 开发者:在 SCAYS 基础上跑出中文青少年情感分析的新 SOTA。

致谢

About

Strong-Context Annotation for Youth Sentiment Corpus

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages