🚀 精细网络教育FastText分类器
本项目是一个基于FastText的分类器,用于判断网页的教育价值。它借助训练数据 fineweb-edu-llama3-annotations 进行训练,具备两大核心目标:一是实现高吞吐量优化,在CPU上每秒可分类超2000个示例,适用于预训练阶段实时处理海量数据;二是对比FastText轻量级模型与基于Transformer的原模型 HuggingFaceFW/fineweb-edu-classifier 的性能差异。
模型信息
🚀 快速开始
本模型是一个基于FastText的分类器,用于根据训练数据 fineweb-edu-llama3-annotations 判断网页的教育价值。它有两个目标:
FastText方法的灵感来自于我基于不同的教育价值定义独立开发的教育分类器,可在 kenhktsui/llm-data-textbook-quality-fasttext-classifier-v2 找到。
💻 使用示例
基础用法
from typing import List
import re
from huggingface_hub import hf_hub_download
import fasttext
model_hf = fasttext.load_model(hf_hub_download("kenhktsui/fineweb-edu-fasttext-classifier", "model.bin"))
def replace_newlines(text: str) -> str:
return re.sub("\n+", " ", text)
def predict(text_list: List[str]) -> List[dict]:
text_list = [replace_newlines(text) for text in text_list]
pred = model_hf.predict(text_list)
return [{"label": int(l[0].lstrip("__label__")), "score": s[0]}
for l, s in zip(*pred)]
predict(["Hi"])
📊 评估
使用最后46867个样本作为测试数据,但这与 HuggingFaceFW/fineweb-edu-classifier 中的测试数据并不完全相同。
分类报告
精确率 召回率 f1分数 样本数
0 0.72 0.44 0.55 5704
1 0.73 0.87 0.80 26595
2 0.52 0.49 0.50 10350
3 0.48 0.33 0.39 3397
4 0.69 0.03 0.06 819
5 0.00 0.00 0.00 2
准确率 0.68 46867
宏平均 0.52 0.36 0.38 46867
加权平均 0.67 0.68 0.66 46867
下面的表格比较了FastText模型和基于Transformer的模型。
标签0、1、2与原始模型相当。从标签3开始,性能下降开始明显,到标签4时差距进一步扩大,这是由于FastText模型的容量有限。因此,该分类器在标签0、1、2上表现良好,在标签3上也有一定表现,但性能有所下降。
混淆矩阵
[ 2537 3098 65 4 0 0]
[ 944 23037 2491 123 0 0]
真实标签 [ 26 4742 5048 533 1 0]
[ 4 434 1846 1105 8 0]
[ 0 38 213 544 24 0]
[ 0 0 0 0 2 0]
预测标签
该模型的准确率为68%,并且它更倾向于低估教育价值而不是高估。这种保守性对于过滤大量数据很有好处。
预测 - 实际评级 |
频率 |
百分比 |
0 |
31751 |
67.7% |
-1 |
8078 |
17.2% |
+1 |
6130 |
13.1% |
-2 |
673 |
1.4% |
+2 |
189 |
0.4% |
-3 |
42 |
0.1% |
+3 |
4 |
0.0% |
在MiniPile训练集和测试集中,Spearman等级相关系数分别为0.5881和0.5832,这表明在超过100万个具有代表性的网页数据文档中存在中等强度的单调关系。
📄 许可证
本项目采用ODC-BY许可证。