语言:
- 俄语
许可证: MIT
库名称: transformers
标签:
- 拼写检查
- PyTorch
- 自然语言生成
评估指标:
- 精确率
- 召回率
- F1值
模型索引:
- 名称: sage-fredt5-large
结果:
- 任务:
类型: 文本生成
数据集:
名称: RUSpellRU (拼写&标点)
类型: 拼写检查基准
指标:
- 类型: 拼写F1
值: 88.2
名称: F1 (拼写)
已验证: 否
- 类型: 标点F1
值: 88.4
名称: F1 (标点)
已验证: 否
- 类型: 大小写F1
值: 95.6
名称: F1 (大小写)
已验证: 否
- 类型: 拼写F1
值: 79.6
名称: F1 (拼写)
已验证: 否
- 类型: 标点F1
值: 68.8
名称: F1 (标点)
已验证: 否
- 类型: 大小写F1
值: 80.5
名称: F1 (大小写)
已验证: 否
- 类型: 拼写F1
值: 72.4
名称: F1 (拼写)
已验证: 否
- 类型: 标点F1
值: 72.0
名称: F1 (标点)
已验证: 否
- 类型: 大小写F1
值: 76.6
名称: F1 (大小写)
已验证: 否
- 类型: 拼写F1
值: 62.7
名称: F1 (拼写)
已验证: 否
- 类型: 标点F1
值: 41.4
名称: F1 (标点)
已验证: 否
- 类型: 大小写F1
值: 38.1
名称: F1 (大小写)
已验证: 否
sage-v1.1.0

