Commit 573c9645 authored by Bruno López Trigo's avatar Bruno López Trigo

Borrado de carpeta docs antiga

parent e5651383
Para executar o programa:
java -jar wekaparser.jar schema_propiedades xml_propiedades schema_entrada schema_config xml_config xml_log xml_entrada txt_weka html_explicacion
schema_propiedades: arquivo xsd coa estrutura que debe seguir o xml de propiedades
xml_propiedades: xml de propiedades do problema concreto a resolver
schema_entrada: arquivo xsd coa estrutura que debe seguir o xml de entrada
schema_config: arquivo xsd coa estrutura que debe seguir o xml de configuración
xml_config: xml de configuración global do sistema
xml_log: xml que se emprega como log do sistema
xml_entrada: xml cos datos de entrada para o problema
txt_weka: log xerado por Weka
html_explicacion: html usado para proporcionar a explicación
Pódese empregar o .bat baixo o directorio /codigo/WekaParser-v2/resources/execute.bat
Está preconfigurado para empregar os arquivos da propia carpeta resources e para o problema
das cervexas
Para executar co .bat:
execute.bat Color valor Bitterness valor Strength valor
Color, Bitterness e Strength: nomes dos atributos do problema
valor: valor numérico dos atributos
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand*\new@tpo@label[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\citation{maven}
\citation{jersey}
\citation{tomcat}
\citation{jaxb}
\citation{jhonson}
\citation{simplenlg}
\@writefile{toc}{\contentsline {section}{\numberline {1}O Servizo Web ExpliClas}{1}{section.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Tecnolox\'ias empregadas}{1}{subsection.1.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Dependencias de ExpliClas}{1}{subsection.1.2}}
\@writefile{toc}{\contentsline {section}{\numberline {2}M\'odulos de ExpliClas}{1}{section.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}M\'odulo Int\'erprete}{1}{subsection.2.1}}
\newlabel{interprete}{{2.1}{1}{M\'odulo Int\'erprete}{subsection.2.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Constructor do problema}{2}{subsubsection.2.1.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Constructor de regras e soluci\'ons}{5}{subsubsection.2.1.2}}
\citation{requisitos-lin}
\citation{requisitos-lin}
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 1. Constru\'ir a \'arbore de clasificaci\'on}{6}{section*.2}}
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 2. Recorrer a \'arbore de clasificaci\'on}{6}{section*.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}M\'odulo Xerador de Explicaci\'ons}{6}{subsection.2.2}}
\newlabel{xerador}{{2.2}{6}{M\'odulo Xerador de Explicaci\'ons}{subsection.2.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Especificaci\'on de m\'etodos do servizo}{6}{section.3}}
\newlabel{metodos}{{3}{6}{Especificaci\'on de m\'etodos do servizo}{section.3}{}}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Petici\'on para obter a explicaci\'on dunha clasificaci\'on}}{7}{table.1}}
\newlabel{tabla_clas}{{1}{7}{Petici\'on para obter a explicaci\'on dunha clasificaci\'on}{table.1}{}}
\bibcite{maven}{1}
\bibcite{jersey}{2}
\bibcite{tomcat}{3}
\bibcite{jaxb}{4}
\bibcite{jhonson}{5}
\bibcite{simplenlg}{6}
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Petici\'on para obter a explicaci\'on global do clasificador}}{8}{table.2}}
\newlabel{tabla_glob}{{2}{8}{Petici\'on para obter a explicaci\'on global do clasificador}{table.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Cliente do Servizo}{8}{section.4}}
\bibcite{requisitos-lin}{7}
\global\@namedef{scr@dte@section@lastmaxnumwidth}{10.84047pt}
\global\@namedef{scr@dte@subsection@lastmaxnumwidth}{18.37163pt}
\global\@namedef{scr@dte@subsubsection@lastmaxnumwidth}{26.8883pt}
This is BibTeX, Version 0.99d (TeX Live 2017/Arch Linux)
Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
The top-level auxiliary file: Especificacion-ExpliClas.aux
I found no \bibdata command---while reading file Especificacion-ExpliClas.aux
I found no \bibstyle command---while reading file Especificacion-ExpliClas.aux
You've used 7 entries,
0 wiz_defined-function locations,
90 strings with 573 characters,
and the built_in function-call counts, 0 in all, are:
= -- 0
> -- 0
< -- 0
+ -- 0
- -- 0
* -- 0
:= -- 0
add.period$ -- 0
call.type$ -- 0
change.case$ -- 0
chr.to.int$ -- 0
cite$ -- 0
duplicate$ -- 0
empty$ -- 0
format.name$ -- 0
if$ -- 0
int.to.chr$ -- 0
int.to.str$ -- 0
missing$ -- 0
newline$ -- 0
num.names$ -- 0
pop$ -- 0
preamble$ -- 0
purify$ -- 0
quote$ -- 0
skip$ -- 0
stack$ -- 0
substring$ -- 0
swap$ -- 0
text.length$ -- 0
text.prefix$ -- 0
top$ -- 0
type$ -- 0
warning$ -- 0
while$ -- 0
width$ -- 0
write$ -- 0
(There were 2 error messages)
This diff is collapsed.
\BOOKMARK [1][-]{section.1}{O Servizo Web ExpliClas}{}% 1
\BOOKMARK [2][-]{subsection.1.1}{Tecnolox\355as empregadas}{section.1}% 2
\BOOKMARK [2][-]{subsection.1.2}{Dependencias de ExpliClas}{section.1}% 3
\BOOKMARK [1][-]{section.2}{M\363dulos de ExpliClas}{}% 4
\BOOKMARK [2][-]{subsection.2.1}{M\363dulo Int\351rprete}{section.2}% 5
\BOOKMARK [3][-]{subsubsection.2.1.1}{Constructor do problema}{subsection.2.1}% 6
\BOOKMARK [3][-]{subsubsection.2.1.2}{Constructor de regras e soluci\363ns}{subsection.2.1}% 7
\BOOKMARK [2][-]{subsection.2.2}{M\363dulo Xerador de Explicaci\363ns}{section.2}% 8
\BOOKMARK [1][-]{section.3}{Especificaci\363n de m\351todos do servizo}{}% 9
\BOOKMARK [1][-]{section.4}{Cliente do Servizo}{}% 10
\documentclass{scrartcl}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{float}
\usepackage{color}
\usepackage{array}
\usepackage{mathtools}
\definecolor{gray}{rgb}{0.4,0.4,0.4}
\definecolor{darkblue}{rgb}{0.0,0.0,0.6}
\definecolor{cyan}{rgb}{0.0,0.6,0.6}
\lstset{
basicstyle=\ttfamily,
columns=fullflexible,
showstringspaces=false,
commentstyle=\color{gray}\upshape
}
\lstdefinelanguage{XML}
{
morestring=[b]",
morestring=[s]{>}{<},
morecomment=[s]{<?}{?>},
stringstyle=\color{black},
identifierstyle=\color{darkblue},
keywordstyle=\color{cyan},
morekeywords={}% list your attributes here
}
\title{ExpliClas: Servizo Web para a Explicaci\'on autom\'atica en Linguaxe Natural de modelos de Clasificaci\'on en Minar\'ia de Datos}
\subtitle{(Documento de Especificaci\'on do Servizo)}
\author{Bruno L\'opez Trigo}
\renewcommand*\contentsname{Contidos}
\begin{document}
\maketitle
\tableofcontents
\pagenumbering{gobble}
\newpage
\pagenumbering{arabic}
\section{O Servizo Web ExpliClas}
O servizo web ExpliClas, consiste nun servizo REST cuxo obxectivo \'e aportar unha explicaci\'on en linguaxe natural da soluci\'on proporcionada por un sistema de clasificaci\'on. En concreto, os sistemas de clasificaci\'on tratados ser\'an os baseados en \'arbores de decisi\'on e regras borrosas, ``fuzzy''. O servizo recibe uns datos de entrada dun problema concreto, determina a soluci\'on (ou posibles soluci\'ons) de acordo ao sistema de clasificaci\'on e xera unha explicaci\'on en linguaxe natural para xustificar dunha forma comprensible a decisi\'on tomada polo sistema.
\subsection{Tecnolox\'ias empregadas}
Nesta secci\'on l\'istanse as tecnolox\'ias empregadas para a implementaci\'on e despregue do servizo web:
\begin{itemize}
\item{\textbf{Maven} - para o control de versi\'ons do proxecto \cite{maven}}
\item{\textbf{Jersey} - para a implementaci\'on do servizo REST \cite{jersey}}
\item{\textbf{Tomcat} - para o despregue do servizo web \cite{tomcat}}
\end{itemize}
\subsection{Dependencias de ExpliClas}
ExpliClas emprega unha serie de librar\'ias externas que son imprescindibles para o seu funcionamento. En primeiro lugar, est\'a a librar\'ia Java Architecture for XML Binding (JAXB) \cite{jaxb}, que facilita a transformaci\'on dunha clase Java a un XML e a instanciaci\'on dun XML nunha clase Java. Esta utilidade \'e necesaria, tendo en conta que o servizo web precisa do acceso a unha gran cantidade de arquivos de configuraci\'on XML. En segundo lugar, existe unha dependencia cunha implementaci\'on do algoritmo de detecci\'on de ciclos en grafos de Donald B. Johnson \cite{jhonson}. Este algoritmo ser\'a empregado para detectar posibles confusi\'ons entre os tipos de clasificaci\'on do problema, enriquecendo a explicaci\'on do sistema. Por \'ultimo, ExpliClas emprega unha librar\'ia denominada SimpleNLG \cite{simplenlg}, empregada na fase de realizaci\'on ling\"u\'istica para a xeraci\'on de explicaci\'ons en linguaxe natural.
\section{M\'odulos de ExpliClas}
O servizo web ExpliClas, consta esencialmente de dous m\'odulos: M\'odulo Int\'erprete (\ref{interprete}) e M\'odulo Xerador de Explicaci\'ons (\ref{xerador}). Ditos m\'odulos abarcan as d\'uas funci\'ons b\'asicas que se requiren do servizo: interpretar os datos do problema e chegar ata unha soluci\'on; e xerar unha explicaci\'on acorde aos datos de entrada e a soluci\'on determinada.
\subsection{M\'odulo Int\'erprete}
\label{interprete}
Este m\'odulo enc\'argase dos dous procedementos iniciais do servizo: en primeiro lugar, obter os datos de entrada e constru\'ir a estrutura adecuada do problema; en segundo lugar, unha vez establecido o problema, constru\'ir as regras necesarias para constru\'ir unha soluci\'on.
\subsubsection{Constructor do problema}
A parte de construcci\'on do problema, conleva primeiro interpretar os datos de entrada do usuario e determinar que tipo de problema se debe resolver. Por unha parte, s\'abase que a entrada que debe proporcionar o usuario ten o seguinte formato:
\lstset{language=XML}
\begin{lstlisting}
<problem>
<attributes>
<attribute name="Color">
<value>9</value>
</attribute>
<attribute name="Bitterness">
<value>22</value>
</attribute>
<attribute name="Strength">
<value>0.056</value>
</attribute>
</attributes>
</problem>
\end{lstlisting}
O usuario debe aportar unha lista de atributos, \emph{attributes}, que est\'an identificados por un determinado nome, e teñen un valor num\'erico concreto. Como veremos m\'ais adiante (\ref{metodos}), o tipo de problema, as\'i como a lista de atributos cos seus respectivos valores, son indicados na propia URL da petici\'on ao servizo web.
Con ditos valores, o servizo constr\'ue a estrutura do problema, que non s\'o est\'a composto por unha serie de valores para os seus atributos, sen\'on que ten unha estrutura m\'ais complexa. Un problema tam\'en constar\'ia da dunha serie de ``propiedades'', que fan referencia aos distintos valores ling\"u\'isticos que pode tomar cada atributo.
\newpage
\lstset{language=XML}
\begin{lstlisting}
<problem>
<attributes>
<attribute name="Color">
<valuetxt>Color</valuetxt>
<maxValue>45</maxValue>
<minValue>0</minValue>
<properties>
<property>
<valueTxt>Pale</valueTxt>
<interval>
<leftValue>0</leftValue>
<rightValue>3</rightValue>
</interval>
</property>
<property>
<valueTxt>Straw</valueTxt>
<interval>
<leftValue>3</leftValue>
<rightValue>7.5</rightValue>
</interval>
</property>
...
</properties>
...
</attribute>
...
</attributes>
</problem>
\end{lstlisting}
Como se pode apreciar no anterior XML, o problema consta das propiedades anteriores das que se fixo menci\'on previamente. En primeiro lugar, o atributo ten un valor ling\"u\'istico, \emph{valuetxt}, que non ten por que coincidir co identificador do atributo, \emph{name}. Adem\'ais o atributo ac\'otase para un valor m\'aximo, \emph{maxValue} e un valor m\'inimo \emph{minValue}. Finalmente, cada atributo consta dunha lista de propiedades, que \'a \'ua vez te\~nen o seu propio valor ling\"u\'istico, \emph{valueTxt}, e un intervalo. Este intervalo comprende os valores esquerdo, \emph{leftValue}, e dereito, \emph{rightValue}, onde o atributo tomar\'ia dito valor ling\"u\'istico.
Por outra parte, est\'a o derradeiro elemento que define perfectamente o problema de clasificaci\'on xunto aos xa mencionados. E tr\'atase da especificaci\'on dos consecuentes ou clases, que supoñen unha soluci\'on ao problema de clasificaci\'on.
\newpage
\begin{lstlisting}
<problem>
<consequents>
<consequent>
<code>1</code>
<name>1.0</name>
<text>Blanche</text>
</consequent>
<consequent>
<code>2</code>
<name>2.0</name>
<text>Lager</text>
</consequent>
<consequent>
<code>3</code>
<name>3.0</name>
<text>Pilsner</text>
</consequent>
...
</consequents>
</problem>
\end{lstlisting}
Este \'ultimo XML amosa a informaci\'on dos consecuentes, que estar\'an compostos por un c\'odigo, \emph{code}, un identificador, \emph{name}, e un valor ling\"u\'istico. A necesidade de especificar un c\'odigo e un identificador xurde de que o identificador do consecuente non ten por que coincidir co c\'odigo. De feito, o identificador pode ser un valor textual e sirve para identificar os consecuentes ao ler a \'arbore de clasificaci\'on. Sen embargo, o c\'odigo do consecuente perm\'itenos identificar a fila e columnas que lle corresponden a dito consecuente dentro da matriz de confusi\'on do problema.
Existe outra parte complementaria, da que se encarga este m\'odulo, que consiste na interpretaci\'on da matriz de confusi\'on do problema. Este aspecto, non corresponde a unha parte vital na resoluci\'on do problema, pero s\'i o \'e no momento de dar explicaci\'ons sobre o propio clasificador e sobre a decisi\'on tomada por este. Nesta parte complementaria o m\'odulo lee a matriz de confusi\'on do problema, asoci\'andoa \'a estructura do mesmo e completando a informaci\'on dos consecuentes.
\newpage
\begin{lstlisting}
<problem>
<consequents>
<consequent>
<code>1</code>
<name>1.0</name>
<text>Blanche</text>
<percentage_global>100.0</percentage_global>
</mistakes>
</consequent>
<consequent>
<code>2</code>
<name>2.0</name>
<text>Lager</text>
<percentage_global>98.0</percentage_global>
<mistakes>
<mistake>
<code>7.0</code>
<name>7.0</name>
<text>Porter</text>
<percentage_global>2.0</percentage_global>
</mistake>
</mistakes>
</consequent>
...
</consequents>
</problem>
\end{lstlisting}
Desta maneira, tal e como se reflexa no XML anterior, coa matriz de confusi\'on o m\'odulo \'e capaz de engadir informaci\'on \'util para o proceso de explicaci\'on para cada consecuente. Como vemos engade un porcentaxe de fiabilidade do consecuente, \emph{percentage\_global}, que pode ser dun 100\% no caso de non haber confusi\'on implicando a ausencia de erros, \emph{mistake}. No caso de ser un porcentaxe menor, teremos unha serie de erros que volven a ser outros consecuentes, pero tendo en conta que agora, \emph{percentage\_global} representa o grado de confusi\'on dese consecuente correspondente pai.
Con toda esta informaci\'on, este M\'odulo Int\'erprete \'e capaz de constru\'ir unha estructura de problema co cal traballar. Adem\'ais, \'e importante destacar a orixe diferente destes datos: por unha parte, os valores concretos de cada atributo do problema, as\'i como o tipo de problema son especificados polo propio usuario na chamada ao servizo; por outra parte, as propiedades dos atributos, as\'i como os consecuentes do problema, est\'an definidos nunha serie de arquivos internos de configuraci\'on en formato XML.
\subsubsection{Constructor de regras e soluci\'ons}
Unha vez definido o problema, o seguinte paso \'e buscar a soluci\'on do mesmo para o que se deber\'a de forma resumida, seguir os seguintes pasos:
\begin{enumerate}
\item{Constru\'ir a \'arbore de clasificaci\'on do problema}
\item{Recorrer a \'arbore de clasificaci\'on ata chegar a unha soluci\'on (ou varias)}
\end{enumerate}
\paragraph{1. Constru\'ir a \'arbore de clasificaci\'on}
Este proceso res\'umese na lectura do arquivo onde se atopa definida a \'arbore (arquivo de log de Weka) e xerar a estructura apropiada. Para a \'arbore t\'omase unha estrutura baseada en dous tipos de nodos: nodos intermedios e nodos folla, ambos enlazados entre s\'i. Cada nodo intermedio, sup\'on unha decisi\'on correspondende a un atributo para o que se fixa un valor num\'erico. Cada nodo folla, representa un determinado consecuente, \'e dicir, unha soluci\'on ao problema. Os nodos folla, a diferencia dos nodos intermedios non poden ter ning\'un nodo fillo e conte\~nen uns valores que indican o n\'umero de instancias clasificadas, correcta e incorrectamente.
\paragraph{2. Recorrer a \'arbore de clasificaci\'on}
O procedemento para recorrer a \'arbore de clasificaci\'on \'e moi sinxelo. P\'artese do nodo ra\'iz e, e t\'omase a decisi\'on de tomar o fillo esquerdo ou o dereito en funci\'on dos seguintes aspectos: o atributo correspondente ao nodo e o valor de dito atributo proporcionado polo usuario. Rep\'itese a operaci\'on co novo nodo ata acadar un nodo folla. Durante o proceso, constr\'uense as regras que determinaron a soluci\'on final. Estas regras est\'an compostas por unha serie de antecedentes (decisi\'ons tomadas) e un consecuente (nodo folla alcanzado). Adem\'ais, para cada antecedente, que corresponde cun atributo, constr\'uese un intervalo acotado a partir dos valores le\'idos nos nodos. Este intervalo, sirve para escoller o valor lingü\'istico m\'ais apropiado para cada atributo.
Por outra parte, durante o recorrido da \'arbore p\'odese xerar m\'ais dunha soluci\'on alternativa. Isto \'e debido ao establecemento dun umbral dun \(\pm5\%\) na comparaci\'on con cada nodo, que pode abrir cami\~nos alternativos. Este aspecto det\'allase m\'ais no documento de Requisitos da Linguaxe \cite{requisitos-lin}, onde se estuda como se xeran e explican ling\"u\'isticamente as alternativas.
\subsection{M\'odulo Xerador de Explicaci\'ons}
\label{xerador}
Sup\'on a parte esencialmente ling\"u\'istica do servizo, correspondendo ao elemento que realmente xera a salida do mesmo. O funcionamento bas\'ease en dous procesos: primeiro, a obtenci\'on dos datos da soluci\'on que estrictamente son unha sa\'ida; segundo, a realizaci\'on ling\"u\'istica destes datos (xeraci\'on do texto) usando SimpleNLG. Como a xeraci\'on ling\"u\'istica se explica en maior detalle no documento de Requisitos da Linguaxe \cite{requisitos-lin} non ten sentido redundar dita informaci\'on neste documento.
\section{Especificaci\'on de m\'etodos do servizo}
\label{metodos}
Para definir ben o funcionamento e uso do servizo REST, especif\'icanse a continuaci\'on os m\'etodos soportados por ExpliClas.
\begin{table}[H]
\caption{Petici\'on para obter a explicaci\'on dunha clasificaci\'on}
\label{tabla_clas}
\begin{tabular}{|m{2cm}|m{4cm}|m{3cm}|m{4cm}|}
\hline
\textbf{M\'etodos} & \hspace{1cm}\newline /explicacion\_clas/ \newline \textbf{\{tipo\_problema\}} \newline & \textbf{Par\'ametros} & \textbf{Descrici\'on}
\\
\hline
GET & \hspace{1cm} \newline
\textbf{200 (OK)} : o tipo de problema existe, e os atributos foron establecidos correctamente \newline\newline
\textbf{400 (BAD REQUEST)} : os atributos non foron correctamente especificados polo usuario \newline\newline
\textbf{500 (INTERNAL SERVER ERROR)} : produciuse algunha excepci\'on durante a xeraci\'on da explicaci\'on \newline
& \textbf{attN}=(decimal) -- atributo N do problema (attN toma o valor do identificador de cada atributo)
& O servizo obt\'en os datos do problema especificados polo usuario na petici\'on e devolve unha cadea de texto coa explicaci\'on xerada sobre a soluci\'on determinadas a dito problema
\\
\hline
\end{tabular}
\end{table}
\begin{table}[H]
\begin{tabular}{|m{15cm}|}
\hline
\hspace{1cm}\newline
\textbf{Exemplos de petici\'ons}
\newline
\\
\hline
\hspace{1cm}\newline
/explicacion\_clas/\textbf{beer?Color=2\&Bitterness=23\&Strength=0.049}
\newline
\\
\hline
\hspace{1cm}\newline
/explicacion\_clas/\textbf{flavia?Area=8199\&Perimeter=5089.674\&Diameter=1021.773}
\newline
\\
\hline
\end{tabular}
\end{table}
\begin{table}[H]
\caption{Petici\'on para obter a explicaci\'on global do clasificador}
\label{tabla_glob}
\begin{tabular}{|m{2cm}|m{4cm}|m{3cm}|m{4cm}|}
\hline
\textbf{M\'etodos} & \hspace{1cm}\newline /explicacion\_glob/ \newline \textbf{\{tipo\_problema\}} \newline & \textbf{Par\'ametros} & \textbf{Descrici\'on}
\\
\hline
GET & \hspace{1cm} \newline
\textbf{200 (OK)} : o tipo de problema existe \newline\newline
\textbf{500 (INTERNAL SERVER ERROR)} : produciuse algunha excepci\'on durante a xeraci\'on da explicaci\'on \newline
& Sen par\'ametros
& O servizo devolve unha cadea de texto coa explicaci\'on global sobre o clasificador empregado para resolver o tipo de problema apuntado pola URL
\\
\hline
\end{tabular}
\end{table}
Tal e como se aprecia nas t\'aboas anteriores (\ref{tabla_clas} e \ref{tabla_glob}), o servizo ExpliClas trad\'ucese en d\'uas petici\'ons que devolven unha cadea de texto coa explicaci\'on xerada. A primeira destas petici\'ons, enc\'argase de resolver un problema de clasificaci\'on concreto e xustificar as decisi\'ons do clasificador. A segunda, trata de dar unha explicaci\'on global de como se comporta o clasificador empregado e cal \'e a s\'ua fiabilidade.
\section{Cliente do Servizo}
Falta por engadir esta secci\'on
\begin{thebibliography}{9}
\bibitem{maven} \textsc{The Apache Software Foundation}, \textit{Apache Maven Project}. Consultada o 5 de abril de 2018, en \url{https://maven.apache.org/}
\bibitem{jersey} \textsc{Oracle Corporation}, \textit{Jersey RESTful Web Services in Java}. Consultada o 5 de abril de 2018, en \url{https://jersey.github.io/}
\bibitem{tomcat} \textsc{The Apache Software Foundation}, \textit{Apache Tomcat}. Consultada o 5 de abril de 2018, en \url{http://tomcat.apache.org/}
\bibitem{jaxb} \textsc{Oracle Corporation}, \textit{Java Architecture for XML Binding (JAXB)}. Consultada o 5 de abril de 2018, en \url{http://www.oracle.com/technetwork/articles/javase/index-140168.html}
\bibitem{jhonson} \textsc{Donald B. Johnson}, \textit{Finding all the elementary circuits of a directed graph}. Siam J. Comput. Vol.4, No.1, March 1975
\bibitem{simplenlg} \textsc{Ehud Reiter, Albert Gatt. Dave Westwater}, \textit{SimpleNLG}. Consultada o 5 de abril de 2018, en \url{https://github.com/simplenlg/simplenlg}
\bibitem{requisitos-lin} \textsc{Bruno L\'opez Trigo}, \textit{ExpliClas: Servizo Web para a Explicaci\'on autom\'atica en Linguaxe Natural de modelos de Clasificaci\'n en Minar\'ia de Datos. Documento de Requisitos da Linguaxe}. Abril 2018.
\end{thebibliography}
\end{document}
\contentsline {section}{\numberline {1}O Servizo Web ExpliClas}{1}{section.1}
\contentsline {subsection}{\numberline {1.1}Tecnolox\'ias empregadas}{1}{subsection.1.1}
\contentsline {subsection}{\numberline {1.2}Dependencias de ExpliClas}{1}{subsection.1.2}
\contentsline {section}{\numberline {2}M\'odulos de ExpliClas}{1}{section.2}
\contentsline {subsection}{\numberline {2.1}M\'odulo Int\'erprete}{1}{subsection.2.1}
\contentsline {subsubsection}{\numberline {2.1.1}Constructor do problema}{2}{subsubsection.2.1.1}
\contentsline {subsubsection}{\numberline {2.1.2}Constructor de regras e soluci\'ons}{5}{subsubsection.2.1.2}
\contentsline {paragraph}{\nonumberline 1. Constru\'ir a \'arbore de clasificaci\'on}{6}{section*.2}
\contentsline {paragraph}{\nonumberline 2. Recorrer a \'arbore de clasificaci\'on}{6}{section*.3}
\contentsline {subsection}{\numberline {2.2}M\'odulo Xerador de Explicaci\'ons}{6}{subsection.2.2}
\contentsline {section}{\numberline {3}Especificaci\'on de m\'etodos do servizo}{6}{section.3}
\contentsline {section}{\numberline {4}Cliente do Servizo}{8}{section.4}
This diff is collapsed.
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Arch Linux) (preloaded format=pdflatex 2018.3.26) 6 APR 2018 13:24
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
**Especificacion-ExpliClas.tex
! Emergency stop.
<*> Especificacion-ExpliClas.tex
Here is how much of TeX's memory you used:
3 strings out of 492982
130 string characters out of 6138579
54251 words of memory out of 5000000
3671 multiletter control sequences out of 15000+600000
3640 words of font info for 14 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
0i,0n,0p,1b,6s stack positions out of 5000i,500n,10000p,200000b,80000s
! ==> Fatal error occurred, no output PDF file produced!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="es">
<head>
<!-- Generated by javadoc (1.8.0_161) on Mon Mar 19 18:48:37 CET 2018 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>All Classes</title>
<meta name="date" content="2018-03-19">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">All&nbsp;Classes</h1>
<div class="indexContainer">
<ul>
<li><a href="rulesystem/Antecedent.html" title="class in rulesystem" target="classFrame">Antecedent</a></li>
<li><a href="iosystem/Attribute.html" title="class in iosystem" target="classFrame">Attribute</a></li>
<li><a href="iosystem/Config.html" title="class in iosystem" target="classFrame">Config</a></li>
<li><a href="iosystem/ConfusionMatrix.html" title="class in iosystem" target="classFrame">ConfusionMatrix</a></li>
<li><a href="rulesystem/Consequent.html" title="class in rulesystem" target="classFrame">Consequent</a></li>
<li><a href="wekaparser/v2/Controller.html" title="class in wekaparser.v2" target="classFrame">Controller</a></li>
<li><a href="iosystem/FileContainer.html" title="class in iosystem" target="classFrame">FileContainer</a></li>
<li><a href="iosystem/Interval.html" title="class in iosystem" target="classFrame">Interval</a></li>
<li><a href="iosystem/IOImpl.html" title="class in iosystem" target="classFrame">IOImpl</a></li>
<li><a href="iosystem/IOInterface.html" title="interface in iosystem" target="classFrame"><span class="interfaceName">IOInterface</span></a></li>
<li><a href="languagerealiser/LanguageRealiser.html" title="class in languagerealiser" target="classFrame">LanguageRealiser</a></li>
<li><a href="languagerealiser/LanguageRealiserInterface.html" title="interface in languagerealiser" target="classFrame"><span class="interfaceName">LanguageRealiserInterface</span></a></li>
<li><a href="iosystem/LeafNode.html" title="class in iosystem" target="classFrame">LeafNode</a></li>
<li><a href="iosystem/Node.html" title="class in iosystem" target="classFrame">Node</a></li>
<li><a href="iosystem/NoLeafNode.html" title="class in iosystem" target="classFrame">NoLeafNode</a></li>
<li><a href="iosystem/Problem.html" title="class in iosystem" target="classFrame">Problem</a></li>
<li><a href="iosystem/Property.html" title="class in iosystem" target="classFrame">Property</a></li>
<li><a href="iosystem/ReaderWeka.html" title="class in iosystem" target="classFrame">ReaderWeka</a></li>
<li><a href="rulesystem/Rule.html" title="class in rulesystem" target="classFrame">Rule</a></li>
<li><a href="rulesystem/RuleBuilder.html" title="class in rulesystem" target="classFrame">RuleBuilder</a></li>
<li><a href="rulesystem/RuleBuilderInterface.html" title="interface in rulesystem" target="classFrame"><span class="interfaceName">RuleBuilderInterface</span></a></li>
<li><a href="rulesystem/Solution.html" title="class in rulesystem" target="classFrame">Solution</a></li>
<li><a href="iosystem/Tree.html" title="class in iosystem" target="classFrame">Tree</a></li>
<li><a href="wekaparser/v2/WekaParserV2.html" title="class in wekaparser.v2" target="classFrame">WekaParserV2</a></li>
<li><a href="iosystem/XMLParser.html" title="class in iosystem" target="classFrame">XMLParser</a></li>
</ul>