Russian text normalization
Finetuned version of FRED-T5 large 820M.
Code repo.
Trained on ficbook, librusec and pikabu sentences, inverse text normalized using modified version of word_to_number_ru package.
Also used Kaggle Text Normalization Challenge data to be able to normalize latin also. Became to perform worse on numbers but process latin succesfully. git checkout
#8c2476b to choose previous number-only version.
Usage
Put numbers and latin words inside of squared brackets and follow with T5 tokens <extra_id_0>
, <extra_id_1>
and so on.
One is advised to split numbers on groups by 3 digits always and do not put much of anything but numbers and latin inside of [ ]
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:]))
# <extra_id_0> три\n <extra_id_1> двух- трёх\n <extra_id_2> сто сорок две тысячи девятьсот девяносто\n</s>
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) |
- Downloads last month
- 696
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social
visibility and check back later, or deploy to Inference Endpoints (dedicated)
instead.