<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>COBATO. Un chatbot orientado a asistir al pequeño comercio</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Clara Díaz-Ruíz</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fernando Martínez-Santiago</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Arturo Montejo-Ráez</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marıa Teresa Martín-Valdivia</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>L. Alfonso Ureña-López</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Manuel Carlos Dıaz-Galiano</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Miguel Angel Garcıa-Cumbreras</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Manuel García-Vega</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Flor Miriam Plaza-del-Arco</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Salud María Jiménez-Zafra</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>María Dolores Molina-González</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Grupo SINAI, Departamento de Informática, Universidad de Jaén, Universidad de Jaén</institution>
          ,
          <addr-line>Campus Las Lagunillas, 23071, Jaen</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <fpage>48</fpage>
      <lpage>51</lpage>
      <abstract>
        <p>COBATO. A chatbot aimed at assisting small retailers Resumen Se presenta COBATO, un chatbot cuyo dominio es el pequeño comercio y que tiene WhatsApp como canal de comunicación. La finalidad de COBATO es asistir al comercial en aquellas necesidades de información que plantean los clientes y que usualmente se resuelven vía telefónica o algún servicio de mensajería. Así, el asistente virtual facilita al cliente información de productos, horarios, datos de contacto, además de anotar pedidos. En el ámbito del Procesamiento del Lenguaje Natural, se aporta un modelo de datos basado en un grafo de conocimiento que aglutina toda la información que el chatbot requiere del dominio de la aplicación. Una segunda aportación es una representación formal basada en marcos gramaticales del lenguaje que el chatbot conoce. Estos son utilizados para el análisis semántico, así como para generar ejemplos de respuestas de usuario con las que entrenar el modelo de lenguaje usado en el flujo de compresión del lenguaje del chatbot.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;asistente virtual</kwd>
        <kwd>chatbot</kwd>
        <kwd>GF</kwd>
        <kwd>modelos del lenguaje</kwd>
        <kwd>PLN</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introducción</title>
      <p>• Uso de marcos gramaticales (GF,
Grammatical Frameworks)([R]. Concretamente, los
GF proveen de un analizador semántico
especializado al dominio de la aplicación. Sin
embargo, este analizador, si bien es muy
preciso, presenta una cobertura limitada, por
lo que es necesario apoyarse en modelos del
lenguaje como word embeddings o RoBERTa.
A estos, la gramática implementada en GF
provee de ejemplos de frases de usuario que
son generados mediante un proceso
denominado “linearización”. Estos ejemplos están
etiquetados con la acción y las entidades que
allí se encuentran, y son utilizados para el
ajuste o fine-tuning del modelo del lenguaje.
• Grafos de Conocimiento (KG,
KnowledgeGraphs)([H], como modelo único para la
representación del conocimiento, y que
encapsula tanto el modelo de datos del dominio de
la aplicación como el conocimiento
lingüístico, el cual será interpretado por los GF,
previa traducción automática de un modelo
de datos a otro.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Solución propuesta</title>
      <p>En la línea de ([F], la energía ([F] y ([C], se
propone un grafo de conocimiento para enlazar toda
la información, como un único formalismo que
representa (i) la base de datos, donde se codifica la
información estructurada que se desea hacer
pública, y (ii) conocimiento lingüístico, que se representa
como un conjunto de entidades y conceptos (nodos)
y relaciones entre ellos (arcos). Este conocimiento
lingüístico es posteriormete trasladado a GF, los
cuales proveen de un compilador capaz de realizar
análisis semánticos del texto, a la par que generar
expresiones que son plausibles conforme la gramática
codificada. Como se indicó en la introducción,
estas facilidades son aprovechadas tanto para obtener
una interpretación muy precisa de la respuesta de
usuario como para el ajuste fino del modelo de
lenguaje que se requiere en el flujo PLN del chatbot. A
continuación se detallan las tecnologías que forman
parte de la arquitectura de COBATO (ver Figura
1). COBATO requiere de diversas tecnologías, que
se agrupan en servicios de back-end, servicios de
front-end, así como ciertos recursos externos
utilizados para dotar de conocimiento lingüístico a los
servicios de back-end.</p>
      <p>• Servicios de front-end
– React. Front-end Web para la gestión
de la página web que usará el comercio
: perfil de negocio, horarios, productos,
disponibilidad y precios.
– Venom. Front-end WhatsApp, pasarela
entre el chatbot y los dos perfiles de
usuario de este, cliente y comercio.</p>
      <p>Figura 1: Arquitectura general de COBATO
• Servicios de back-end
– Node.js. Actúa como una capa
middleware entre la interfaz web y la base de
datos, un grafo de conocimiento
implementado en TypeDB.
– Python. Es el lenguaje de
programación genérico usado para implementar
diversas librerías para comunicar los
servicios de PLN, front-end y back-end.
– Rasa. Framework para la
implementación de asistentes conversacionales
basados en texto.
– TypeDB. Gestor de Base de Datos que
toma como modelo conceptual de
datos el modelo Entidad-Relación, y que
se implementa mediante un modelo
lógico de datos basado en hipergrafos. A
diferencia de otros DBMS basados en
hipergrafos, TypeDB requiere de un
esquema de datos definido.
– Grammatical Frameworks. Lenguaje de
propósito especial que se compila en
última instancia en una gramática
multilingüe, que consta de una sintaxis
abstracta y un conjunto de sintaxis
concretas. La sintaxis abstracta
define un sistema de árboles sintácticos, y
• Recursos externos.
las sintáxis concretas completan la
gramática codificando la correspondiente
información morfo-sintáctica,
morfológica y léxica, particular de cada
lenguaje.
– Spacy NLP es_core_news. Modelo de
lenguaje usado para el flujo de PLN
para procesar la entrada del usuario:
extracción de entidades, clasificación
de la acción (intención) de usuario,
tokenización, similitud semántica de
términos, etc.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Un caso de uso: las fruterías</title>
      <p>Figura 2: Caso de uso: atender un pedido
En esta primera versión COBATO se ha adaptado
al caso concreto de las fruterías, identificándose diez uso identificados. Ejemplos de expresiones legales
casos de uso principales, relativo a la elaboración en este lenguaje controlado son “cuál es el horario
de un pedido. Otros casos contemplados refieren en fin de semana”, “¿cuál es la dirección del
comerel registro y gestión de contenido de comercio a cio?”, “añade un kilo de producto ” o “¿qué precio
través de la aplicación web, o gestionar ofertas a tiene producto ”, donde “producto ” es cualquier de
través de un canal privado entre el comercio y el los productos dados de alta en la BBDD, frutas y
chatbot. Tomando al cliente como actor principal verduras en este caso. Posteriormente, este lenguaje
destaca el registro del canal de WhatsApp y la ges- controlado es traducido a un programa GF, una
tión de pedidos. En relación al canal de WhatsApp gramática, mediante un script escrito en Python.
para cada cliente, durante el proceso de registro Como se indicó en la sección 2, los GF son muy
el comercio obtiene un enlace junto con el código precisos para el análisis semántico conforme la
graQR equivalente. Cuando un cliente desea interac- mática especificada, pero a su vez limita el lenguaje
tuar con el chatbot solo necesita escanear con su que es posible analizar. Es por ello que usualmente
móvil tal código QR. Automáticamente se crea un los frameworks tales como Rasa utilizan modelos
canal en el cual son miembros el mismo cliente, el de lenguaje, de corte probabilístico, en aras de
alcomercio y COBATO. Nótese que, en consecuencia, canzar una mayor cobertura aun a costa de pérdida
las interacciones cliente-COBATO son igualmente de precisión. Aún en este escenario los GF son de
accesibles por el comercio, que puede intervenir en gran utilidad: mediante un proceso denominado
licualquier momento. Un segundo ejemplo destacado nearización, GF genera todos los posibles árboles
desde la perspectiva del cliente es la atención a un gramaticales plausibles conforme el programa GF
pedido (Figura 2). Se corresponde con la transacción escrito. De este modo obtenemos un conjunto de
a lo largo de la cual el chatbot solicita al cliente ejemplos con el cual ajustar al ámbito concreto de
qué productos necesita, y en qué cantidad. Una esta aplicación el modelo de lenguaje que usa Rasa
vez el cliente desee finalizar, la transacción queda (es_core_news en este caso), como parte de su
fluen estado “pendiente”, hasta que, eventualmente, jo de PLN. Particularmente, estos ejemplos están
el comercio confirme el pedido en el mismo canal etiquetados con cada una de las acciones de usuario
WhatsApp que comparte con el cliente y COBATO, conforme los casos de uso identificados, así como
pasando entonces el pedido a “atendido”. con las entidades relevantes que allí se encuentran,</p>
      <p>Previo al uso de COBATO por parte del cliente, principalmente frutas y verduras. Finalmente, como
es necesaria su instanciación y puesta en marcha: la parte de esta puesta en marcha de COBATO se
BBDD implementada en TypeDB ha sido instancia- han escrito diversos “scripts” para Rasa, de
moda con los productos disponibles (frutas y verduras do que este pueda gestionar la lógica de diálogo y
en este caso). También se añade información léxica, generar las respuestas de usuario necesarias. Una
sintáctica y semántica del lenguaje entendido por vez COBATO está en funcionamiento, el
comerCOBATO, a modo de lenguaje controlado en el cio se ha registrado en el sistema, y el cliente ha
ámbito de la aplicación, y que representa las posi- usado el código QR correspondiente, este último
bles interacciones cliente-chatbot expresadas en un puede empezar a interactuar con COBATO, y con
lenguaje natural controlado conforme los casos de el dependiente, a través de un canal WhatsApp.</p>
      <sec id="sec-3-1">
        <title>Las solicitudes de cliente son, en primera instancia,</title>
        <p>atendidas por el front-end Venom, el cuál actúa
como pasarela entre WhatsApp y Rasa, el framework
que finalmente atenderá las solicitudes de usuario.
La respuesta que Rasa proporciona al usuario se
confecciona conforme la intención de este y el KG
almacenado en TypeDB. Para poder identificar la
intención de usuario, previamente Rasa es
entrenado acorde los guiones escritos a tal efecto y el
modelo de lenguaje previamente ajustado con los
ejemplos provistos por GF.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Conclusiones y trabajo futuro</title>
      <p>Se propone el desarrollo de un chatbot cuyo
conocimiento se codifica en KG y GF, de modo que toda
la información queda en un único repositorio, con
las ventajas que ello conlleva desde el punto de vista
de la integridad y consistencia de los datos, además
de facilitar el mantenimiento, escalado y migración
del sistema. El proyecto está en fase de prueba, con
lo que el siguiente paso será probarlo en entornos
reales. A medio plazo, se pretende avanzar en el uso
de los KG. Concretamente, se debe incluir en este
conocimiento para la gestión del flujo de diálogo y
la generación de las respuestas automáticas. Ambos
aspectos actualmente son implementados en Rasa.
Separar completamente el framework del modelo de
conocimiento permitirá el desarrollo de un gestor
de diálogo basado íntegramente en grafos.</p>
    </sec>
    <sec id="sec-5">
      <title>Agradecimientos</title>
      <sec id="sec-5-1">
        <title>Este proyecto es parcialmente financiado con fon</title>
        <p>dos de la Oficina de Transferencia de Resultados
de la Investigación de la Universidad de Jaén y
del Instituto de Estudios Giennenses, área de
conocimiento de Ciencias Naturales y Tecnología, así
como por el Gobierto español a través del proyecto
RTI2018-094653-B-C21, LIVING-LANG.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ranta</surname>
          </string-name>
          ,
          <article-title>Grammatical framework</article-title>
          ,
          <source>Journal of Functional Programming</source>
          <volume>14</volume>
          (
          <year>2004</year>
          )
          <fpage>145</fpage>
          -
          <lpage>189</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Hogan</surname>
          </string-name>
          , E. Blomqvist,
          <string-name>
            <given-names>M.</given-names>
            <surname>Cochez</surname>
          </string-name>
          , C. d'Amato,
          <string-name>
            <given-names>G. D.</given-names>
            <surname>Melo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Gutierrez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kirrane</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. E. L.</given-names>
            <surname>Gayo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Navigli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Neumaier</surname>
          </string-name>
          , et al.,
          <string-name>
            <surname>Knowledge</surname>
            <given-names>graphs</given-names>
          </string-name>
          ,
          <source>ACM Computing Surveys (CSUR) 54</source>
          (
          <year>2021</year>
          )
          <fpage>1</fpage>
          -
          <lpage>37</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Fensel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Akbar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Kärle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Blank</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pixner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gruber</surname>
          </string-name>
          ,
          <article-title>Knowledge graphs for online marketing and sales of touristic services</article-title>
          ,
          <source>Information</source>
          <volume>11</volume>
          (
          <year>2020</year>
          )
          <fpage>253</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>D.</given-names>
            <surname>Fensel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Şimşek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Angele</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Huaman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Kärle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Panasiuk</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Toma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Umbrich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Wahler</surname>
          </string-name>
          ,
          <article-title>Why we need kg: Applications</article-title>
          , in: Knowledge Graphs, Springer,
          <year>2020</year>
          , pp.
          <fpage>94</fpage>
          -
          <lpage>123</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <given-names>P.</given-names>
            <surname>Christmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. Saha</given-names>
            <surname>Roy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Abujabal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Singh</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Weikum, Look before you hop: Conversational question answering over knowledge graphs using judicious context expansion</article-title>
          ,
          <source>in: 28 CIKM</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>729</fpage>
          -
          <lpage>738</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>