Dopĺňanie interpunkcie a obnova veľkých písmen v ASR

Systémy vykonávajúce doplňovanie interpunkčných znamienok a veľkých písmen sú potrebné najmä preto, lebo tieto výstupy bez interpunkcie a veľkých písmen väčšinou pre ľudí nie sú zrozumiteľné (v textovej forme). Keďže interpunkcia a veľké písmená v slovách nemajú vplyv na výslovnosť slov, sú z výstupu ASR (*automatic speech recognition = automatické rozpoznávanie reči*) odstraňované, výsledkom čoho sú iba sekvencie slov alebo písmen.

V súčasnosti existuje mnoho metód/spôsobov, akými je možné pristupovať k problematike doplňovania interpunkcie a obnovy veľkých písmen. V niektorých metódach je použitý princíp strojového prekladu, kde do modelu vstupoval text bez interpunkcie a model tento text následne “preložil” na text s interpunkciu. V iných metódach sú zasa použité CRF (*conditional random field = podmienené náhodné polia*). Avšak väčšina existujúcich metód/systémov rieši iba interpunkciu, čo však nestačí napr.

V tomto článku predstavím dve metódy z roku 2019, v ktorých sú predstavené dva rôzne spôsoby, ako je možné pristupovať k problematike doplňovania interpunkcie. Prvá z nich je zameraná na tzv. transformátory a druhá z nich funguje na princípe tzv.

1. Metóda Binh Nguyena a kolektívu

Metóda vytvorená kolektívom autorov okolo Binh Nguyena z Vietnamu predstavuje spôsob doplňovania interpunkcie a obnovy veľkých písmen pre ASR. Skladá sa z 3 komponentov, z ktorých prvý slúži na rozdeľovanie veľkých textových segmentov na menšie časti (*chunk-splitting*), ktoré sa však prekrývajú. To znamená, že takmer všetky vety (alebo slová/časti viet, to závisí aké kritérium bolo zvolené pri rozdeľovaní textu) sa po rozdelení objavia vo viacerých častiach (vysvetlené na príklade nižšie). Tieto časti textu sú po rozdelení dostatočne dlhé na to, aby mal druhý komponent k dispozícii dostatok kontextu zľava aj sprava a mohol tak vykonať čo najpresnejšiu predikciu.

Motiváciou autorov k navrhnutie tejto metódy sa stal fakt, že pokiaľ ide o kratšie rečové segmenty, štúdie v oblasti ASR dosahujú výborné výsledky (v poslednej dobe). Avšak pokiaľ ide o dlhšie rečové segmenty, stále existujú nedostatky v štandardizácii výsledného textového výstupu ASR, napríklad doplňovanie interpunkcie a obnova kapitalizácie (veľkých písmen).

Prečítajte si tiež: RPK v boji: História a použitie

Príklad chunk-splittingu:

"... . Futbalisti FC Liverpool sa stretnú v osemfinále Ligy majstrov s Atleticom Madrid. Rozhodol o tom pondelňajší žreb v sídle UEFA vo švajčiarskom Nyone.

Po rozdelení na chunk-splitting by to mohlo vyzerať nasledovne:

  1. veta: Futbalisti FC Liverpool sa stretnú
  2. veta: v osemfinále Ligy majstrov s Atleticom Madrid.
  3. veta: Rozhodol o tom pondelňajší žreb

Samozrejme, toto je len príklad na pochopenie "chunk-splittingu".

2. Metóda Jiangyan Yi a Jianhua Tao

Ďalšia metóda, ktorej autormi sú Jiangyan Yi a Jianhua Tao z Číny používa na predikciu interpunkčných znamienok model založený na “*self-attention*”. V modeli sú použité “word and speech embeddings”, ktoré sú pred-trénované vo frameworku Word2Vec a Speech2Vec. Použitie tohto prístupu umožňuje modelu využívať akýkoľvek druh lexikálnych a akustických dát.

Predošlé modely používali k činnosti akustické príznaky, lexikálne príznaky, alebo ich kombináciu. Využitie akustických príznakov textu sa javí ako efektívnejšie ako využitie samotných lexikálnych príznakov. Avšak v mnohých prípadoch ich nie je možné použiť v ASR, nakoľko ľudia pri hovorení zvyknú používať pauzy medzi slovami na miestach, kde by ich používať nemali. Kombinovanie týchto dvoch typov príznakov (akustické a lexikálne) čiastočne vyrieši tento problém.

Prečítajte si tiež: História a použitie MG 42 v ozbrojených konfliktoch

Využitie PyTorch a LSTM

PyTorch je open source knižnica strojového učenia pre Python a C++. Táto knižnica sa najčastejšie používa v kombinácii s jazykom Python, avšak je možné ju použiť aj s jazykom C++. Jej najväčšie využitie je v oblasti Spracovania prirodzeného jazyka (NLP). PyTorch poskytuje možnosť rýchleho počítania tzv.

