statement-type-classification-based-on-lora

8 downloads 0 likes on ModelScope updated

Model card

基于 Qwen3.5-0.8B LoRA 的中文陈述类型分类

本项目用于部署 statement_type 三分类 LoRA 模型。输入一条上游抽取或改写后的候选记忆陈述,输出该陈述属于:

  • FACT:事实性陈述
  • OPINION:观点、评价、态度或感受
  • OTHER:无效片段、寒暄、纯指令、纯疑问、格式噪声或不可沉淀陈述

模型文件说明

当前仓库中的 model/ 目录保存的是 LoRA adapter,不是完整的 Qwen 基座模型。因此运行时还需要额外准备 Qwen3.5-0.8B 基座模型文件。

推荐目录结构:

statement_type_lora/
├── main.py
├── README.md
├── model/              # LoRA adapter
└── Qwen3.5_0.8B/        # 可选:本地 Qwen3.5-0.8B 基座模型

如果基座模型不放在当前目录下,可以通过环境变量指定:

PowerShell:

$env:QWEN_BASE_MODEL="你的Qwen3.5-0.8B基座模型路径"

Windows cmd:

set QWEN_BASE_MODEL=你的Qwen3.5-0.8B基座模型路径

也可以通过 MODEL_PATH 指定 LoRA adapter 路径:

PowerShell:

$env:MODEL_PATH="你的LoRA-adapter路径"

Windows cmd:

set MODEL_PATH=你的LoRA-adapter路径

输入格式

最常用输入是一条 statement_text:

{
  "statement_text": "我觉得这个方案不错。"
}

main.py 的 predict 方法也支持可选上下文:

result = service.predict(
    statement_text="用户觉得这个方案不错。",
    context="用户刚体验了新版页面,并反馈整体流程比较顺。"
)

如果不传 context,模型只根据 statement_text 判断。

输出格式

{
  "predicted_label": "OPINION",
  "probabilities": {
    "FACT": 0.0123,
    "OPINION": 0.9812,
    "OTHER": 0.0065
  },
  "logits": {
    "FACT": 1.2345,
    "OPINION": 5.6789,
    "OTHER": 0.9876
  }
}

推理逻辑

该模型采用 Qwen next-token 三分类方式,而不是 BERT 分类头:

  • 0 -> FACT
  • 1 -> OPINION
  • 2 -> OTHER

推理时,main.py 会构造和训练脚本一致的 chat prompt,然后读取最后一个位置上 0/1/2 三个 token 的 logit,并通过 softmax 得到三类概率。

快速测试

python main.py

默认测试文本:

我觉得这个方案不错。

代码调用

from main import StatementTypeLoraService

service = StatementTypeLoraService()
result = service.predict("客户是网球AI设备公司负责人。")
print(result)

如果基座模型在其他位置:

from main import StatementTypeLoraService

service = StatementTypeLoraService(
    base_model_dir="你的Qwen3.5-0.8B基座模型路径"
)
result = service.predict("用户认为网页设计得还不错。")
print(result)

分类效果

在私有 statement_type 测试集上,Qwen3.5-0.8B-LoRA 的表现如下:

指标 数值
Accuracy 0.8864
Macro-F1 0.8510
正确数 / 总数 913 / 1030

各类别 F1:

标签 Precision Recall F1
FACT 0.9158 0.9398 0.9276
OPINION 0.8450 0.8086 0.8264
OTHER 0.8182 0.7803 0.7988

依赖

torch
transformers
peft

如果运行时报找不到基座模型,请确认已经准备完整 Qwen3.5-0.8B 文件,包括:

  • config.json
  • tokenizer.json 或 tokenizer 相关文件
  • 模型权重文件

并通过 QWEN_BASE_MODEL 指向该目录。