hp-dial/presentation/presentation.org

123 lines
4.3 KiB
Org Mode
Raw Permalink Normal View History

2020-05-11 20:57:12 +02:00
#+TITLE: Telegram bidezko galdera-erantzun sistema
* Sarrera
Hemengo hau, Sare Errekurrenteetan oinarritutako sistema bat, filmetako
azpitituluetaz baliatuz, Telegramen elkarriketak izateko ahalbidetzea helburu
duen lan bat da.
* Erlazionatutako lanak
2020-05-12 01:47:52 +02:00
Lan hau seq2seq sare neuronalen arkitektura motan oinarrituta dago.
2020-05-11 20:57:12 +02:00
Eredu mota hau Google-n hasi zen erabiltzen lehen aldiz 2014-an (Sutskever et al.).
[[file:Screenshot-2020-05-11.png]]
[[file:Screenshot-2020-05-11-2.png]]
2020-05-12 01:47:52 +02:00
Kodetzaile bat dago hasieran, eta bukaeran dekodetzaile bat.
2020-05-11 20:57:12 +02:00
Eskoletako materialetatik hartutako irudi hauetan ikusten den bezala, sarrera
kodeazaileari ematen zaio eta hitz bakoitza aurrekoarekin lotuta kodetzen joaten
da, ondoren, emaitza dekodetzaileari eskaintzeko bestelako hitz batzuk lortuz.
* Sistema
Sistema honek aipatutako seq2seq eredua erabiltzen du, baina, dekodetzailearen
helburua, kasu honetan, erantzun bat itzultzea da.
2020-05-12 01:47:52 +02:00
Horretarako, GRU sare neuronal errekurrente eredua erabili da kodetzaile eta
2020-05-11 20:57:12 +02:00
dekodetzaile bat egiteko. Gainera, atentzio sistema bat erabili da.
[[file:Screenshot-2020-05-11-1.png]]
Sistema hau Jon Anderrek eskainitako eta *spro/practical-pytorch* biltegian
oinarritutako kodean dago oinarrituta. Aipatutako, ezaugarri guztiak dagoeneko
oinarrizko sistema honek bazituen. Ordea, beste zenbat aldaketa egin dizkiot
emaitzak hobetzeko.
** Hobekuntzak
*** Erantzun motzen aurkako neurriak
Sistema honek ematen zituen emaitzak oso laburrak ziren, beti Bai/Ez erantzuten
baitzuen, seguruenik elkerrizketetan gehien azaltzen diren hitzak direlako.
2020-05-12 01:47:52 +02:00
Ondorioz, /Brevity Penalization/ (BP) balio baten bidez baldintzatu dut galera
2020-05-11 20:57:12 +02:00
funtzioa. Ordea, BP huts bat erabilita, eredua beti emaitza luzeenak saiatzen da
ematen, eta horrek oso emaitza txarrak sortzea eragiten du.
Horregatik, BP balioa Rayleigh distribuzioko kurba batean aplikatzen da,
2020-05-12 01:47:52 +02:00
erantzun errealaren luzera izan ordez helburu, horren balio antzeko gertu bat
izango da.
2020-05-11 20:57:12 +02:00
[[file:Figure_1.png]]
*** Tokenizatzailea
Oinarrizko ereduan tokenizatzailea, ingelesezkoa zen, ordea, euskarazko
azpitituluak nahi genituen erabili entrenamendurako, ondorioz, SpaCy-k
eskainitako euskarazko tokenizatzaile oso sinple bat erabili da.
* Telegram zerbitzura txertapena
Ez dut arazorik izan. https://github.com/python-telegram-bot/python-telegram-bot
API-aren inplementazioa erabili dut.
* Datuak
Entrenamendurako erabilitako datuak OpenSubtitles datubaseko euskarazko
azpitituluak erabili dira. Baina azpititulu hauek zarataz daude beteta.
Ondorioz, lehenik, garbiketa bat egin da.
** Hasiera bateko garbiketa
Hasieran, helburu bakarra elkarrizketetan jartzen diren hasierako "-"
karaktereak ezabatzea zen, ondorioz agindu oso sinple bat erabiltzea pentsatu
nuen:
#+BEGIN_SRC sh
sed -E 's|^- ?||' < eu.txt | paste - -
#+END_SRC
Baina gero konturatu nintzen, azpitituluetan zegoen zarata askoz ere larriagoa
zela eta Shell gidoia handitzen joan nintzen orain erabiltzen dudana arte.
** Garbiketa
Ondorengoa da egindako garbiketa:
- Lerroen hasierako "-" karaktereak ezabatu.
- " karaktereaz hasten diren lerroak batu esaldi berberekoak
direlako adierazten delako.
- Batu komaz bukatzen diren lerroak, esaldi berberekoak direlako.
*** Adibideak
#+BEGIN_SRC
"Gaur pergaminoa aurkitu dut Karswellek emandako egitarauaren barruan".
"Sinbolo errunikoak zeuzkan marraztuta".
#+END_SRC
#+BEGIN_SRC
-Zu ez zaude ezkonduta?
-Ez.
-Ama!
-Izozkia gustatzen zaizu?
-Bai, asko.
-Zatoz.
#+END_SRC
#+BEGIN_SRC
Egon pixka batean, mamarroa oraintxe dator eta, bere aiztoa eta guzti,
zu txiki-txiki egiteko.
#+END_SRC
* Emaitzak
** Onak
[[file:bot/Screenshot-2020-05-11-4.png]]
[[file:bot/Screenshot-2020-05-11-6.png]]
[[file:bot/Screenshot-2020-05-11-7.png]]
[[file:bot/Screenshot-2020-05-11-8.png]]
[[file:bot/Screenshot-2020-05-11-9.png]]
** Txarrak
[[file:bot/Screenshot-2020-05-11-5.png]]
[[file:bot/Screenshot-2020-05-11-10.png]]
[[file:bot/Screenshot-2020-05-11-11.png]]
[[file:bot/Screenshot-2020-05-11-12.png]]
* Analisia
Orokorrean, agurrei ondo erantzuten die, baina bestelako galderei Bai edo Ez
erantzuten du ia beti, eta beste zenbaitetan ez daki zer erantzun.
* Ondorioak
Transformer bat erabili badirudiela emaitz ahobeagoak ematen dituela.
Kontuan dago hartu beharra, azpitituluen datubasearen kalitatea sekulako
botila-lepoa eragiten duela.
* Erreferentziak
- Sutskever, Ilya; Vinyals, Oriol; Le, Quoc Viet (2014). "Sequence to sequence learning with neural networks"