LSTM sú špeciálny typ Rekurentných neurónových sietí (RNN), schopné naučiť sa využívať dlhodobé kontextové súvislosti (napr. pri dopĺňaní chýbajúcej interpunkcie alebo veľkých písmen). Dokážu spracovávať nielen jednoduché dáta (napr. obrázky), ale aj celé sekvencie dát (napr.

Inštalácia PyTorch v Ubuntu

Na inštaláciu Pytorchu existuje viacero možných spôsobov. Pracovať s ním je možné či už vo Windowse alebo aj v Linuxovom prostredí. Taktiež je možné vybrať si, či bude inštalácia vykonaná pomocou Anacondy alebo PIP. Ja som sa rozhodol pracovať v prostredí Ubuntu (keďže v tomto prostredí som pracoval aj na Bakalárskej práci.

Pred inštaláciou Anacondy a Pytorchu je potrebné nainštalovať prostredie Ubuntu 16.04 LTS. Môžete si ho stiahnuť napr.

a. Inštalácia Anacondy

Pred samotnou inštaláciou Anacondy je potrebné overiť, či sú všetky balíčky (*packages*) aktualizované. Následne je treba stiahnuť inštalačný súbor Anacondy. Jedným zo spôsobov ako to urobiť, je stiahnutie tohto súboru priamo cez terminál. Avšak pri tomto spôsobe je potrebné uistiť sa o bezpečnosti stránky, ktorá poskytuje inštalačný skript.

Prečítajte si tiež: Všetko o guľomete lajkov

Zadanie tohto príkazu vám zabezpečí stiahnutie najnovšej verzie Anacondy. Vrámci inštalácie Anacondy sa nainštaluje aj Python 3.7.4. Po stiahnutí a nainštalovaní Anacondy ju už stačí iba spustiť.

b. Inštalácia PyTorchu

Ďalším krokom je nainštalovanie Pytorchu. Inštalácia je veľmi jednoduchá a rýchla. Taktiež je potrebné zadať “y” po výzve terminálu.

Na záver je ešte potrebné overiť, že Pytorch bol skutočne nainštalovaný. Toto overenie je možné vykonať sériou príkazov.

Python REPL je jednoduché interaktívne prostredie, ktoré spracováva jednoduché užívateľské vstupy po jednom riadku a vracia výsledok (výstup). Keď sa už nachádzame v móde Python REPL, môžeme spustiť napr. tento jednoduchý skript, ktorý vygeneruje maticu 3x5 náhodných čísel (tensor) v intervale (0,1).

Týmto skriptom sme overili funkčnosť Pytorchu a teda môžeme Python REPL opustiť stlačením klávesovej skratky CTRL + D.

Vstup a výstup LSTM v PyTorch

Vstup a výstup v LSTM v knižnici Pytorch je tvorený 3D tensormi. Následne sa presunieme k vytváraniu LSTM vrstvy, ktoré funguje rovnako ako pri ostatných typoch vrstiev. LSTM vrste totiž budeme priradzovať argumenty.

  • vstupná dimenzia (*input dimension*): definuje veľkosť vstupu v každom časovom kroku, napr.

V ďalšom kroku si vytvoríme fiktívne dáta aby sme videli, ako funguje vstup na vrstve. Keďže sme veľkosť dimenzie definovali ako 5, potrebujeme vytvoriť tensor vo tvare (1, 1, 5).

Taktiež potrebujeme inicializovať "cell state" a "hidden state" jednotky LSTM.

Ak máme vstupnú sekvenciu (*seq_len*) napr. 100, veľkosť vzorky (*batch_size*) udáva, v akých dávkach sa bude sekvencia spracovaná a vyhodnotená. Ak máme napr.

Referencie

  1. NGUYEN, B.
  2. YI, J.
  3. I. Sutskever Google, O. Vinyals Google, and Q.
  4. M. P. For, “Natural Language Processing in Action,” _Online_ , vol. 80, no. 1. p.
  5. “Sequence to Sequence Learning with Neural Networks - arXiv Vanity.” [Online].
  6. J. Gehring, M. Auli, D. Grangier, D. Yarats, and Y. N.
  7. K.
  8. Language Processing, Proceedings of the Conference_ , 2014, pp.
  9. R. Pascanu, T. Mikolov, and Y.
  10. _30th International Conference on Machine Learning, ICML 2013_ , 2013, no. PART 3, pp.
  11. K. Cho, B. Van Merriënboer, D. Bahdanau, and Y.
  12. L. Dong, S. Xu, and B.
  13. A.
  14. J. Li, Z. Tu, B. Yang, M. R. Lyu, and T.

tags: #vzorovy #kod #gulomet