% ============================================================
\section{CompanionRisk-Bench 数据集}
\label{sec:dataset}
% ============================================================

\subsection{总体概览}

CompanionRisk-Bench是本文构建的首个专注于情感陪伴AI
输出侧安全风险的中文评测数据集。
数据集包含\textbf{9,896条}多轮对话样本，
全面覆盖10个一级风险类别和14个细粒度标签，
划分为训练集（6,926条）、验证集（1,484条）和测试集（1,486条）。

\subsection{数据来源与构成}

数据集由以下四个来源构成，如表\ref{tab:dataset_sources}所示。

\begin{table}[ht]
\centering
\caption{CompanionRisk-Bench数据来源}
\label{tab:dataset_sources}
\begin{tabular}{llrl}
\toprule
来源 & 类型 & 条数 & 说明 \\
\midrule
LLM核心生成集 & 自建（中文） & 8,000 & Qwen2.5-72B生成，10类风险+安全样本 \\
弱标签专项集 & 自建（中文） & 1,083 & 针对3类高漏检标签的定向生成增强 \\
Human-AI自伤对话集 & 公开数据改造 & 393 & 真实人-AI多轮对话，R1危机类 \\
CoSafe数据集 & 公开数据改造 & 420 & 多类别对话安全，用于泛化验证 \\
\midrule
\textbf{合计} & & \textbf{9,896} & \\
\bottomrule
\end{tabular}
\end{table}

\subsubsection{LLM生成核心集}

使用Qwen2.5-72B（通过SiliconFlow API调用）生成8,000条中文
情感陪伴多轮对话。
每条样本包含4个字段：
（1）AI角色设定（Persona），描述AI的性格、关系类型、风险倾向；
（2）多轮对话历史（History，平均5-8轮）；
（3）当前用户输入；
（4）待检测的AI当前回复。

生成采用\textit{四阶段对话结构}：
关系建立（2-4轮）→ 情绪表达（2-3轮）→ 高风险触发（1-2轮）→ AI响应生成（1轮），
确保高风险样本在自然对话流中出现，而非人为触发。

生成后由独立LLM（GPT-4o）依据CompanionRisk Taxonomy的rubric进行预标注，
输出风险二分类标签（$y_\text{risk}$）、风险等级（$l_\text{risk}$）、
一级类别（$c_\text{primary}$）、细粒度标签集合（$c_\text{fine}$）、
推荐干预动作（$a_\text{recommend}$）及置信度评分。

\subsubsection{弱标签专项集}

针对LLM生成时难以自然覆盖的三类标签——
FalseReassurance（虚假安慰）、PseudoTherapy（伪治疗）、
IsolationReinforcement（隔离强化），
额外定向生成1,083条专项样本，补充训练集中这三类标签的覆盖不足。

\subsubsection{公开数据改造}

引入393条Human-AI Suicide Risk Dataset（英文，R1危机类），
经翻译适配后用于增强R1类的泛化性验证。
引入420条CoSafe数据集作为跨来源的泛化验证子集。

\subsection{标注体系与质量控制}

每条样本的标注字段如下：

\begin{itemize}
    \item $y_\text{risk} \in \{0,1\}$：是否高风险（二分类）
    \item $l_\text{risk} \in \{0,1,2,3,4\}$：风险等级（5级）
    \item $c_\text{primary} \in \{R1,...,R10\}$：一级主类别（单标签）
    \item $c_\text{fine} \subseteq C_\text{fine}$：细粒度标签集合（多标签）
    \item $a_\text{recommend} \in \{\text{PASS, WARN, REWRITE, REJECT, CRISIS}\}$：推荐干预动作
    \item rationale：标注依据（自然语言说明）
\end{itemize}

\textbf{质量控制流程：}
LLM预标注置信度低于阈值（0.7）的样本标记为"需人工复核"，
高风险样本（$l_\text{risk} \geq 3$）全部经过人工二次审核，
中低风险样本随机抽取30\%进行人工验证。
对话结构不完整（轮次不足3轮）、AI回复过短（少于30字）、
标注与rationale明显矛盾的样本被过滤。

\subsection{数据集统计}

\subsubsection{风险等级分布}

测试集（$n=1,486$）的风险等级分布如表\ref{tab:level_dist}所示。

\begin{table}[ht]
\centering
\caption{测试集风险等级分布（$n=1,486$）}
\label{tab:level_dist}
\begin{tabular}{lrrl}
\toprule
风险等级 & 条数 & 占比 & 推荐干预 \\
\midrule
L0（安全） & 237 & 15.9\% & PASS \\
L1（轻微） & 280 & 18.8\% & PASS / WARN \\
L2（中风险） & 317 & 21.3\% & WARN / REWRITE \\
L3（高风险） & 456 & 30.7\% & REWRITE / REJECT \\
L4（严重） & 196 & 13.2\% & REJECT / CRISIS \\
\midrule
高风险合计（L3+L4） & 652 & 43.9\% & \\
\bottomrule
\end{tabular}
\end{table}

\subsubsection{细粒度标签覆盖}

全部14个细粒度标签在训练集中均有至少300条覆盖，
其中RiskNormalization（1,235条）、DirectEncouragement（921条）、
FalseReassurance（905条）覆盖最多。
所有标签均满足至少30条的最低覆盖阈值，确保模型可学习。

\subsubsection{泛化性验证子集}

从393条真实人-AI对话数据（Human-AI自伤对话集）中
抽取独立评估子集（human subset），
用于验证检测器在非同源数据上的泛化能力。
Module B在该子集上的binary F1为0.9848，
确认结果不来自数据同源过拟合（详见第\ref{sec:moduleB}节）。
