🚀 Russian Text Normalization
This is a finetuned version of FRED-T5 large 820M, aiming to solve the problem of Russian text normalization and providing a reliable text normalization solution.
The code repository can be found here. This model is trained on sentences from ficbook, librusec, and pikabu. The inverse text normalization is done using a modified version of the word_to_number_ru package. Additionally, data from the Kaggle Text Normalization Challenge is used to enable the normalization of Latin characters. Although the performance on numbers has decreased, it can successfully process Latin characters. Use git checkout
#8c2476b to choose the previous number - only version.
🚀 Quick Start
✨ Features
- Finetuned from FRED-T5 large 820M.
- Trained on multiple datasets including ficbook, librusec, and pikabu.
- Can handle both numbers and Latin characters in Russian text normalization.
📦 Installation
No specific installation steps are provided in the original document, so this section is skipped.
💻 Usage Examples
Basic Usage
Put numbers and Latin words inside square brackets and follow with T5 tokens <extra_id_0>
, <extra_id_1>
, etc. It is recommended to split numbers into groups of 3 digits and only put numbers and Latin inside the [ ]
brackets.
import torch
from transformers import GPT2Tokenizer, T5ForConditionalGeneration
device='cuda'
tokenizer = GPT2Tokenizer.from_pretrained('saarus72/russian_text_normalizer', eos_token='</s>')
model = T5ForConditionalGeneration.from_pretrained('saarus72/russian_text_normalizer').to(device)
lm_text = '<SC1>Было у отца [3]<extra_id_0> сына, но не было даже [2- 3]<extra_id_1> пиджаков с блёстками за [142 990]<extra_id_2> руб.'
input_ids = torch.tensor([tokenizer.encode(lm_text)]).to(device)
outputs = model.generate(input_ids, eos_token_id=tokenizer.eos_token_id, early_stopping=True)
print(tokenizer.decode(outputs[0][1:]))
More Examples
Model input |
After replacement |
Is correct |
<SC1>Временами я думаю, какое применение найти тем [14 697]<extra_id_0> рублям, что лежат уже больше [33]<extra_id_1> лет? |
Временами я думаю, какое применение найти тем четырнадцати тысячам шестистам девяносто семи рублям, что лежат уже больше тридцати трёх лет? |
Yes |
<SC1>я купил [iphone 12]<extra_id_0> за [142 990]<extra_id_1> руб без [3-x]<extra_id_2> часов полдень и т.д. |
я купил айфон двенадцатый за сто сорок две тысячи девятьсот девяносто руб без трех часов полдень и т.д.? |
Yes |
<SC1>В школе у меня одни [5]<extra_id_0>. |
В школе у меня одни пятые. |
No (пятёрки is correct) |
<SC1>Было у отца [3]<extra_id_0> сына. Старшему было [35]<extra_id_1>, среднему - не меньше [33]<extra_id_2>, а младший на [4]<extra_id_3> младше всех. Бывает. |
Было у отца три сына. Старшему было тридцать пять, среднему - не меньше тридцати трех, а младший на четыре младше всех. Бывает. |
Yes |
<SC1>я подарю тебе [1 000 000]<extra_id_0> алых роз, я научу тебя смеяться |
я подарю тебе миллион алых роз, я научу тебя смеяться |
Yes |
<SC1>запомни телефон — [8 9 555 35 35]<extra_id_0>, проще позвонить, чем занимать |
запомни телефон — восемь девять миллионов пятьсот пятьдесят пять тысяч тридцать пять |
Not much, better hold on 3 digit groups |
<SC1>стоимость айфон [32]<extra_id_0> — всего [189 553 600]<extra_id_1> руб.! |
стоимость айфон тридцать два — всего сто восемьдесят девять миллионов пятьсот пятьдесят три тысячи шестьсот руб.! |
Yes |
<SC1>[91 957 552 336]<extra_id_0> минус [3 474 354 354]<extra_id_1> равно ? |
девяносто один миллион девятьсот пятьдесят семь миллионов пятьсот пятьдесят две тысячи триста тридцать шесть минус три миллиона четыреста семьдесят четыре миллиона триста пятьдесят четыре тысячи триста пятьдесят четыре равно ? |
No :( |
<SC1>я вырос на [the beatles]<extra_id_0>, меня не испугают даже [33 yellow submarine]<extra_id_1> |
<SC1>я вырос на зэ битлс, меня не испугают даже тридцать три йеллоу сабмарин |
Yes |
<SC1>слыш [nigga]<extra_id_0> ты слыхал про [gitdata]<extra_id_1>? |
слыш нигга ты слыхал про джитдата? |
Yes |
<SC1>стоимость [samsung 32MX Pro]<extra_id_0> — всего [189 600]<extra_id_1> руб! |
стоимость самсунг тридцать два мкс про — всего сто восемьдесят девять тысяч шестьсот руб! |
Not much (эм икс would fit better) |
📄 License
This project is licensed under the Apache-2.0 license.