Bei der Lösung von Aufgaben im Zusammenhang mit der Spracherkennung (Speech-To-Text) und der Erzeugung (Text-To-Speech) von Sprache ist es wichtig, dass das Transkript dem entspricht, was der Sprecher gesagt hat - dh der echten gesprochenen Sprache. Dies bedeutet, dass geschriebene Sprache , bevor sie zu unserem Transkript wird, normalisiert werden muss .
Mit anderen Worten, der Text muss in mehreren Schritten erstellt werden:
- Ersetzen der Zahl in Worten:
1984
-> eintausendneunhundertvierundachtzigstes Jahr ; - Erklärung der Abkürzungen:
2 .
-> zwei Minuten Hass ; - Lateinische Transkription:
Orwell
->
etc.

In diesem Artikel werde ich kurz darauf eingehen , wie sich die Normalisierung im Datensatz der russischen Sprache Open_STT entwickelt hat , welche Tools verwendet wurden und wie wir die Aufgabe angehen.
Wie eine Kirsche auf einem Kuchen haben wir beschlossen, unseren auf seq2seq basierenden Normalisierer öffentlich zugänglich zu machen: einen Link zu Github . Es ist so einfach wie möglich zu bedienen und wird mit einer Methode aufgerufen:
norm = Normalizer()
result = norm.norm_text(' 9 11 whiskas')
>>> ' '
Mehr zur Aufgabe
, , ? , . , .
, , :
2
— (), . 2
— ;2
— , 2
— ;2
— , 2
— ;= 2/5
— , . 2/5
— — .
: - (
— ) (
— ?). , , . .
. - . , , ~20% , ~80% .
Open_STT : — . STT , - 2020
, .
.
2020
. "" — .
Sequence to Sequence
- , sequence-to-sequence (seq2seq) . , seq2seq , "" , :

attention "5 ". , "" "5", "".
seq2seq PyTorch . — . + + + , — + .
— , . ( , ) .
, :
TorchScript
, , Torchscript.
TorchScript — PyTorch, Python C++.
, PyTorch :
- , TorchScript , ;
torch.jit.script
( torch.jit.trace
), .
, , , , . , : , .. .
, . , .
norm.norm_string(" — — 27 38 %.")
' — — .'
norm.norm_string(" 22 1939 ")
' '
norm.norm_string(" «The Crying Game»")
' « »'
norm.norm_string(" XVIII ")
' '
norm.norm_string(" 2012 6,6 ")