Text Generation
Transformers
Safetensors
Russian
qwen3
spell-correction
spelling-correction
punctuation-restoration
grammatical-error-correction
russian
lora
conversational
text-generation-inference
Instructions to use melsmm/Spell-Corrector-RU-4B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use melsmm/Spell-Corrector-RU-4B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="melsmm/Spell-Corrector-RU-4B") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForMultimodalLM tokenizer = AutoTokenizer.from_pretrained("melsmm/Spell-Corrector-RU-4B") model = AutoModelForMultimodalLM.from_pretrained("melsmm/Spell-Corrector-RU-4B") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use melsmm/Spell-Corrector-RU-4B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "melsmm/Spell-Corrector-RU-4B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "melsmm/Spell-Corrector-RU-4B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/melsmm/Spell-Corrector-RU-4B
- SGLang
How to use melsmm/Spell-Corrector-RU-4B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "melsmm/Spell-Corrector-RU-4B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "melsmm/Spell-Corrector-RU-4B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "melsmm/Spell-Corrector-RU-4B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "melsmm/Spell-Corrector-RU-4B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use melsmm/Spell-Corrector-RU-4B with Docker Model Runner:
docker model run hf.co/melsmm/Spell-Corrector-RU-4B
File size: 8,600 Bytes
c8fa2d3 c388d55 a5dc4e1 c388d55 a5dc4e1 c388d55 a5dc4e1 c388d55 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | ---
license: apache-2.0
language:
- ru
base_model:
- RefalMachine/RuadaptQwen3-4B-Instruct
datasets:
- melsmm/spell-correction-ru
- ai-forever/spellcheck_punctuation_benchmark
pipeline_tag: text-generation
library_name: transformers
tags:
- spell-correction
- spelling-correction
- punctuation-restoration
- grammatical-error-correction
- russian
- qwen3
- lora
---
# Spell-Corrector-RU-4B
**Spell-Corrector-RU-4B** — языковая модель для **автоматического исправления орфографических, пунктуационных и регистровых ошибок** в русскоязычных текстах.
Модель дообучена на базе [`RefalMachine/RuadaptQwen3-4B-Instruct`](https://huggingface.co/RefalMachine/RuadaptQwen3-4B-Instruct) (адаптированная под русский язык версия [`Qwen/Qwen3-4B-Instruct-2507`](https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507)) методом **LoRA** в фреймворке [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory). LoRA-адаптер уже **смержен** с базовой моделью — её можно использовать напрямую.
📦 **Код, ноутбуки и полное описание проекта:** [github.com/melsmm/llm-spell-corrector](https://github.com/melsmm/llm-spell-corrector)
📚 **Датасеты для обучения:** [`melsmm/spell-correction-ru`](https://huggingface.co/datasets/melsmm/spell-correction-ru)
## Для чего модель
Модель принимает текст с ошибками и возвращает его исправленную версию. Она умеет:
- 🔤 исправлять **орфографические** ошибки и опечатки;
- ❓ восстанавливать и исправлять **пунктуацию**;
- 🔠 восстанавливать **регистр** букв (заглавные/строчные) и букву «ё».
Основное преимущество перед существующими решениями (например, [SAGE](https://github.com/ai-forever/sage) на архитектуре T5) — **высокая скорость инференса** (через [vLLM](https://github.com/vllm-project/vllm), ~в 6 раз быстрее), простота внедрения в продакшен через OpenAI-совместимый API и лёгкость дообучения под новые домены с помощью LoRA.
## На чём обучалась
Обучение проходило в **две стадии**:
| Стадия | Датасет | Объём | Описание |
| --- | --- | --- | --- |
| **Stage 1** | `synth_spell_correction_1m` | ~1 млн | Синтетические ошибки, внесённые в чистые корпусы (`nerus`, `gazeta`, `wikipedia`) с помощью [SAGE](https://github.com/ai-forever/sage) (`SBSC`, `CharAug`, `WordAug`) и собственного алгоритма пунктуационной порчи. |
| **Stage 2** | `spell_correction_30k` | ~30 тыс. | Объединение готовых пар «ошибка → исправление» из открытых датасетов (RUSpellRU, MultidomainGold, GEC). |
Сначала модель учится на большом объёме разнообразных синтетических ошибок, затем «дошлифовывается» на меньшем, но более качественном наборе реальных пар. Оба датасета доступны в репозитории [`melsmm/spell-correction-ru`](https://huggingface.co/datasets/melsmm/spell-correction-ru).
**Гиперпараметры LoRA:** rank=32, alpha=64, dropout=0, bf16, cutoff length=4000.
## Использование
### Промпт
Модель ожидает следующий формат запроса:
```
Исходный текст:
{текст с ошибками}
Отредактируй исходный текст, исправив ошибки.
```
Рекомендуемые параметры генерации: `temperature=0.1`, `top_p=0.7`.
### Через `transformers`
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "melsmm/Spell-Corrector-RU-4B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype="auto", device_map="auto")
text = "привет как дила, что делаеш севодня"
prompt = f"Исходный текст:\n{text}\n\nОтредактируй исходный текст, исправив ошибки."
messages = [{"role": "user", "content": prompt}]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, temperature=0.1, top_p=0.7, do_sample=True)
print(tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True))
```
### Через vLLM (рекомендуется для продакшена)
Запуск OpenAI-совместимого сервера:
```bash
vllm serve melsmm/Spell-Corrector-RU-4B \
--gpu-memory-utilization 0.95 \
--host 0.0.0.0 \
--port 9900 \
--served-model-name spell_correction \
--max-model-len 4096
```
Обращение к серверу:
```python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:9900/v1", api_key="EMPTY")
text = "привет как дила"
resp = client.chat.completions.create(
model="spell_correction",
messages=[{"role": "user", "content":
f"Исходный текст:\n{text}\n\nОтредактируй исходный текст, исправив ошибки."}],
temperature=0.1,
top_p=0.7,
)
print(resp.choices[0].message.content)
```
## Качество
Оценка на бенчмарке [`ai-forever/spellcheck_punctuation_benchmark`](https://huggingface.co/datasets/ai-forever/spellcheck_punctuation_benchmark) (F1 по орфографии / пунктуации / регистру):
### RUSpellRU
| Model | F1 (spell) | F1 (punc) | F1 (case) |
| --- | --: | --: | --: |
| **Spell-Corrector-RU-4B** | 64.7 | 84.5 | 94.2 |
| sage-fredt5-large | 84.5 | 86.8 | 94.7 |
| gpt-4 | 64.0 | 83.2 | 90.9 |
| gpt-3.5-turbo | 42.7 | 73.7 | 79.0 |
### MultidomainGold
| Model | F1 (spell) | F1 (punc) | F1 (case) |
| --- | --: | --: | --: |
| **Spell-Corrector-RU-4B** | 62.6 | 66.5 | 80.0 |
| sage-fredt5-large | 77.6 | 67.7 | 79.3 |
| gpt-4 | 37.0 | 56.0 | 60.0 |
| gpt-3.5-turbo | 27.1 | 36.2 | 49.1 |
### MedSpellchecker
| Model | F1 (spell) | F1 (punc) | F1 (case) |
| --- | --: | --: | --: |
| **Spell-Corrector-RU-4B** | 42.8 | 70.4 | 76.3 |
| sage-fredt5-large | 72.3 | 70.3 | 82.1 |
| gpt-4 | 49.6 | 71.9 | 67.1 |
| gpt-3.5-turbo | 22.3 | 59.8 | 32.3 |
### GitHubTypoCorpusRu
| Model | F1 (spell) | F1 (punc) | F1 (case) |
| --- | --: | --: | --: |
| **Spell-Corrector-RU-4B** | 49.7 | 34.8 | 45.8 |
| sage-fredt5-large | 59.5 | 42.6 | 42.7 |
| gpt-4 | 35.7 | 38.2 | 30.2 |
| gpt-3.5-turbo | 29.4 | 28.7 | 25.3 |
> Полные таблицы (Precision / Recall / F1 + сравнение со Stage 1) — в [репозитории проекта](https://github.com/melsmm/llm-spell-corrector#-результаты).
### Скорость инференса
На RUSpellRU (2008 примеров) через vLLM: **45 с** (0.022 с/пример) против **284 с** (0.141 с/пример) у sage-fredt5-large — **~в 6 раз быстрее**.
## Ограничения
- Модель уступает SAGE по орфографии на ряде доменов, но конкурентна по пунктуации и регистру.
- Качество может снижаться на узкоспециализированных доменах (например, медицина) — там рекомендуется дообучение под домен с помощью LoRA.
- Модель работает с русским языком; для других языков не предназначена.
## Ссылки
- 🔗 **Проект на GitHub:** https://github.com/melsmm/llm-spell-corrector
- 🤗 **Датасеты:** https://huggingface.co/datasets/melsmm/spell-correction-ru
- 🧩 **Базовая модель:** https://huggingface.co/RefalMachine/RuadaptQwen3-4B-Instruct
|