%
% File acl2020.tex
%
%% Based on the style files for ACL 2020, which were
%% Based on the style files for ACL 2018, NAACL 2018/19, which were
%% Based on the style files for ACL-2015, with some improvements
%%  taken from the NAACL-2016 style
%% Based on the style files for ACL-2014, which were, in turn,
%% based on ACL-2013, ACL-2012, ACL-2011, ACL-2010, ACL-IJCNLP-2009,
%% EACL-2009, IJCNLP-2008...
%% Based on the style files for EACL 2006 by
%%e.agirre@ehu.es or Sergi.Balari@uab.es
%% and that of ACL 08 by Joakim Nivre and Noah Smith

\documentclass[11pt,a4paper]{article}
\usepackage[spanish, basque]{babel} % Add basque or english
\selectlanguage{basque}
\usepackage[hyperref]{acl2020}
\usepackage{times}
\usepackage{latexsym}
\usepackage{amsmath}
\usepackage{graphicx}
\renewcommand{\UrlFont}{\ttfamily\small}

% This is not strictly necessary, and may be commented out,
% but it will improve the layout of the manuscript,
% and will typically save some space.
\usepackage{microtype}

\aclfinalcopy % Uncomment this line for the final submission
%\def\aclpaperid{***} %  Enter the acl Paper ID here

%\setlength\titlebox{5cm}
% You can expand the titlebox if you need extra space
% to show all the authors. Please do not make the titlebox
% smaller than 5cm (the original size); we will check this
% in the camera-ready version and ask you to change it back.

\newcommand\BibTeX{B\textsc{ib}\TeX}

\title{DIAL: Telegram bidezko galdera-erantzun sistema}

\author{Jon Ander Campos \\
  EHU / Tutorea \\
  \texttt{jcampos004@ikasle.ehu.eus} \\\And
  Iñigo Ortega \\
  EHU / Ikaslea \\
  \texttt{iortega045@ikasle.ehu.eus} \\}

\begin{document}
\maketitle
\begin{abstract}
  Artikulu hau Telegram bidezko bot baten bidez elkarrizketak izateko eredu bati
  buruz jarduten da. Hori egiteko Seq2Seq sare neuronalen eredua erabiltzen da GRU
  motako sare errekurrenteen bidez eta atentzio sistema bat erabilita.

  Eraikitako ereduarekin, Telegrameko bot bat egin daiteke eta elkarrizketak
  telegrametik bertatik izan bere bot-en API-a dagokion moduan erabilita.
\end{abstract}

\section{Sarrera}
\label{sec:sarrera}
Elkarrizketarako makina automatikoak Turing-en garaitik hasi ziren dagokien
garrantzia izaten, honek berak proposatutako Turing probaren ondorioz,
elkarrizketa bateko ondoko partaidea gizakia den edo ez egiaztatzeko erabili
daitekeena. Hain zuzen, 1950tik dago elkarrizketen partaideak gizakiak diren edo
ez egiaztatzeko interesa, ez proba huts bat bezala, baizik eta gizaki bat eta
makina bat desberdintzeko zailagoa izan daitezen sistemak sortzeko.

Helburu horretarako, sistema asko eraiki dira, horien artean ospetsuenak, IBM
Watson\texttrademark, Alexa\texttrademark\ edo Siri\texttrademark. Hasieran,
erregeletan oinarritutako ereduak erabiltzen ziren hauen inplementaziorako,
ordea, gaur egun, eta lan honen eredurako, ikasketa automatikoa erabiltzen da
haren moldakortasunagatik.

Hori horrela izanik, azken urteotan helburu antzekoak dituzten aplikazioak sortu
dira: Meena (Googleko zientzialari batzuek sortutako elkarrizketa bot bat
\cite{meena2020}), Facebook Messenger-eko bot txertatuak \cite{facebook2016} edo
bezeroaren arretarako zerbitzuak eskaintzeko botak \cite{customerservice2019} (milioka
Euro aurrezten dituztenak).

