Sage: 多语言拼写纠错、文本增强和评估工具包
Sage(Spell checking via Augmentation and Generative distribution Emulation)是一个全面的拼写纠错解决方案,为NLP研究者和开发者提供了一站式服务。该项目由AI-forever团队开发,包含了最先进的预训练模型、数据增强方法以及评估指标,支持多种语言。
主要功能
- 拼写纠错模型
Sage提供了多个基于Transformer的预训练模型用于拼写纠错任务:
- 俄语模型:sage-fredt5-large、sage-fredt5-distilled-95m、sage-m2m100-1.2B等
- 英语模型:T5-large、sage-mt5-large
这些模型在大规模合成错误数据上预训练,并在真实拼写错误数据集上微调,在多个基准测试中取得了优异的性能。
- 文本增强
Sage提供了两种文本增强方法来生成拼写错误:
- SBSC(Statistic-based Spelling Corruption): 基于统计分析真实错误,模拟人类犯错模式
- Augmentex: 基于规则和常见错误的启发式方法
这两种方法都能生成自然的拼写错误,有助于增强训练数据。
- 评估指标
Sage实现了两种评估拼写纠错系统性能的指标:
- ruspelleval: 适用于俄语的评估指标
- ERRANT: 改编自英语的评估框架
这些指标可以计算precision、recall和F1分数,全面评估纠错效果。
使用示例
- 文本增强:
from sage.spelling_corruption import SBSCConfig, SBSCCorruptor
config = SBSCConfig(
reference_dataset_name_or_path="MedSpellchecker",
reference_dataset_split="test"
)
corruptor = SBSCCorruptor.from_config(config)
text = "Заметьте, не я это предложил!"
corrupted = corruptor.corrupt(text, seed=1)
print(corrupted)
# 'Заиетьте, не я эт о пред ложил!'
- 拼写纠错:
from sage.spelling_correction import AvailableCorrectors, T5ModelForSpellingCorruption
corrector = T5ModelForSpellingCorruption.from_pretrained(AvailableCorrectors.sage_fredt5_large.value)
text = "Замтьте не я это предложил"
corrected = corrector.correct(text)
print(corrected)
# ['Заметьте, не я это предложил.']
- 评估:
metrics = corrector.evaluate("RUSpellRU", metrics=["errant", "ruspelleval"])
print(metrics)
# {'Precision': 83.48, 'Recall': 74.75, 'F1': 78.87, ...}
主要优势
- 全面的功能:集成了拼写纠错、数据增强和评估等全流程工具
- 多语言支持:提供了俄语和英语的预训练模型和评估指标
- 先进的性能:在多个基准测试中达到了最优水平
- 易用性:提供了简单直观的API,可快速上手使用
- 可扩展性:支持自定义数据集训练和评估
Sage为拼写纠错任务提供了一站式解决方案,有望推动该领域的研究和应用发展。无论是学术研究还是工业应用,Sage都是一个值得关注的强大工具包。