

Открытое решение для коррекции орфографии из библиотеки SAGE
Модели-корректоры
- ruM2M100-1.2B;
- ruM2M100-418M;
- FredT5-large;
- T5-large;
- 🔥 Сервис “Генеративная проверка орфографии”;
Возможности
Модель исправляет орфографические ошибки и опечатки путём приведения всех слов в тексте к норме русского языка.
Корректор был обучен на основе модели FredT5-large. В качестве обучающего корпуса был взят обширный датасет с “искусственными” ошибками: корпус был собран на основе русскоязычной википедии и транскриптов русскоязычных видео, затем в него автоматически внедрили опечатки и орфографические ошибки с помощью функционала библиотеки SAGE.
Преимущества нашего решения
Устойчивость к высокой плотности ошибок
Во время обучения, модели на “вход” подавались пары текстов, где один из текстов содержал ошибки и опечатки, а второй был корректным. При формировании текстов с ошибками, мы добавляли в 10 раз больше ошибок, чем в среднем содержится в предложениях, чтобы модель умела исправлять даже самые запутанные случаи, как, например, такой:
Думю ешцъа лет череа 10 ретроспективно просматривотьэ то будкетцц мне невероя тна ин те р но
Устойчивость к текстам из разных источников
Обучающий корпус для модели был собран из нескольких текстовых доменов:
- Русскоязычная википедия;
- Транскрипты видео;
Статьи из википедии и тексты видео покрывают широкий спектр возможных словоформ, с которыми модель может столкнутся во время работы.
Статьи и выступления
- Рассказ про библиотеку SAGE, DataFest 2023
- Статья про методы генерации синтетических ошибок, Dialogue 2023
- Статья про SAGE и наше лучшее решение, Review EACL 2024
Примеры работы
*Примеры приведены с дефолтными параметрами генерации
На входе | На выходе |
---|---|
Думю ешцъа лет череа 10 ретроспективно просматривотьэ то будкетцц мне невероя тна ин те р но | Думаю еще лет через 10 ретроспективно просматривать это будет мне невероятно интересно. Думаю это лет через 10 ретроспективно просматривать это будет мне невероятно интересно. |
Основая цель мероприятия - практическая отработка навыков по оказанию помощи гражданам, попавшим в ДТП, а также повышение и совершенствование уровня профессиональной подготовки сотрудников МЧС при проведении аварийно-спасательных работ по ликвидации последствий дорожно-транспортных проишествий, сокращение временных показателей реагирования. | Основная цель мероприятия - практическая отработка навыков по оказанию помощи гражданам, попавшим в ДТП, а также повышение и совершенствование уровня профессиональной подготовки сотрудников МЧС при проведении аварийно-спасательных работ по ликвидации последствий дорожно-транспортных происшествий, сокращение временных показателей реагирования. Основная цель мероприятия |
прийдя в МГТУ я был удивлен никого необноружив там… | прийдя в МГТУ я был удивлен никого не обнаружив там.. «при |
Метрики
Качество
Ниже представлены автоматические метрики для определения корректности работы спелл-чекеров. Мы приводим сравнение нашего решения как с открытыми автоматическими спелл-чекерами, так и с семейством моделей ChatGPT на всех четырёх имеющихся датасетах:
- RUSpellRU: тексты, собранные из ЖЖ (ЖивойЖурнал), с вручную исправленными опечатками и ошибками;
- MultidomainGold: примеры из 7 текстовых источников, включая открытый интернет, новости, социальные сети, отзывы, субтитры, стратегические документы и литературные произведения;
- MedSpellChecker: тексты с ошибками из медицинских анамнезов;
- GitHubTypoCorpusRu: орфографические ошибки и опечатки в коммитах на GitHub;
RUSpellRU
Модель | Precision | Recall | F1 |
---|---|---|---|
FredT5-large-spell | 58.5 | 42.4 | 49.2 |
ChatGPT gpt-3.5-turbo-0301 | 55.8 | 75.3 | 64.1 |
ChatGPT gpt-4-0314 | 57.0 | 75.9 | 63.9 |
ChatGPT text-davinci-003 | 55.9 | 75.3 | 64.2 |
Yandex.Speller | 83.0 | 59.8 | 69.5 |
JamSpell | 42.1 | 32.8 | 36.9 |
HunSpell | 31.3 | 34.9 | 33.0 |
MultidomainGold
Модель | Precision | Recall | F1 |
---|---|---|---|
FredT5-large-spell | 42.5 | 42.0 | 42.2 |
ChatGPT gpt-3.5-turbo-0301 | 33.8 | 72.1 | 46.0 |
ChatGPT gpt-4-0314 | 34.0 | 73.2 | 46.4 |
ChatGPT text-davinci-003 | 33.6 | 72.0 | 45.8 |
Yandex.Speller | 52.9 | 51.4 | 52.2 |
JamSpell | 25.7 | 30.6 | 28.0 |
HunSpell | 16.2 | 40.1 | 23.0 |
MedSpellChecker
Модель | Precision | Recall | F1 |
---|---|---|---|
FredT5-large-spell | 37.2 | 51.7 | 43.3 |
ChatGPT gpt-3.5-turbo-0301 | 53.2 | 67.6 | 59.6 |
ChatGPT gpt-4-0314 | 54.2 | 69.4 | 60.9 |
ChatGPT text-davinci-003 | 47.8 | 68.4 | 56.3 |
Yandex.Speller | 80.6 | 47.8 | 60.0 |
JamSpell | 24.6 | 29.7 | 26.9 |
HunSpell | 10.3 | 40.2 | 16.4 |
GitHubTypoCorpusRu
Модель | Precision | Recall | F1 |
---|---|---|---|
FredT5-large-spell | 52.7 | 41.7 | 46.6 |
ChatGPT gpt-3.5-turbo-0301 | 43.8 | 57.0 | 49.6 |
ChatGPT gpt-4-0314 | 45.2 | 58.2 | 51.0 |
ChatGPT text-davinci-003 | 46.5 | 58.1 | 51.7 |
Yandex.Speller | 67.7 | 37.5 | 48.3 |
JamSpell | 49.5 | 29.9 | 37.3 |
HunSpell | 28.5 | 30.7 | 29.6 |
Инструкции по использованию
Использовать модель можно следующим образом:
from transformers import T5ForConditionalGeneration, AutoTokenizer
path_to_model = "<path_to_model>"
model = T5ForConditionalGeneration.from_pretrained(path_to_model)
tokenizer = AutoTokenizer.from_pretrained(path_to_model, eos_token="</s>")
prefix = "Исправь: "
sentence = "прийдя в МГТУ я был удивлен никого необноружив там…"
sentence = prefix + sentence
encodings = tokenizer(sentence, return_tensors="pt")
generated_tokens = model.generate(
**encodings, eos_token_id=tokenizer.eos_token_id, early_stopping=True)
answer = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)
print(answer)
# ["прийдя в МГТУ я был удивлен никого не обнаружив там.. «при"]
Ресурсы
- Код библиотеки SAGE с методами аугментации, доступом к датасетам и открытым моделям, GitHub
- ruM2M100-1.2B, HuggingFace
- ruM2M100-418M, HuggingFace
- FredT5-large-spell, HuggingFace
- T5-large-spell, HuggingFace
Лицензирование
Модель FredT5-large, на основе которой сделано наше решение, и её исходный код поставляются на основе лицензии APACHE-2.0. Наше решение поставляется на основе лицензии MIT.
Технические характеристики
- Размер файлов: 3.5 Gb;
- Фреймворк: pytorch
- Tags: spellchecking проверка орфографии NLP FredT5 pytorch natural language generation
- Формат: AI Service
- Версия: v1.0
- Разработчик: SberDevices, AGI NLP