Kasu honetan, baita ere, ikasketa automatiko bidezko elkarrizketen eredu bat
erabili eta inplementatu da. Eredu horren, bere hobekuntzen eta emaitzei buruzko
jarduna da artikulu hau. Honen egiazkotasuna eta lekukoa hurrengoa
inplementazioa da: \href{https://git.disroot.org/i.ortega/hp-dial}{Git biltegia}.


\section{Erlazionatutako lanak}
\label{sec:erlaz-lanak}
Lan honetan Seq2Seq sare neuronalen arkitektura erabiltzen da. Hau, lehen aldiz,
Googlen hasi zen erabiltzen. Hain zuzen, Sutskever et al. 2014ean ikertzaileek
hasi ziren erabiltzen \cite{sutskever2014}. Lehen eredu honek kodetzaile eta dekodetzaile bat lotzea
proposatu zuen azken honetan egoerako irteera sarrera bezala erabiliz (Figure \ref{fig:seq2seq}).

\begin{figure}[h]
  \centering
  \includegraphics[width=7cm]{../presentation/Screenshot-2020-05-11.png}
  \caption{Sutskever et al. (2014): Lehen Seq2Seq eredua.}
  \label{fig:seq2seq}
\end{figure}

Eredu honen erabilpen nagusienetako bat itzulpen automatikoa da
\cite{maitehp2020}. Ordea, badirudi azken urteotan elkarrizketa sistemak
inplementatzeko ere erabili dela nahiko emaitza onekin \cite{meena2020}.

\section{Sistema}
\label{sec:sistema}
Sistema honek aipatutako Seq2Seq eredua erabiltzen du.
Honetan hitzen sekuentzia bat, beste batean bihurtzen da sare errekurrenteetan
oinarritutako prozedura bat erabiliz. Hain zuzen, 2 zati nagusiz osatutako
metodo bat erabiltzen da: Kodetzaile eta Dekodetzaile bat; biak GRU motako sare
errekurrente bikoitzak izanik (BiGRU).
Gainera, atentzio sistema bat erabiltzen da dekodetzailea, uneoro, kodetzaileak
sortutako errepresentazio ezkutuez baliatu ahal izateko
\cite{bahdanau2014neural}.

Sistemaren funtzionamendua honelakoa litzateke: Sarrera bezala esaldi bat
emanda, GRU kodetzaileek jasotzen dute. Batek hasieratik bukaerara aztertzen du
esaldia \textit{aurreranzko} egoera ezkutuak sortuz eta besteak, alderantzizko
zentzuan berdina egiten du \textit{atzeranzko} egoera ezkutuak sortuz.
Sarreraren hitz bakoitzaren \textit{embedding}-a \textit{aurreranzko} eta
\textit{atzeranzko} \textit{embedding}-en konkatenazioak definitzen du.
Honela, dekodetzeko garaian, atentzio mekanismoari esker, unean interesgarrien
diren \textit{embedding}-ak hartzen dira gehien kontuan. Kasu honetan ere, bi
GRU erabiltzen dira eta, kodetzailean egin den moduan, batek sarrera hasieratik
aztertzen du eta besteak bukaeratik, baina, kasu honetan, sarrera atentzio
mekanismoak itzulitako irteera da. Honek lenguaia naturaleko hitzak itzuliko
lituzke (Figure \ref{fig:encoder}).\\

\begin{figure}[h]
  \centering
  \includegraphics[width=5.5cm]{Screenshot-2020-05-21-2.png}
  \caption{Erabilitako ereduaren adierazpen grafikoa. $X_i$ sarrerako hitzak
    izanik.}
  \label{fig:encoder}
\end{figure}

Azaldutako sistema hau, Jon Ander Campos tutoreak eskainitako inplementazioan
oinarrituta erabili da. Ordea, hurrengo azpi-ataletan aurkeztuko diren zenbait
hobekuntza ere egin zaizkio.

\subsection{Euskarazko tokenizazioa}
\label{sec:eusk-token}
Sistemak, jatorriz, ingeleseko tokenizatzaile bat erabiltzen zuen ikasketan,
ingeleseko elkarrizketak izateko prestatuta baitzegoen. Ordea, kasu honetan,
euskarazko elkarrizketak eduki nahi dira. Horretarako, \textit{SpaCy}
liburutegiak eskainitako euskarazko oinarrizko tokenizatzaile bat erabili da.


\subsection{Erantzun motzen aurkako neurriak}
\label{sec:erantz-motz-aurk}

Aipatu den bezala, ereduak erantzun oso motzak emateko joera dauka, hau da,
``Bai'' edo ``Ez'' erantzunak ematen ditu gehienbat, izan ere, elkarrizketetan
gehien agertzen diren hitzak dira. Ondorioz, hitz horiek hain beste alditan ez
agertzeko zenbait neurri hartu behar dira.

Kasu honetan, 2 neurri hartu dira, ``Brevity Penalization'' (BP) izeneko
penalizazioa eta honen gainean aplikatutako Rayleigh distribuzio
probabilitiskoa. Bi hauek ikasketan aplikatu dira, hain zuzen, galera funtzioan.

BP itzulpen automatikoan erabiltzen den penalizazio mota bat da (normalean
\textit{BLEU} izeneko metodo baten pean \cite{Papineni02bleu:a}). Honen helburua,
kasu horretan, ereduak egindako itzulpen baten luzera errealarenarekin
konparatzea da, ereduak itzultzen duena motzagoa balitz penalizazio bat
aplikatuz.

Honelakoa litzateke bere ekuazioa:

\begin{equation}
  \label{eq:1}
  BP(c, r)=
\begin{cases}
    1,              & \text{baldin } c > r\\
    {\rm e}^{1-\frac{r}{c}},& \text{bestela}
\end{cases}
\end{equation}

non $c$ sistemak sortutako itzulpenaren luzera den eta $r$ itzulpen errealaren
luzera.

Ordea, honek arazo bat eragiten du: Ereduak bakarrik erantzun luzeenak itzultzen
ikasten du. Hau, beti erantzun erreala baino luzera handiagoa edo berdineko
itzulpen bat sortu nahi duelako gertatzen da. Orduan, luzera besterik ez
optimizatzea eragiten du, hain zuzen, luzera handitzeko.

Horrek, printzipioz, ez luke arazorik eragin beharko, erantzun luzeak ere
onargarriak izan daitezkeelako. Ordea, ereduak pauso bat gehiago ematen du:
Hitzen konbinazio hoberenak erabiltzen ditu erantzun luzeenak sortzeko, zentzua
izan edo ez. Honela, beti erantzun zentzugabeak itzultzen ditu, hitz luzeenak
besterik ez baititu erabiltzen.

Arazo hori konpontzeko, Rayleigh distribuzioa erabili da. Hain zuzen, Rayleigh
distribuzioaren ekuazioa hau bada:

\begin{equation}
  \label{eq:2}
  Rayleigh(x, \sigma) = \dfrac{x}{\sigma ^{2}} \cdot {\rm e}^{-\frac{x^{2}}{2 \sigma^{2}}}
\end{equation}

Parametroak horrela definitu dira:

\begin{equation}
  \label{eq:3}
  \sigma = 20
\end{equation}
\begin{equation}
  \label{eq:4}
  0 <= y <= 1, \quad
  x = y \cdot 5.8 + 0.2
\end{equation}

Lortutako kurba, honen balio maximo posiblearekin zatitzen da 0 eta 1-en artean
mantentzeko (Figure \ref{fig:rayleigh-kurba}).

\begin{figure}[h]
  \centering
  \includegraphics[width=7cm]{../presentation/Figure_1.png}
  \caption[Rayleigh kurba]{Rayleigh distribuzioaren kurba \ref{eq:4} ekuazioan
    adierazitako parametroak erabiliz.}
  \label{fig:rayleigh-kurba}
\end{figure}

Distribuzio hau BP-ren irteerari aplikatu zaio, honela, ereduak ez du erantzunen
luzerarekiko optimizatzen. Orain BP-k $0.75$ aldera dagoen balio bat itzultzen
duenean ematen baita balio maximoa ($1$), beti erantzun luzeagoak lortzea
eragotziz eta motzagoak (probabilitate txikiagoarekin izan arren) onartuz.

\section{Telegram zerbitzuara esleipena}
\label{sec:telegr-zerb-esle}

Lan honen helburua elkarrizketarako sistema bat sortzea da, baina horretarako
interfaze bat behar da. Hori Telegram-ek eskaintzen duen \textit{Bot}en API a
erabiliz egin da. Hain zuzen, Telegram-eko \textit{Bot} bat inplementatu da
sistemak emandako irteera eredu bat erabiliz bidalitako mezueei erantzunak
emateko.

\textit{Bot} honen inplementazioa \textit{python-telegram-bot} Telegrameko
API-aren inplementazioaren bidez egin da (\href{https://github.com/python-telegram-bot/python-telegram-bot}{github}).

\section{Datuak}
\label{sec:datuak}
Sare neuronalak ikasteko datuak behar ditu. Horretarako, filmen azpitituluak
erabili nahi izan dira, baina, euskaraz, ez dago hauen datubase formalik,
ondorioz, normalizazio prozesu bat egin behar izan zaie azpitituluei
erabili ahal izateko.

\subsection{Azpitituluen iturria}
\label{sec:azpitituluen-iturria}
Azpitituluak \textit{\href{http://www.opensubtitles.org/}{OpenSubtitles}} webgunetik hartu dira. Bertan hizkuntza
eta film askotako azpitituluak daude eskuragai.

Kasu honetan, euskarazko azpitituluen datubasea erabili da, galdera-erantzun
sistema euskarazkoa egin nahi delako.

Datu base honetan azpitituluak lerroetan daude banatuta filmetan agertzen diren
ordena berdinean.

\subsection{Azpitituluen normalizazioa}
\label{sec:azpit-norm}
Film azpitituluak ezin dira nolanahi erabili ikasketarako, izan ere, ez dakigu
bertan zein esaldi izango diren galderak eta zeintzuk erantzunak. Gainera,
azpitituluetan karaktere asko soberan daude elkarriezketei dagokionez, adibidez,
lerroen hasieran agertzen diren ``-'' motako karaktereak.

Ondorioz, zer nolako normalizazio egin behar den jakiteko, ikerketa bat egin da
azpitituluetan zehar. Honen emaitzak \ref{sec:karakt-garb}, \ref{sec:zenb-lerr-esald} eta
\ref{sec:gald-eta-erantz} ataletan aurkezten dira.

\subsubsection{Karaktereen garbiketa}
\label{sec:karakt-garb}
Aipatu bezala, karaktere asko elkarrizketetan ez dira esanguratsuak. Ondorioz,
karaktere horiek ezabatu beharra daude. Ordea, ezabatu ahal izateko karaktere
horiek zeintzuk diren jakin beharra dago.

Ikerketa egin ondoren, garbi gelditu da lerroen hasieran erabilgarriak ez diren
zenbait karaktere daudela. Horiek ondorengoak dira: ``-'' (marra), ``\_''
(azpi-marra) eta `` '' (espazioa). Ohiko marra karakterea erabiliena izan da,
baina antzeko UTF-8 motako beste zenbait karaktere ere daude (``–'', ``—'' eta ``―'').

Karaktere horiek zeintzuk diren jakinda, horien ezabaketa egin da.

\subsubsection{Zenbait lerroko esaldien identifikazioa}
\label{sec:zenb-lerr-esald}
Azpitituluak ez daude galdera eta erantzun modura ordenatuta, izan ere, filmean
esaldiak datozten moduan agertzen dira datubasean. Hau da, lerro bakoitiak ez
dute zertan galderak izan eta bikoitiak erantzunak. Erabateko kaosa dago alde
horretan, film batean pertsonaia batek zerbait esaten badu, beste pertsonaia bat
ez dago erantzutera behartuta. Ez hori bakarrik, esaldi askok ez dute erantzunik
behar edo esaldiak luzeegiak direnean, azpitituluen egileak zenbait lerrotan
banatzea erabaki dezake.

Egoera hori kontuan izanda, horri aurre egiteko zenbait neurri hartu dira:
\begin{itemize}
  \item Zenbait egilek pertsonaia bakarrak esaten dituen esaldi oso luzeak
    banatzeko, "\ karakterea erabiltzen dute lerroen hasieran eta batzuetan
    bukaeran ere. Ondorioz, karaktere hori duten lerroak batu behar dira.
  \item "\ karakterearekin banatuta ez dauden zenbait lerro ere badaude,
    ordea. Horiek ``,'' (koma) batekin daude zatituta, adieraziz, koma ondorengo
    lerroa esaldi berberekoa dela. Komekin banatuta dauden lerroak, orduan,
    baita ere, batu egin behar dira.
\end{itemize}


\subsubsection{Galdera eta erantzunen sailkapena}
\label{sec:gald-eta-erantz}

Aurreko garbiketak egin ondoren, azpitituluak sistemak ikasketarako onartzen
duen sarrera formatuan jartzea da egin behar dena. Hain zuzen, sistemak lerro
bakoitzean bi elementu dituen fitxategi bat jasotzen du, lehenengo elementua
galdera bat izanik eta bigarrengoa erantzuna, biak tabulazio batekin bananduta.
Honela, lerro bakoitiak galderak bezala erabiltzen dira (lerroen lehen zatia)
eta bikoitiak erantzun bezala (lerroen bigarren zatia).

Sailkapen hau, ordea, ez da guztiz zuzena, izan ere, oso zaila da tribialki
lerro bakoitza galdera bat edo erantzuna den jakitea, ezin baitira kontrolatu
azpitituluetan dauden salbuespen guztiak. Gainera, errore bat gertatzen denean,
hurrengo galdera-erantzun guztiak gaizki sailkatzen dira beste akats bat
dagoen arte.

\section{Emaitzak}
\label{sec:emaitzak}
Erabilitako sistemak emaitza onak eta txarrak izan ditu. Horien aurkezpena
\ref{sec:onak} eta \ref{sec:txarrak} azpi-ataletan egingo da.

\subsection{Onak}
\label{sec:onak}

\begin{verbatim}
Galdera:   Kaixo
Erantzuna: Kaixo ,
\end{verbatim}
\vspace{0.07cm}

\begin{verbatim}
Galdera:   Zer moduz zaude?
Erantzuna: Ondo .
\end{verbatim}
\vspace{0.07cm}

\begin{verbatim}
Galdera:   Egun on!
Erantzuna: Egun on , jauna .
\end{verbatim}
\vspace{0.07cm}

\begin{verbatim}
Galdera:   Gabon
Erantzuna: Gabon .
\end{verbatim}
\vspace{0.07cm}
\begin{verbatim}
Galdera:   Zorionak!
Erantzuna: Eskerrik asko .
\end{verbatim}
\vspace{0.07cm}

\begin{verbatim}
Galdera:   Zorte on
Erantzuna: Eskerrik asko .
\end{verbatim}
\vspace{0.07cm}

Baita ere, onak bezala onartu daitezkeen emaitzak daude, baina ez dira oso
esanguratsuak elkarrizketei dagokionez.

\begin{verbatim}
Galdera:   Nor zara?
Erantzuna: Ez dakit .
\end{verbatim}
\vspace{0.07cm}

\begin{verbatim}
Galdera:   Nor da zure aita?
Erantzuna: Ez dakit .
\end{verbatim}
\vspace{0.07cm}

\subsection{Txarrak}
\label{sec:txarrak}

\begin{verbatim}
Galdera:   Arratsalde on!
Erantzuna: Egun on , jauna .
\end{verbatim}
\vspace{0.07cm}
\begin{verbatim}
Galdera:   Non egin duzu mina?
Erantzuna: Ez .
\end{verbatim}
\vspace{0.07cm}
\begin{verbatim}
Galdera:   Zer erosiko duzu?
Erantzuna: Ez .
\end{verbatim}
\vspace{0.07cm}
\begin{verbatim}
Galdera:   Zertan zabiltza?
Erantzuna: Ez .
\end{verbatim}
\vspace{0.07cm}
\begin{verbatim}
Galdera:   Arratsalde on!
Erantzuna: <unk> .
\end{verbatim}
\vspace{0.07cm}
\begin{verbatim}
Galdera:   Zer egin duzu?
Erantzuna: Ez egin duzu? .
\end{verbatim}


\section{Analisia}
\label{sec:analisia}
Ikusi den bezala, nahiko emaitza onak lortzen dira ohiko esaldiei erantzuna
emateko. Adibidez, agurrei normalean ondo erantzuten die, hauek izaten dituzten
emaitzak, orokorrean, antzekoak izaten dira eta. Berdina gertatzen da zori ona
opatzen denean, orokorrean, eskerrak ematen baitira erantzun bezala.

Ordea, erantzun oso desberdinak izaten dituzten galderei edo nahikoa ohikoak ez
diren galderei ez zaie erantzun oso egokiak ematen. Izan ere, galdera bat asko
agertzen den arren (adibidez, ``Nor zara?''), erantzunak kasu bakoitzean oso
desberdinak direnez, ez da gai emaitza garbi bat emateko eta nahikoa agertzen ez
diren galderek ere ezin dute erantzun garbirik jaso ez baitago modurik erantzun
egokiak ikasteko.

\section{Ondorioak}
\label{sec:ondorioak}
Garbi dago emaitza hauek ez direla onak eta sistema hau, dagoen moduan, ezin
dela produkzioan erabili. Itzultzen diren erantzunak sinpleegiak dira askotan
eta multzo txiki bateko galdera bat egin ezean erantzun arraroak ematen dira.
Hori gertatzearen arrazoia, zati batean sistemarekin dago erlazionatuta eta
beste batean erabilitako datubasearekin, izan ere, erantzun motzak saihesteko
erabilitako metodoa ez da erabili zitekeen hoberena. Gainera, datubasearen
izaera kaotikoak arazo gehiegi ematen ditu ikasketa garaian.

Seguruenik, galera funtzioa aldatu beharko litzateke eta \textit{Perplexity}-an
oinarritutako beste bat erabili, dagoeneko badaudelako hori erabiltzen duten
ereduak \cite{meena2020}.
Horrez gain, gaur egun, mota honetako galdera erantzun sistema bat
inplementatzeko ideia hoberena \textit{Transformer} motako eredu bat erabiltzea
litzateke, emaitza oso onak ematen ari baitira horrelakoak erabiltzen dituzten
sistemek.

\newpage
\bibliography{acl2020}
\bibliographystyle{ieeetr}

\end{document}
