通用文本数据评估算子
5374 字约 18 分钟
2025-06-09
文本质量评估
打分器分为以下四种类型,每种打分器会给出一个或多个分数。
类型 | 数量 | 描述 |
---|---|---|
APIcaller | 3 | 调用API打分 |
Diversity | 2 | 计算整个数据集的多样性得分 |
Models | 12 | 基于模型、分类器打分 |
Statistics | 3 | 统计学指标打分 |
关于数据类型:【文本】表示接受单一字段字符串输入,可适用于预训练或微调数据。【指令】表示仅适用于微调数据多字段格式输入。
开源的算子种类是十分受限的,为了获得更好的数据质量,填补开源缺失的数据评估方法,我们精心设计并自研了新的算子集,其标记含义如下:
- 🚀 自主创新:核心算法原创研发,填补现有算法空白或是进一步提升性能,突破当下性能瓶颈。
- ✨ 开源首发:首次将该算子集成到社区主流框架中,方便更多开发者使用,实现开源共享。
打分器列表
APIcaller
名称 | 评估维度 | 数据类型 | 简介 | 取值范围 | 官方仓库或论文 |
---|---|---|---|---|---|
AlpagasusScorer✨ | 内容准确性与有效性 | 指令 | 通过调用 GPT 评估指令的质量,返回一个质量得分,得分越高表明指令的质量越高。 | [0, 5] | paper |
PerspectiveScorer✨ | 安全性 | 文本 | 使用 PerspectiveAPI 评估文本的毒性,返回毒性概率,得分越高表明文本毒性越高。 | [0, 1] | API |
TreeinstructScore✨ | 多样性与复杂性 | 指令 | 通过生成语法树的节点数来衡量指令复杂性,节点越多表示指令越复杂。 | - | paper |
Diversity
名称 | 评估维度 | 数据类型 | 简介 | 取值范围 | 官方仓库或论文 |
---|---|---|---|---|---|
Task2VecScorer✨ | 多样性与复杂性 | 文本 | 评估数据集的多样性,使用 Task2Vec 方法,高分表示数据集具有较高的多样性。 | [0.0525±3.41E-4, 0.4037±1.932E-5] | paper code |
VendiScorer | 多样性与复杂性 | 文本 | 通过计算 VendiScore 来评估数据集的多样性,得分越高表示多样性越高。 | - | paper code |
Models
名称 | 评估维度 | 数据类型 | 简介 | 取值范围 | 官方仓库或论文 |
---|---|---|---|---|---|
DebertaV3Scorer✨ | 内容准确性与有效性 | 文本 | 基于 Nvidia Deberta V3 模型的质量分类器,用于评估文本质量。 | {Low, Medium, High} | code |
FineWebEduScorer✨ | 教育价值 | 文本 | 用于评估文本教育价值的分类器,高分表示文本具有较高的教育价值。 | [0, 5] | paper code |
InstagScorer✨ | 多样性与复杂性 | 指令 | 通过返回标签的数量来评估指令的内容多样性,标签越多表示内容多样性越大。 | - | paper code |
PerplexityScorer | 流畅性与可理解性 | 文本 | 基于 Kenlm 模型计算文本的困惑度,困惑度越低,文本的流畅性和可理解性越高。 | - | paper code |
QuratingScorer✨ | 内容准确性与有效性、教育价值 | 文本 | 通过 Qurating 模型评估文本的质量,得分越高表示质量越高。 | - | paper code |
PairQualScorer🚀 | 教育价值 | 文本 | 通过 PairQual 模型评估文本的质量,基于bge模型,支持中英双语,使用gpt对文本成对比较打分后训练而成。得分越高表示质量越高。 | - | code |
PresidioScorer✨ | 安全性 | 文本 | 使用Microsoft Presidio模型,识别文本中的私人实体(PII)如信用卡号、姓名、位置等。打分器返回PII信息个数。 | - | code |
SuperfilteringScorer✨ | 流畅性与可理解性 | 指令 | 使用 Superfiltering 方法评估指令的跟随难度,得分越高表示指令越难跟随。 | - | paper code |
TextbookScorer✨ | 教育价值 | 文本 | 基于 FastText 分类器的课本质量分类器,用于评估文本的教育价值。 | [0, 2] | paper code |
DeitaQualityScorer✨ | 内容准确性与有效性 | 指令 | 基于 Llama 模型的 Deita 指令质量评估器,高分表示指令质量较高。 | [1,6] | paper code |
DeitaComplexityScorer✨ | 多样性与复杂性 | 指令 | 基于 Llama 模型的 Deita 指令复杂性评估器,高分表示指令复杂性较高。 | [1,6] | paper code |
RMScorer✨ | 流畅性与可理解性 | 指令 | 基于人类价值判断的奖励模型reward-model-deberta-v3-large-v2质量评分器。高分代表质量较高。 | - | code |
Statistics
名称 | 评估维度 | 数据类型 | 简介 | 取值范围 | 官方仓库或论文 |
---|---|---|---|---|---|
LangkitScorer | 文本结构, 流畅性与可理解性 | 文本 | 使用Langkit工具包计算文本的统计信息,如字数、句子数、音节数等,帮助评估文本的结构复杂性和可读性。 | - | code |
LexicalDiversityScorer✨ | 多样性与复杂性 | 文本 | 使用MTLD和HDD方法计算词汇多样性评分,高分代表更丰富的词汇使用,反映文本的多样性和复杂性。 | - | paper code |
NgramScorer | 多样性与复杂性 | 文本 | 计算文本中n-gram的重复比例,用以衡量文本的重复度,得分越高表示文本中重复的n-gram比例越低。 | [0, 1] | - |
质量评估体系
为提供更精准的数据质量评估,我们根据现有的分类器构架了一套质量评估体系。具体到每个打分器的输出分数指标,包括以下6个维度。
1. 文本结构 (Text Structure)
- LangkitScorer: LangkitSentenceCountScore, LangkitCharacterCountScore, LangkitLetterCountScore, LangkitSyllableCountScore, LangkitPolysyllableCountScore, LangkitMonosyllableCountScore, LangkitLexiconCountScore, LangkitDifficultWordsScore
2. 多样性与复杂性 (Diversity & Complexity)
- LexicalDiversityScorer: LexicalDiversityMTLDScore, LexicalDiversityHD-DScore
- NgramScorer: NgramScore
- InstagScorer: InstagScore
- TreeinstructScorer: TreeinstructScore
- Task2VecScorer: Task2VecDiversityScore (ConfidenceInterval)
- VendiScorer: N-gramsVendiScore, BERTVendiScore, SimCSEVendiScore
- DeitaComplexityScorer: DeitaComplexityScore
3. 流畅性与可理解性 (Fluency & Understandability)
- LangkitScorer: LangkitFleschReadingEaseScore, LangkitAutomatedReadabilityIndexScore, LangkitAggregateReadingLevelScore
- PerplexityScorer: PerplexityScore
- QuratingScorer: QuratingWritingStyleScore
- SuperfilteringScorer: SuperfilteringScore
- RMScorer: RMScore
4. 安全性 (Safety)
- PerspectiveScorer: PerspectiveScore
- PresidioScorer: PresidioScore
5. 教育价值 (Educational Value)
- TextbookScorer: TextbookScore
- FineWebEduScorer: FineWebEduScore
- QuratingScorer: QuratingEducationalValueScore
- PairQualScorer: PairQualScore
6. 内容准确性与有效性 (Content Accuracy & Effectiveness)
- QuratingScorer: QuratingRequiredExpertiseScore, QuratingFactsAndTriviaScore
- DebertaV3Scorer: DebertaV3Score
- AlpagasusScorer: AlpagasusScore
- DeitaQualityScorer: DeitaQualityScore
基准值
为更好的提供数据质量参考,我们根据数据类型从目前认为较高质量的Fineweb和alpaca-cleaned数据集中分别随机选取了5k条数据,并测试了部分打分器的基准值。
打分器名称 | 分数指标名称 | 简介 | 均值 | 方差 | 最大值 | 最小值 |
---|---|---|---|---|---|---|
PerspectiveScorer | PerspectiveScore | 评估文本的毒性,是否含有潜在的侮辱性或不当言论。分数越高毒性越大。 | 0.0426 | 0.0025 | 0.2610 | 0.0026 |
LexicalDiversityScorer | LexicalDiversityMTLDScore | 测量文本的词汇多样性。分数越高词汇多样性越大。 | 100.5990 | 1625.1318 | 1165.7164 | 14.8439 |
LexicalDiversityHD-DScore | 用于衡量文本的词汇多样性,基于离散分布计算。分数越高词汇多样性越大。 | 0.8487 | 0.0014 | 0.9873 | 0.5570 | |
NgramScorer | NgramScore | 计算文本中n-gram的重复比例,用以衡量文本的重复度。分数越高N-gram重复性越低。 | 0.9938 | 0.0002 | 1.0 | 0.8285 |
LangkitScorer | LangkitFleschReadingEaseScore | 衡量文本的Flesch可读性。得分越高表示越易读。 | 55.1870 | 324.8975 | 106.37 | -144.75 |
LangkitAutomatedReadabilityIndexScore | 自动可读性指标,基于句子长度和词汇难度。得分越高表示越难读。 | 11.7727 | 19.4117 | 98.2 | 0.9 | |
LangkitAggregateReadingLevelScore | 综合文本的阅读难度评分。得分越高表示越难读。 | 11.2332 | 13.6816 | 77.0 | 0.0 | |
LangkitSyllableCountScore | 统计文本中音节的总数。得分越高音节数量越大。 | 815.3852 | 2299853.7272 | 43237 | 32 | |
LangkitLexiconCountScore | 统计文本中词汇的总数。得分越高词汇数量越大。 | 524.178 | 1061058.5875 | 33033 | 23 | |
LangkitSentenceCountScore | 统计文本中的句子数量。得分越高句子数量越大。 | 28.9664 | 3618.2549 | 2193 | 1 | |
LangkitCharacterCountScore | 统计文本中的字符数量。得分越高字符数量越大。 | 2610.2462 | 23580442.8820 | 139807 | 118 | |
LangkitLetterCountScore | 统计文本中的字母数量。得分越高字母数量越大。 | 2513.4572 | 21890120.2030 | 134507 | 109 | |
LangkitPolysyllableCountScore | 统计多音节单词的数量。得分越高多音节词数量越大。 | 78.8834 | 18918.1990 | 3261 | 0 | |
LangkitMonosyllableCountScore | 统计单音节单词的数量,通常与文本的简易度相关。得分越高单音节词数量越大。 | 334.6674 | 503285.5160 | 25133 | 13 | |
LangkitDifficultWordsScore | 统计文本中难词的数量。得分越高难词数量越大。 | 93.4112 | 14401.2789 | 2366 | 4 | |
TextbookScorer | TextbookScore | 测试文本是否符合教科书标准。得分越高文本越接近理想教材。 | 0.9255 | 0.1779 | 1.9867 | 0.0001 |
FineWebEduScorer | FineWebEduScore | 测量文本的教育价值。得分越高文本教育价值越大。 | 1.1901 | 0.4924 | 4.6827 | -0.6319 |
DebertaV3Scorer | DebertaV3Score | 使用DebertaV3模型进行的文本评估。评估质量得分按高、中、低分类。 | Medium: 3180 次 | - | High: 1412 次 | Low: 408 次 |
PerplexityScorer | PerplexityScore | 衡量文本的困惑度。得分越高模型困惑度越大。 | 564.3942 | 165893.5542 | 8271.0 | 13.9 |
QuratingScorer | QuratingWritingStyleScore | 评估文本的写作风格是否良好。得分越高文本写作风格越好。 | 0.6453 | 6.7949 | 8.375 | -7.3474 |
QuratingRequiredExpertiseScore | 衡量文本需要的专业知识水平。得分越高文本越需要专业知识。 | -0.4661 | 7.0458 | 9.0 | -8.25 | |
QuratingFactsAndTriviaScore | 测试文本是否包含事实和趣闻。得分越高文本包含的事实和趣闻越多。 | 0.1889 | 4.5678 | 7.4688 | -6.0993 | |
QuratingEducationalValueScore | 衡量文本的教育价值。得分越高文本教育价值越大。 | 1.2946 | 11.2196 | 11.5625 | -8.7843 | |
InstagScorer | InstagScore | 通过返回标签的数量来评估指令的内容多样性。得分越高内容多样性越大。 | 2.304 | 2.9396 | 11 | 1 |
SuperfilteringScorer | SuperfilteringScore | 使用 Superfiltering 方法评估指令的跟随难度。得分越高指令跟随难度越大。 | 1.3223 | 836.0302 | 1978.6534 | 0.0011 |
DeitaQualityScorer | DeitaQualityScore | 基于 Llama 模型的 Deita 指令质量评估器。得分越高指令质量越好。 | 3.5629 | 0.9247 | 5.5309 | 1.0840 |
DeitaComplexityScorer | DeitaComplexityScore | 基于 Llama 模型的 Deita 指令复杂性评估器。得分越高指令复杂性越大。 | 1.4936 | 0.2086 | 3.3207 | 1.0001 |
VendiScorer | N-grams_VendiScore | 基于N-grams嵌入评估文本多样性得分。得分越高数据集多样性越大。 | 1832.96 | - | - | - |
BERT_VendiScore | 基于BERT嵌入评估文本多样性得分。得分越高数据集多样性越大。 | 1.83 | - | - | - | |
SimCSE_VendiScore | 基于SimCSE嵌入计算文本多样性得分。得分越高数据集多样性越大。 | 68.94 | - | - | - | |
Task2VecScorer | Task2VecScore | 使用Task2Vec多样性系数评估数据集多样性。得分越高数据集多样性越大。 | 0.0673 | - | - | - |
AlpagasusScorer | AlpagasusScore | 调用ChatGPT评估指令质量得分。得分越高指令质量越好。 | 4.172 | 0.2164 | 5.0 | 2.0 |
TreeinstructScorer | TreeinstructScore | 调用ChatGPT评估指令语义复杂度。得分越高指令语义复杂度越高。 | 6.494 | 9.7540 | 63.0 | 0.0 |
PresidioScorer | PresidioScore | 使用Presidio评估PII个数。得分越高文本含义PII信息越多。 | 21.4008 | 2915.3542 | 1786.0 | 0.0 |
RMScorer | RMScore | 使用基于人类价值的奖励模型评估SFT数据质量得分越高数据质量越高。 | 3.1537 | 9.9461 | 8.6803 | -4.9680 |
生成文本质量评估
Dataflow集成了三种生成文本质量评估方法,用于评估生成文本和参考文本之间的相似性。
打分器名称 | 简介 | 取值范围 | 值解释 |
---|---|---|---|
BLEU Scorer | 基于 n-gram 匹配的精确度计算,将生成文本中的 n-gram 与参考文本中的 n-gram 进行匹配并计算精确度 | [0, 1] | 值越大,表示生成文本与参考文本的匹配程度越高 |
CIDEr Scorer | 利用 TF-IDF 加权的 n-gram 统计,将生成文本的描述与参考描述进行相似性比较 | [0, 1] | 值越大,表示生成文本与参考文本在内容上越一致 |
BertScorer | 使用 Bert 模型计算生成文本与参考文本的词向量相似性,输出精确度、召回率和 F1 分数 | [0, 1] | 值越大,表示生成文本与参考文本在语义上越相似 |