概述
该模型通过将文本中的所有单词规范为俄语标准形式,纠正拼写、标点错误和打字错误。纠错器基于FRED-T5-1.7B模型训练而成。训练语料库采用了包含“人工”错误的广泛数据集:该数据集基于俄语维基百科和俄语视频转录文本构建,然后使用SAGE库自动引入打字错误和拼写错误。
公开参考
示例
输入 |
输出 |
И не чсно прохожим в этот день непогожйи почему я веселый такйо |
对路人来说,这个阴郁的日子并不明朗,为什么我如此快乐。 |
Каждй день воттак делой, и спена балеть нибудет. А вотак каждый день ниделай |
每天这样做,背就不会疼。而每天那样做可不行。 |
Основая цель мероприятия практическая отработка навыков по оказанию помощи гражданам, попавшим в ДТП а также повышение и совершенствование уровня профессиональной подготовки сотрудников МЧС при проведении аварийно-спасательных работ по ликвидации последствий дорожно-транспортных проишествий сокращение временных показателей реагирования. |
活动的主要目标是实际演练援助交通事故公民的技能,同时提高和完善紧急情况部人员在开展事故救援工作中消除道路交通事故后果的专业水平,缩短响应时间指标。 |
评估指标
质量
以下是用于确定拼写检查器正确性的自动评估指标。我们将我们的解决方案与开源自动拼写检查器以及ChatGPT系列模型在四个可用数据集上进行比较:
- RUSpellRU:从LiveJournal收集的文本,包含手动修正的打字错误和拼写错误;
- MultidomainGold:来自7种文本来源的示例,包括开放网络、新闻、社交媒体、评论、字幕、政策文件和文学作品;
- MedSpellChecker:来自医疗病历的错误文本;
- GitHubTypoCorpusRu:GitHub提交中的拼写错误和打字错误;
RUSpellRU
模型 |
精确率 (拼写) |
召回率 (拼写) |
F1 (拼写) |
精确率 (标点) |
召回率 (标点) |
F1 (标点) |
精确率 (大小写) |
召回率 (大小写) |
F1 (大小写) |
sage-v1.1.0 |
90.3 |
86.3 |
88.2 |
90.3 |
86.6 |
88.4 |
95.2 |
95.9 |
95.6 |
sage-fredt5-large |
57.3 |
68.0 |
62.2 |
86.7 |
46.1 |
60.2 |
92.1 |
67.8 |
78.1 |
sage-fredt5-large (微调) |
88.4 |
80.9 |
84.5 |
88.2 |
85.3 |
86.8 |
95.5 |
94.0 |
94.7 |
gpt-3.5-turbo |
33.6 |
58.5 |
42.7 |
85.9 |
64.6 |
73.7 |
84.9 |
73.9 |
79.0 |
gpt-4 |
54.9 |
76.7 |
64.0 |
84.0 |
82.3 |
83.2 |
91.5 |
90.2 |
90.9 |
MultidomainGold
模型 |
精确率 (拼写) |
召回率 (拼写) |
F1 (拼写) |
精确率 (标点) |
召回率 (标点) |
F1 (标点) |
精确率 (大小写) |
召回率 (大小写) |
F1 (大小写) |
sage-v1.1.0 |
81.6 |
77.7 |
79.6 |
70.2 |
67.5 |
68.8 |
80.5 |
80.5 |
80.5 |
sage-fredt5-large |
43.4 |
49.7 |
46.3 |
21.8 |
21.3 |
21.6 |
58.8 |
23.9 |
34.0 |
sage-fredt5-large (微调) |
80.3 |
75.1 |
77.6 |
69.0 |
66.5 |
67.7 |
78.6 |
80.0 |
79.3 |
gpt-3.5-turbo |
18.8 |
48.1 |
27.1 |
42.0 |
31.8 |
36.2 |
47.1 |
51.3 |
49.1 |
gpt-4 |
25.4 |
68.0 |
37.0 |
57.8 |
54.3 |
56.0 |
54.0 |
67.5 |
60.0 |
MedSpellChecker
模型 |
精确率 (拼写) |
召回率 (拼写) |
F1 (拼写) |
精确率 (标点) |
召回率 (标点) |
F1 (标点) |
精确率 (大小写) |
召回率 (大小写) |
F1 (大小写) |
sage-v1.1.0 |
71.3 |
73.5 |
72.4 |
75.1 |
69.2 |
72.0 |
80.9 |
72.8 |
76.6 |
sage-fredt5-large |
35.2 |
54.5 |
42.8 |
19.2 |
13.2 |
15.7 |
48.7 |
36.8 |
41.9 |
sage-fredt5-large (微调) |
72.5 |
72.2 |
72.3 |
74.6 |
66.4 |
70.3 |
79.3 |
85.1 |
82.1 |
gpt-3.5-turbo |
14.7 |
45.9 |
22.3 |
69.9 |
52.3 |
59.8 |
26.4 |
41.8 |
32.3 |
gpt-4 |
37.8 |
72.3 |
49.6 |
81.4 |
64.3 |
71.9 |
73.0 |
62.1 |
67.1 |
GitHubTypoCorpusRu
模型 |
精确率 (拼写) |
召回率 (拼写) |
F1 (拼写) |
精确率 (标点) |
召回率 (标点) |
F1 (标点) |
精确率 (大小写) |
召回率 (大小写) |
F1 (大小写) |
sage-v1.1.0 |
70.8 |
56.3 |
62.7 |
48.9 |
35.8 |
41.4 |
32.9 |
45.3 |
38.1 |
sage-fredt5-large |
46.0 |
46.6 |
46.3 |
22.7 |
18.3 |
20.2 |
12.0 |
13.2 |
12.6 |
sage-fredt5-large (微调) |
67.5 |
53.2 |
59.5 |
48.5 |
38.0 |
42.6 |
37.3 |
50.0 |
42.7 |
gpt-3.5-turbo |
23.7 |
38.7 |
29.4 |
37.6 |
23.3 |
28.7 |
19.6 |
35.9 |
25.3 |
gpt-4 |
27.0 |
52.8 |
35.7 |
45.9 |
32.6 |
38.2 |
25.7 |
36.8 |
30.2 |
使用方法
import re
import torch
from transformers import AutoTokenizer, T5ForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained("ai-forever/FRED-T5-1.7B")
model = T5ForConditionalGeneration.from_pretrained("ai-forever/sage-v1.1.0")
model.to('cuda')
tokenizer_config = {
'max_length': None,
'padding': 'longest',
'truncation': False,
"return_tensors": "pt",
}
def inference(sentence):
text = "<LM>" + sentence
with torch.inference_mode():
encodings = tokenizer(text, **tokenizer_config)
for k, v in encodings.items():
encodings[k] = v.to('cuda:0')
res = model.generate(
**encodings,
use_cache=True,
max_length = encodings['input_ids'].size(1) * 1.5
)
res = res.cpu().tolist()
res = tokenizer.batch_decode(res, skip_special_tokens=True)
return res
text = 'Првет какдила'
text = re.sub(r'\n+', '\n', text)
print(inference(text))
资源