Views
No views yet
中英文文本质量评分器 | Chinese & English Text Quality Scoring Model 一个基于自研 Transformer 架构的文本质量评估模型,为预训练/微调数据清洗场景设计。模型对输入文本进行 0-5 分的质量评分,分数越高表示文本质量越好。
| 项目 | 说明 |
|---|---|
| 任务 | 文本质量评分 (Text Quality Scoring) |
| 输出 | 0 ~ 5 分的连续质量分数 |
| 架构 | 自定义 Transformer Decoder (非 Transformers 库) |
| 参数量 | 4.8M (轻量级) |
| 支持语言 | 中文、英文 |
| 最大序列长度 | 4096 tokens |
| 量化支持 | FP16 / FP32 / BF16 / INT8 (动态量化) |
| 参数 | 值 |
|---|---|
| Hidden Size | 128 |
| 层数 | 4 |
| 注意力头数 | 4 (Query) / 2 (KV) |
| 头维度 | 32 |
| 中间层维度 | 341 (8/3 × hidden_size) |
| 词表大小 | llama2_tokenizer_32k Tokenizer |
| Dropout | 0.0 |
pip install torch tqdm1from huggingface_hub import hf_hub_download
2import os
3# 下载模型文件
4model_path = hf_hub_download(
5 repo_id="X-Orange/Data_Quality_Scoring_Model",
6 filename="new_model.pth"
7)
8tokenizer_path = hf_hub_download(
9 repo_id="X-Orange/Data_Quality_Scoring_Model",
10 filename="local_tokenizer",
11 local_dir="./tokenizer_cache"
12)1from Classifier_Model import ClassifierModel
2# 初始化模型
3model = ClassifierModel(
4 model_path="new_model.pth", # 模型权重路径
5 tokenizer_path="local_tokenizer", # Tokenizer 路径
6 device="cuda", # cuda / xpu / cpu
7 dtype="fp6" # fp16 / fp32 / bf16 / q8 (INT8量化)
8)
9# 单条或批量评分
10texts = [
11 "量子纠缠是量子力学中的一种现象,当两个或多个粒子相互作用后...",
12 "我觉得量子计算机挺厉害的,听说以后算东西会特别快。不过具体怎么快我也不太清楚...",
13 "量子量子量子的子子子计算机算算算机机机比特特特叠加态态态态态态..."
14]
15scores = model.compute(texts, batch_size=400, max_length=1024)
16for text, score in zip(texts, scores):
17 print(f"Score: {score:.2f} | {text[:40]}...")Score: 2.62 | 量子纠缠是量子力学中的一种现象...
Score: 1.41 | 我觉得量子计算机挺厉害的...
Score: 0.92 | 量子量子量子的子子子计算机...| 分数区间 | 质量等级 | 典型特征 |
|---|---|---|
| 4.5 ~ 5.0 | 优秀 | 专业、连贯、信息密度高、语法正确 |
| 3.5 ~ 4.5 | 良好 | 通顺、有意义、少量瑕疵 |
| 2.5 ~ 3.5 | 一般 | 口语化、信息密度低、部分冗余 |
| 1.0 ~ 2.5 | 较差 | 大量重复、逻辑混乱、严重口语化 |
| 0.0 ~ 1.0 | 垃圾 | 无意义字符、恶意内容、严重乱码 |
data_eval.py 对 JSONL 数据集进行批量过滤:1python data_eval.py \
2 --jsonl_path ./raw_data \
3 --jsonl_key content \
4 --save_path ./filtered_data \
5 --target_score 3 \
6 --batch_size 400 \
7 --max_length 1024 \
8 --model_path new_model.pth \
9 --tokenizer_path local_tokenizer \
10 --device cuda \
11 --dtype q8| 参数 | 默认值 | 说明 |
|---|---|---|
--jsonl_path | sample | 输入 JSONL 文件/文件夹路径 |
--jsonl_key | content | JSON 中待评分的字段名 |
--save_path | save | 输出目录 |
--save_size | 160000 | 每个输出文件的最大行数 |
--batch_size | 400 | 推理批次大小 |
--max_length | 1024 | 最大截断长度 |
--target_score | 3 | 最低保留分数(≥此分数保留) |
--model_path | new_model.pth | 模型权重路径 |
--tokenizer_path | local_tokenizer | llama2_tokenizer_32k 路径 |
--device | cuda | 计算设备 |
--dtype | fp16 | 数据精度 |
| 文件 | 说明 |
|---|---|
new_model.pth | 模型权重 (PyTorch state_dict) |
local_tokenizer/ | llama2_tokenizer_32k Tokenizer 目录 |
model.py | 模型架构定义 (Classifier, TransformerDecoder, GQA, YaRN, GEGLU) |
Classifier_Model.py | 推理封装类 (ClassifierModel) |
data_eval.py | 批量数据过滤脚本 |