LinguAI: chatbot divulgativo de lingüística
computacional
Por
Adrián Gázquet Bustos
Máster Universitario en Letras Digitales: Estudios Avanzados en
Textualidades Electrónicas
Facultad de Filología
Dirigido por
Juan Antonio Clemente
Sandra Miguel
LinguAI: divulgative chatbot on computational
linguistics
Madrid, 2023–2024
LinguAI
Chatbot divulgativo de lingüística computacional
Memoria que se presenta para el Trabajo de Fin de Máster
Adrián Gázquet Bustos
Dirigido por
Juan Antonio Clemente
Sandra Miguel
Departamento de Lingüística, Estudios Árabes, Hebreos, Vascos y de Asia
Oriental
Facultad de Filología
Universidad Complutense de Madrid
Madrid, 2024
Agradecimientos
Si bien he vertido muchas palabras en esta memoria, me quedan unas pocas para agradecer
el camino que ha supuesto.
A mis tutores, Juan Antonio Clemente, por su atención y disponibilidad, y Sandra Miguel,
por convertirse en un referente.
Al equipo de Asistentes Conversacionales de NTT DATA, por acogerme durante mis
prácticas y proporcionarme la formación y el apoyo necesarios para desarrollar este pro-
yecto.
A mis amigos Alex, Jhon y Ulman, por creer en mí.
A mi pareja Chiara, por ser mi costumbre.
A mi hermana Cristina, mi cuñado Rubén y mis sobrinos Aarón y Enzo, por quererme
bien.
A mi madre María, por ser una guerrera y darme lo necesario para crecer como perso-
na.
ii
Abstracto
La Lingüística Computacional ha emergido como un campo crucial en la intersección de
la lingüística y la tecnología. Este Trabajo de Fin de Máster presenta el desarrollo de un
chatbot, LinguAI, diseñado para divulgar conocimientos sobre Lingüística Computacio-
nal. La importancia de divulgar este campo radica en su relevancia en la comprensión
y desarrollo de tecnologías de procesamiento del lenguaje natural, tales como sistemas
de traducción automática, reconocimiento de voz y análisis de sentimientos, entre otros.
El chatbot se desarrolló utilizando una metodología ágil, esto es, incremental e iterativa,
que se sirve de las directrices de la ingeniería del software. El chatbot en sí incorpora
técnicas de procesamiento de lenguaje natural y aprendizaje automático para garantizar
respuestas precisas y contextualmente relevantes. Este estudio intenta ofrecer una contri-
bución al campo de la divulgación de la lingüística computacional al hacerla accesible y
comprensible para un público más amplio a través de la tecnología del chatbot.
Palabras clave: chatbots, bot, lingüística computacional, Dialogflow ES, pro-
cesamiento del lenguaje natural (PLN), análisis de datos
iii
Abstract
Computational Linguistics has emerged as a crucial field at the intersection of linguistics
and technology. This Master’s Thesis presents the development of a chatbot, LinguAI,
designed to disseminate knowledge about Computational Linguistics. The importance of
disseminating this field lies in its relevance to the understanding and development of
natural language processing technologies, such as machine translation systems, speech
recognition, and sentiment analysis, among others. The chatbot was developed using
an agile methodology, which is incremental and iterative, leveraging software enginee-
ring guidelines. The chatbot itself incorporates natural language processing and machine
learning techniques to ensure accurate and contextually relevant responses. This study
aims to contribute to the field of Computational Linguistics dissemination by making it
accessible and understandable to a broader audience through chatbot technology.
Keywords: chatbots, bot, computational linguistics, Dialogflow ES, Natural
Language Processing (NLP), data analysis
iv
Índice general
Página
1. Introducción 1
2. Hipótesis y objetivos 2
2.1. Hipótesis y motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Estado de la cuestión 4
3.1. La lingüística computacional . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1.1. Introducción a la Lingüística Computacional . . . . . . . . . . . . 4
3.1.2. Técnicas y metodologías . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.3. Retos y oportunidades . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2. Los chatbots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1. Introducción a los chatbots . . . . . . . . . . . . . . . . . . . . . 10
3.2.2. Tecnología y funcionamiento . . . . . . . . . . . . . . . . . . . . . 13
3.2.3. Desafíos y tendencias . . . . . . . . . . . . . . . . . . . . . . . . . 14
4. Metodología 16
4.1. La definición de los procesos . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2. Actividades estructurales . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.2. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2.3. Paso a producción e integraciones . . . . . . . . . . . . . . . . . . 27
4.3. Actividades de protección . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5. Desarrollo 31
5.1. Sprint 1. Caso de uso: Welcome, Fallback y Chit-chat . . . . . . . . . . . 31
5.1.1. Descripción del caso de uso . . . . . . . . . . . . . . . . . . . . . 31
5.1.2. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.1.3. Creación de respuestas . . . . . . . . . . . . . . . . . . . . . . . . 32
5.1.4. Validación y pruebas de QA . . . . . . . . . . . . . . . . . . . . . 33
5.2. Sprint 2. Caso de uso: información general . . . . . . . . . . . . . . . . . 34
5.2.1. Descripción del caso de uso . . . . . . . . . . . . . . . . . . . . . 34
5.2.2. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2.3. Creación de respuestas . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2.4. Validación y pruebas de QA . . . . . . . . . . . . . . . . . . . . . 36
5.3. Sprint 3. Caso de uso: competencias . . . . . . . . . . . . . . . . . . . . . 36
5.3.1. Descripción del caso de uso . . . . . . . . . . . . . . . . . . . . . 36
v
LinguAI: divulgative chatbot on computational linguistics UCM
5.3.2. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3.3. Creación de respuestas . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3.4. Validación y pruebas de Q&A . . . . . . . . . . . . . . . . . . . . 37
5.4. Sprint 4. Caso de uso: formación . . . . . . . . . . . . . . . . . . . . . . . 38
5.4.1. Descripción del caso de uso . . . . . . . . . . . . . . . . . . . . . 38
5.4.2. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.4.3. Creación de respuestas . . . . . . . . . . . . . . . . . . . . . . . . 38
5.4.4. Validación y pruebas de Q&A . . . . . . . . . . . . . . . . . . . . 38
5.5. Sprint 5. Caso de uso: herramientas . . . . . . . . . . . . . . . . . . . . . 39
5.5.1. Descripción del caso de uso . . . . . . . . . . . . . . . . . . . . . 39
5.5.2. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.5.3. Creación de respuestas . . . . . . . . . . . . . . . . . . . . . . . . 40
5.5.4. Validación y pruebas de QA . . . . . . . . . . . . . . . . . . . . . 40
5.6. Sprint 6. Caso de uso: recursos . . . . . . . . . . . . . . . . . . . . . . . . 40
5.6.1. Descripción del caso de uso . . . . . . . . . . . . . . . . . . . . . 40
5.6.2. Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.6.3. Creación de respuestas . . . . . . . . . . . . . . . . . . . . . . . . 41
5.6.4. Validación y pruebas de QA . . . . . . . . . . . . . . . . . . . . . 41
5.7. Sprint 7. Q&A y refinamiento . . . . . . . . . . . . . . . . . . . . . . . . 41
5.8. Paso a producción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6. Conclusiones y líneas de trabajo futuro 50
7. Bibliografía y enlaces de referencia 54
Glosario 57
Siglas 58
1
Capítulo 1
Introducción
El avance de la tecnología ha posibilitado la aparición de numerosos perfiles profesiona-
les. Algunos campos, como la lingüística, parecían relegados de estas nuevas tendencias
debido a la falta de formación tecnológica, las diferencias metodológicas y, en definitiva,
el prestigio de lo tradicional. Sin embargo, el avance tecnológico es imparable, y de tal
modo, también lo es la realidad social. Este avance ha provocado cambios significativos
en todos los sectores, especialmente en el ámbito económico y profesional. Las empresas
ya no centran sus esfuerzos únicamente en datos numéricos, sino en la información pro-
porcionada por las personas (producida y recuperada en lenguaje natural), que se procesa
a través de lenguajes de programación, lo que ha facilitado el surgimiento de un campo
de estudio particular: la Lingüística Computacional (LC).
La Lingüística Computacional se puede definir como la disciplina que une la lingüística
con la tecnología. A pesar de la aparente paradoja entre estos dos campos, que tradicional-
mente han tenido metodologías y enfoques muy diferentes, su integración ha demostrado
ser altamente beneficiosa. Por ejemplo, el avance de la Inteligencia Artificial (IA) ha
posibilitado nuevas aplicaciones que amplían vastamente las oportunidades de este perfil
profesional.
El presente proyecto tiene un triple objetivo. En primer lugar, crear un chatbot divulga-
tivo sobre Lingüística Computacional que ayude a los interesados a conocer este campo,
ofreciéndoles información, herramientas y recursos. En segundo lugar, presentar un pro-
yecto de Lingüística Computacional que documente los pasos necesarios para su realiza-
ción. En tercer lugar, y de manera personal para el autor, demostrar los conocimientos
adquiridos durante el Máster Universitario en Letras Digitales de la Universidad Com-
plutense de Madrid (U CM ) [1], al que se adscribe el presente Trabajo de Fin de Máster
(T F M ).
El proyecto comienza señalando la hipótesis y los objetivos perseguidos, con el fin de
aclarar tanto las metas como los límites de la investigación. A continuación, se presenta
un estado de la cuestión que contextualiza la Lingüística Computacional y los chatbots.
Posteriormente, se detalla la metodología empleada, basada en un marco de Ingeniería
del Software (IS), que garantiza la eficacia y cumplimiento de los objetivos propuestos.
En penúltimo lugar, se describe el desarrollo del chatbot, exponiendo los pasos y tareas
efectuadas. Finalmente, se presentan las conclusiones obtenidas y se sugieren líneas de
trabajo futuras.
1
Capítulo 2
Hipótesis y objetivos
2.1. Hipótesis y motivación
La creación de un chatbot divulgativo especializado en Lingüística Computacional faci-
litará la difusión, consolidación y formación en este campo. El formato de divulgación
mediante una interfaz conversacional es especialmente adecuado dentro del dominio de la
Lingüística Computacional, ya que transmite los conocimientos de una manera interactiva
y permite ver las capacidades de esta.
Durante mi formación en Filología Hispánica, he observado que, a pesar de las mencio-
nes ocasionales a la Lingüística Computacional, existe un conocimiento limitado sobre su
propósito y aplicaciones prácticas. Este desconocimiento generalizado subraya la necesi-
dad de una herramienta que pueda proporcionar respuestas claras y accesibles sobre este
campo, así como destacar herramientas útiles para su estudio. Considero que un chatbot
divulgativo es una solución eficaz para educar a aquellos que aún son escépticos o desco-
nocedores de la Lingüística Computacional, enfatizando sus aplicaciones prácticas.
El rápido avance de la Inteligencia Artificial ha aumentado la necesidad de una comu-
nicación eficiente entre humanos y ordenadores. En este contexto, los lingüistas están
llamados a desempeñar un papel crucial. Este desarrollo no solo ofrece nuevas oportuni-
dades laborales para los filólogos, sino también impulsa el progreso en las ciencias de la
lingüística y la literatura (como el estudio del léxico de autores). La divulgación efecti-
va de la Lingüística Computacional puede proporcionar a los investigadores en filología
herramientas valiosas para sus estudios, como pueda ser el Procesamiento de Lenguaje
Natural, al mismo tiempo que los prepara para los desafíos y oportunidades del mercado
laboral actual [2].
En resumen, la divulgación de la Lingüística Computacional mediante un chatbot pue-
de beneficiar a varios grupos. Por un lado, para los investigadores de filología, ofrece
herramientas de apoyo fundamentales [3]. Por otro lado, para las empresas y futuros
profesionales del campo, subraya la relevancia de la Lingüística Computacional en el con-
texto de la Inteligencia Artificial. Finalmente, para la sociedad en general, la mejora en
la comunicación entre computadores y humanos conlleva importantes beneficios sociales,
como puede ser la mejora en procesos burocráticos, tareas diarias, educación...
2
LinguAI: divulgative chatbot on computational linguistics UCM
2.2. Objetivos
Los objetivos que se han perseguido de este Trabajo de Fin de Máster son los siguien-
tes:
a). Desarrollar un chatbot especializado en Lingüística Computacional:
Señalar a los usuarios diversas cuestiones relacionadas con la Lingüística Compu-
tacional.
Divulgar información general sobre la Lingüística Computacional, como perfi-
les profesionales o salidas laborales.
Describir las competencias esenciales de los lingüistas computacionales.
Enumerar y explicar las herramientas utilizadas por los profesionales en Lin-
güística Computacional.
Señalar formación específica en lingüista computacional.
Proporcionar recursos complementarios para un aprendizaje más profundo.
b). Documentar el desarrollo de un proyecto tecnológico con una finalidad divulgativa:
Seguir un proceso riguroso de Ingeniería de Software para el desarrollo del
chatbot.
Detallar todas las fases del proyecto, desde la planificación hasta la integración.
c). Aplicar los conocimientos adquiridos durante el Máster Universitario en Letras Di-
gitales de la UCM:
Planificación y gestión de proyectos: aplicar conceptos clave de Ingeniería
del Software en la metodología, como la especificación de requisitos, el modelo
de procesos y la estimación.
Documentación y uso de herramientas digitales: utilizar herramientas
como LaTeX para la documentación, Miro para el diseño y Excel para la
gestión de datos.
Desarrollo y mantenimiento de una página web: aplicar conocimientos
en desarrollo web para la modificación e integración del chatbot en una estruc-
tura basada en WordPress, incluyendo la compra de dominio y otros aspectos
técnicos.
Uso de metadatos: implementar JSON para generar las respuestas del chat-
bot.
Diseño y desarrollo de un chatbot: utilizar habilidades adquiridas durante
las prácticas curriculares para el desarrollo y entrenamiento del chatbot.
Programación: utilizar lenguajes de programación como JavaScript, HTML
y CSS para la integración del chatbot en la web y para redirigir las respuestas
del chatbot a las páginas web pertinentes.
d). Crear un proyecto robusto, con una metodología fuerte que permita su manteni-
miento y una evolución futura.
3
Capítulo 3
Estado de la cuestión
3.1. La lingüística computacional
3.1.1. Introducción a la Lingüística Computacional
La Lingüística Computacional, también conocida como Ingeniería del Lenguaje o Pro-
cesamiento de Datos Lingüísticos [4, 13], se define como “el estudio de los sistemas de
computación para la comprensión y generación de lenguas naturales” [5]. Como Tordera
indica [6, 15], la unificación en la terminología y en la descripción de esta disciplina como
ciencia no siempre ha sido consensuada [5], [7], [8]. No obstante, en la práctica, tiende a
adoptar las mismas características y objetivos, que son “la simulación de la competencia
comunicativa del hombre a nivel escrito y/o oral o, al menos, la simulación de alguna
subcompetencia de esta” [6, 19]. De cualquier modo, aunque los resultados del primer
objetivo son escasos, se están logrando avances significativos en el segundo.
En cuanto a su adscripción como ciencia o campo, se han realizado varios intentos y
acercamientos. En primer lugar, la Lingüística Computacional no puede definirse como
una disciplina propiamente de la lingüística, ya que no aparece en los manuales, ni su
metodología ni sus objetivos son cercanos. Del mismo modo, otros intentos [7, 5] la han
definido bien como una subdisciplina de la informática o bien como una rama de la
Inteligencia Artificial, alejándose de la necesidad de la teoría lingüística. En segundo
lugar, otra concepción es considerarla una subdisciplina de ambas ciencias [9], debido a la
dependencia dual que guardan las dos, lo cual produce el esquema de la figura 3.1.
Una tercera concepción es la que adscribe la Lingüística Computacional a la Lingüística
Aplicada. Aunque la mera definición de los campos de la lingüística tal como establece
Lyons [10] daría para una larga disquisición, simplemente definiremos esta como una
“rama de la lingüística cuya meta es la aplicación de las teorías, métodos y conocimientos
propios de la lingüística a la resolución de problemas diversos en los que está implicado
el uso de la lengua [11]”. Consideramos este acercamiento el más adecuado pues, no solo
trata de resolver problemas que implican la lengua —en este caso la simulación completa
del lenguaje natural—, sino que refleja la interdependencia entre la lingüística teórica y
la aplicada.
Una vez establecida la definición de Lingüística Computacional, es esencial explorar su
4
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 3.1: Definición de la lingüística computacional según Martí y Castellón
génesis y evolución. Existen diversos criterios cronológicos para estructurar su historia,
como la distinción de Moreno Sandoval por décadas [4, 41] o las cuatro etapas que pro-
ponen Martí y Castellón [9, 11]. Sin embargo, seguiremos la periodización de Tordera [6,
27], ya que sigue una estructura basada en hitos teóricos.
La primera etapa se sitúa desde la década de los 40 hasta 1965. La Lingüística Compu-
tacional surge con los primeros intentos de Traducción Automática [4, 41]. Así, a finales
de los 40 se logran grandes avances en este campo, que marcan el inicio de la Lingüística
Computacional. Entre los años 1956 y 1961 se producen diversos congresos o conferen-
cias, como el Segundo Congreso Internacional sobre Traducción automática en 1956 o el
Congreso Internacional de Washington sobre Ciencias de la información, en los cuales
se dan los primeros pasos hacia la Inteligencia Artificial. En 1961 se celebra el Congreso
Internacional de Teddington sobre Traducción Automática y Lingüística aplicada, en el
que se rinde cuenta a los primeros progresos realizados en disciplinas lingüísticas como
la morfología, la sintaxis e, incluso, la semántica, tanto en la interpretación como en la
generación en la implementación computacional. Durante los años 60 se abren dos vías de
investigación: por un lado, aquellos que, partiendo de un aparato teórico reducido, aspira-
ban a obtener resultados en un plazo corto y, por otro lado, aquellos que se esforzaban en
desarrollar una teoría bien fundamentada. En esta época, junto a la Traducción Automá-
tica, también se trabajó en otros campos relacionados con la Lingüística computacional,
como el estudio del léxico de autores, la confección de diccionarios de frecuencias, la
elaboración de índices y concordancias o la recuperación de información [4, 41], [9, 12].
En resumen, el trabajo realizado en esos años se caracteriza por una concepción sim-
plista del lenguaje, un bajo nivel teórico de la lingüística y un bajo nivel de desarrollo
computacional [6, 36].
La segunda etapa se enmarca desde 1965 hasta 1982. En esta etapa, la obra de Noam
Chomsky sobre la Gramática Generativa (GG) tuvo una gran relevancia, aunque él mismo
se mostró reacio a la aplicación de su teoría en la Lingüística Computacional, debido a la
necesidad del contexto para explicar la complejidad del lenguaje y al tratar el lenguaje
de acuerdo a las leyes probabilísticas, produciendo un problema por naturaleza creati-
va del lenguaje [12, 36]. En su lugar, Chomsky propuso una teoría gramatical en 1965,
que acabaría adoptando el nombre de Gramática Generativa Transformacional (GGT),
la cual tuvo un gran impulso inicial, pero poco a poco fue desechada. En este marco
5
LinguAI: divulgative chatbot on computational linguistics UCM
también encontramos el desarrollo de teorías sobre el componente semántico/pragmáti-
co, como en el caso de los traductores automáticos Atlas-I y Atlas-II [9, 14] o trabajos
sobre Inteligencia Artificial como la obra de 1972 Understanding Natural Language de
Winograd [13], que sentaba las bases para la comprensión del lenguaje natural. Por otro
lado, también se produce un gran impacto por parte de la psicolingüística [14, 261]. Más
allá de las aportaciones teóricas, es importante señalar tres avances muy significativos:
los sistemas ELIZA, LUNAR y SHRDLU. Estos sistemas de interacción hombre-máquina
simulaban un diálogo muy específico. Eliza, por ejemplo, fue un sistema elaborado en el
Massachussetts Institute of Technology (MIT) por Weizenbaum en 1966, cuyo propósito
era la simulación de una interacción por canal escrito entre un psicoterapeuta y un hom-
bre: el paciente. Este utilizaba una técnica llamada pattern-matching [7, 157], el cual se
basaba, grosso modo, en la búsqueda de palabras clave jerarquizadas, las cuales a su vez
estaban asociadas a uno o más patrones. Por otro lado, LUNAR y SHRDLU sí lograron
una mayor comprensión, ya que se basaban en los avances mencionados sobre Inteligencia
Artificial. En resumen, esta fue una etapa en la que no se lograron los ambiciosos obje-
tivos de la primera etapa, pero se realizaron grandes esfuerzos. Destaca por una mayor
carga teórica que la anterior y el uso reiterado del ensayo-error.
La tercera etapa que señalamos abarca desde 1982 hasta la actualidad. En esta etapa
toman mucho peso las llamadas “gramáticas de unificación”, entre otras. Moreno San-
doval [4, 44] y Martí Antonín y Castellón Masalles [9, 19] resumen de este modo las
características de la época:
Aplicaciones realistas, de calidad y de interés masivo: los objetivos co-
mienzan a ser realistas, lo que produce una búsqueda de programas eficientes que
comienzan a comercializarse.
Aplicaciones de criterios de estandarización de los datos lingüísticos: se
utilizan estándares de codificación como SGML que facilitan la reutilización e inte-
gración.
Ampliación de la cobertura del sistema a cualquier tipo de texto: se deja
de enfocar propiamente en dominios concretos y se comienza a valorar su uso en
bases de datos o Internet.
En conclusión, la presente etapa destaca por la implementación de las gramáticas de
unificación, por el desarrollo tecnológico, por la asequibilidad de los productos compu-
tacionales y por la aparición de los modelos probabilísticos y biológicos [6, 73].
Finalmente, es pertinente destacar las diversas tareas que se investigan en el campo de la
Lingüística Computacional. Estas pueden distinguirse por el nivel de análisis lingüístico
en el que operan, tales como la forma (fonología y morfología), las estructuras (sintaxis),
el significado (semántica) y el uso (pragmática). Sin embargo, a continuación proponemos
una lista de las distintas aplicaciones que pueden tener, diferenciadas por sus objetivos
[15]:
Análisis de sentimiento: determina los estados afectivos que un texto presen-
ta. Un ejemplo común es la clasificación de los mensajes en las redes sociales en
categorías como positivos, negativos o neutros.
Asistentes de escritura: estos sistemas ayudan a mejorar la redacción del usua-
rio, mediante la corrección de errores ortográficos y gramaticales o proporcionando
6
LinguAI: divulgative chatbot on computational linguistics UCM
sugerencias de autocompletado.
Interfaces conversacionales: estas interfaces buscan proporcionar respuestas a
las preguntas del usuario, simulando el lenguaje natural.
Búsqueda de respuestas: consiste en encontrar respuestas o elementos concretos
en textos o bases de datos.
Reconocimiento óptico de caracteres: comúnmente abreviado como OCR (del
inglés Optical Character Recognition), busca convertir las imágenes de texto en
texto legible por máquina.
Resumen y clasificación de textos: acorta los textos de entrada, preservando
la información más importante, y los clasifica por tipología.
Traducción automática: busca la traducción de textos entre diferentes lenguas
naturales.
3.1.2. Técnicas y metodologías
A continuación, se proporciona un resumen conciso de las principales técnicas que se
emplean en el Procesamiento del Lenguaje Natural. La primera tarea en la identificación
de cadenas de texto requiere prestar atención a los tokens, que representan la unidad
mínima en la Lingüística Computacional. Esta tarea se conoce como tokenización y
su implementación varía en función del idioma y del nivel de granularidad requerido,
como puede ser la tokenización de palabras, de caracteres o de subpalabras [16]. Los
tokens, a su vez, deben ser analizados y clasificados en distintas categorías gramaticales,
lo que se conoce como etiquetado gramatical, Part of Speech Tagging o PoS Tagging.
El objetivo de este ejercicio es asignar a cada token o conjunto de tokens información
morfosintáctica básica que distinga al token. Para ello, existen diversos repositorios de
etiquetas gramaticales para cada idioma, así como otros independientes, como el conjunto
de etiquetas U D [17].
Otra técnica importante es la lematización, que consiste en asignar a cada token su lema.
Esto reduce la dispersión que produce la presencia de las distintas formas flexionadas del
mismo lema, así como de las partículas morfológicas (género, número, caso, tiempo). Para
el tratamiento de las partículas y palabras, es necesario identificar cómo se combinan en
estructuras gramaticales, es decir, cómo se aborda el análisis sintáctico. Para ello, existen
dos enfoques habituales: el análisis sintáctico de constituyentes [18], inspirado en
el paradigma de Chomsky de las gramáticas sin contexto a partir de la identificación de
constituyentes y sus reglas de combinación, y el análisis sintáctico de dependencias
[19], que se determina mediante las relaciones asimétricas (o dependencias) entre tokens.
De cualquier modo, como señalan Jurafsky y Martin [20, Capt. 15], el análisis sintáctico de
dependencias es el paradigma más común debido a sus ventajas, entre las que destacan su
uso en diferentes familias de lenguas, la facilidad de anotación y de procesamiento.
En cuanto a la semántica, encontramos en la Lingüística Computacional diversos pro-
blemas de naturaleza semiótica. Existen diferentes tareas que pretenden resolver esta
circunstancia, de las que destacaremos dos: la desambiguación, conocida como Word
Sense Disambiguation (WSD), y el etiquetado de roles semánticos o Semantic Role
Labelling (SRL). Por un lado, la WSD trata de identificar el significado de una palabra en
un contexto concreto. Aunque a lo largo del tiempo se han desarrollado diversas técnicas
7
LinguAI: divulgative chatbot on computational linguistics UCM
como WordNet o la conocida como hipótesis distribucional, en la actualidad se utilizan
los llamados Word Embeddings [21], que son un conjunto de técnicas de aprendizaje que
utilizan espacios vectoriales de números reales. Por otro lado, el SRL contribuye a las lla-
madas representaciones semánticas superficiales, es decir, utiliza roles temáticos a partir
de la asignación de agentes y temas, estos tomados de una lista codificada de recursos
específicos [22].
Finalmente, existen un gran número de enfoques para el estudio del significado de frag-
mentos de texto más amplios. En concreto, la Lingüística Computacional utiliza proce-
dimientos automáticos o algoritmos, muchos de los cuales se basan en teorías anteriores,
mientras que otros siguen enfoques basados en datos. En resumen, y siguiendo el esque-
ma definido [15], las tareas anteriores se jerarquizan en niveles, de las cuales podemos
encontrar dos tipos de flujos secuenciales:
La UD Pipe [23]: el texto se tokeniza, posteriormente se etiqueta con PoS, se
lematiza y, por último, se analizan las dependencias.
The Parallel Meaning Bank [24]: a partir de la entrada de texto, se tokeniza,
se analizan los constituyentes, se etiqueta, se desambigua la simbolización y se
realiza el etiquetado de roles semánticos, se desambigua el sentido de las palabras,
se resuelven las anáforas y se representa el discurso.
En esencia, se pueden identificar tres enfoques fundamentales que la Lingüística Compu-
tacional ha adoptado en el curso de su evolución. Estos enfoques han experimentado una
evolución constante a lo largo del tiempo, impulsada en gran medida por los avances
tecnológicos, especialmente en el ámbito del hardware.
El primer enfoque, conocido como el enfoque basado en reglas o de conocimiento,
abarca desde simples reglas de correspondencia de patrones hasta la aplicación de marcos
teóricos derivados de la lingüística formal. Un segundo enfoque es el estadístico, que se
basa en el conocimiento inducido a partir de los datos. El tercer y último enfoque es el
neuronal. Aunque este enfoque también se basa en datos, se distingue por el tipo de
representaciones que utiliza [20, Cap. 6], las cuales pasan de ser discretas (dispersas) en el
enfoque estadístico a continuas (densas) en el enfoque neuronal. Es importante destacar
que la distinción entre estos enfoques no es tan nítida en la práctica, ya que a menudo
interactúan y se combinan. De hecho, una tendencia actual es la combinación de redes
neuronales con métodos basados en conocimientos [25].
Para concluir, procederemos a mencionar las tres técnicas de Inteligencia Artificial más
prevalentes y reconocidas en la actualidad.
Machine learning
En primer lugar, el Machine Learning ((M L) o Aprendizaje Automático) es una técni-
ca que habilita a que los algoritmos identifiquen patrones complejos dentro de grandes
volúmenes de datos, mediante la inferencia de patrones similares [26]. Esta técnica da lu-
gar a la creación de sistemas inteligentes capaces de predecir comportamientos, detectar
similitudes o tomar decisiones.
Estos modelos se entrenan clasificando muestras de datos reales, lo que les permite ex-
traer conclusiones relevantes o aprender a realizar tareas sin haber sido programados
8
LinguAI: divulgative chatbot on computational linguistics UCM
explícitamente para ello, basándose únicamente en la observación de los datos. Este pro-
ceso requiere tres etapas: la revisión de los datos, para seleccionar aquellos que son útiles
y almacenarlos en el formato adecuado; la organización de estos datos, para facilitar el
Aprendizaje Automático, y el entrenamiento y validación del modelo, durante el cual el
modelo descubre patrones y configura su propia combinación de parámetros.
Además, existen tres métodos de aprendizaje que se pueden aplicar: el aprendizaje super-
visado, que se entrena con datos etiquetados y concretos; el aprendizaje no supervisado,
en el que el sistema analiza las características y busca patrones por sí mismo, y el aprendi-
zaje por refuerzo, en el que el sistema aprende a partir de su propia experiencia mediante
un proceso de ensayo y error.
Deep Learning
En segundo lugar, el Deep Learning ((DL) o aprendizaje profundo) es una subcategoría
especializada del Machine Learning. Este se caracteriza por un modelo de aprendizaje
estratificado, en el cual las capas procesan la información de manera secuencial para
aprender de los datos observados. Esta técnica busca emular el funcionamiento de las
neuronas humanas. A medida que aumenta la profundidad de las capas, también lo hace
el nivel de abstracción, permitiendo así aprender de una mayor cantidad de datos y
lograr un margen de error más reducido. Tal como se indica en el esquema explicativo del
Instituto de Ingeniería del Conocimiento [26], las capas siguen el siguiente proceso:
a). Primera capa de aprendizaje: varias neuronas procesan los datos de entrada de
manera individual.
b). Segunda capa de aprendizaje: esta maneja los resultados para tomar una decisión
más compleja, teniendo en cuenta lo detectado por la anterior.
c). Siguientes capas de aprendizaje: realizan el mismo proceso, independientemente del
número de capas, con el fin de obtener un resultado cada vez más preciso.
Gracias al Deep Learning es posible realizar tareas mucho más complejas en compara-
ción con otras técnicas de Machine Learning más tradicionales, como la identificación de
rostros o el reconocimiento de palabras habladas.
Transformers
En el año 2017 se publicó un artículo titulado Attention is All You Need [27], en el
cual se introdujo la arquitectura Transformer. Este modelo representa una innovación
significativa, ya que sustituye las capas recurrentes del Deep Learning por las denominadas
capas de atención [28]. Estas capas presentan varias innovaciones, como introducir el
contexto en la representación matemática del texto, utilizar los Embeddings posicionales
o la aplicación a tareas de traducción.
Específicamente, los Transformers constan de dos fases: el pre-training, durante el cual
el modelo aprende la estructura del lenguaje y adquiere un conocimiento genérico del
significado de las palabras, y el fine-tuning, en el que, una vez preentrenados, se añaden
capas para adaptar los modelos a tareas específicas y se reentrenan. El progreso de los
Transformers ha sido posible gracias a la disponibilidad de grandes volúmenes de textos
en diversos idiomas.
9
LinguAI: divulgative chatbot on computational linguistics UCM
3.1.3. Retos y oportunidades
Finalmente, vamos a identificar los desafíos actuales que enfrenta la Lingüística Compu-
tacional, así como las tendencias y oportunidades emergentes. En general, existe un con-
senso sobre las dificultades inherentes a este campo, las cuales se pueden resumir en:
Comprensión contextual y memoria limitadas: los modelos de Procesamiento
de Lenguaje Natural a menudo encuentran dificultades para interpretar y mantener
el contexto de las palabras y los significados de las frases en función del contexto.
Ambigüedad y polisemia: la problemática de la identificación del contexto con-
lleva dificultades para discernir significados que dependen de dicho contexto.
Variedades lingüísticas y modismos: las variaciones idiomáticas y los modismos
presentan desafíos para la identificación precisa del significado.
Falta de razonamiento de sentido común: aunque algunos individuos atribuyen
a estos modelos capacidades de razonamiento, en realidad son algoritmos lingüísticos
que operan a través de predicciones.
Calidad de los datos y sesgos: no es sencillo encontrar datos de alta calidad
para el entrenamiento de modelos, y estos modelos a menudo perpetúan los sesgos
presentes en los datos.
Cuestiones éticas y de privacidad: al igual que con la Inteligencia Artificial en
general, surgen dilemas éticos en relación con su uso y limitación.
Por otro lado, existen numerosas líneas de investigación y aplicaciones emergentes en este
campo. Algunas de las más destacadas son:
Mejora en la interacción humana: el avance de las técnicas contribuye signi-
ficativamente a acercarnos al objetivo final de la Lingüística Computacional, que
es simular el lenguaje natural. Esto puede ser particularmente evidente en sistemas
como las interfaces conversacionales.
Avances en la comprensión de textos y búsqueda de información: gracias
a las mejoras en el análisis de sentimientos y de significado se pueden lograr grandes
avances en la recuperación de información, que pueden aplicarse en áreas críticas
como la atención médica.
3.2. Los chatbots
3.2.1. Introducción a los chatbots
Un agente conversacional, interfaz conversacional, asistente conversacional o, como co-
múnmente se conoce, chatbot, es un programa informático que emplea la Lingüística
Computacional para emular la interacción humana con un usuario. Aunque no todos los
chatbots incorporan Inteligencia Artificial, los chatbots contemporáneos están incremen-
tando su uso de estas técnicas para interpretar las consultas de los usuarios y automatizar
las respuestas. De este modo, podemos categorizar los chatbots en dos tipologías principa-
les: los basados en coincidencias de patrones y los que emplean Machine Learning.
10
LinguAI: divulgative chatbot on computational linguistics UCM
Chatbots basados en reglas
Este enfoque de chatbot emplea algoritmos de coincidencia de patrones para asociar la
entrada del usuario con reglas predefinidas, y de esta manera seleccionar una respuesta de
un conjunto de respuestas predefinidas [29]. Entre sus ventajas se encuentra una ventana
de respuesta corta, ya que no es necesario un análisis exhaustivo del texto de entrada.
Sin embargo, como limitaciones, requieren una gran cantidad de reglas para funcionar
correctamente, lo que provoca que sea difícil manejarlos y mantenerlos cuando surgen
errores gramaticales y sintácticos, ni tampoco son fácilmente escalables a otras situacio-
nes. Además, las respuestas son automatizadas y repetitivas, lo que indica una falta de
espontaneidad humana. Existen tres lenguajes que implementan este enfoque:
AIML: se basa en XML, lo que facilita su aprendizaje y uso, pero resulta ineficiente
para grandes bases de conocimiento.
RiveScript: ofrece características adicionales a AIML y es más flexible, permitien-
do variables y redirecciones conversacionales.
ChatScript: es más complejo que los anteriores pero también más poderoso, sen-
sible a mayúsculas y minúsculas y capaz de manejar conceptos y memoria a largo
plazo.
Chatbots basados en Aprendizaje Automático
Estos chatbots extraen el contenido del usuario utilizando Procesamiento de Lenguaje
Natural y poseen la habilidad de aprender de las conversaciones [29]. Toman en conside-
ración todo el contexto de la conversación, y no requieren de respuestas predefinidas para
cada input de usuario. En resumen, podemos clasificarlos en cuatro tipos distintos:
Procesamiento del lenguaje natural: emplean técnicas como las referidas en el
apartado 3.1.2, para entender y generar texto.
Modelos de redes neuronales: utilizan la técnica de Deep Learning para el
aprendizaje. Se dividen en dos tipos:
• Modelos de recuperación: utilizan las redes neuronales para seleccionar la res-
puesta más probable de un conjunto de respuestas predefinidas, para lo cual
es necesaria la intervención humana y la definición de un corpus.
• Modelos generativos: generan respuestas nuevas utilizando técnicas de Deep
Learning, como modelos de secuencia a secuencia (Seq2Seq) y redes neurona-
les recurrentes (Recurrent Neural Networks o RNN), los cuales pasaremos a
explicar a continuación.
Recurrent Neural Networks: se utilizan para considerar el contexto previo en
una conversación, manejando dependencias a largo plazo.
Modelos Seq2Seq: estos generan las respuestas esperadas basándose en secuencias
de entrada, y pueden incluir mecanismos de atención para mejorar la generación de
respuestas.
Procederemos a realizar una síntesis concisa de la evolución histórica de los chatbots,
basándonos en el artículo de Adamopoulou [29].
11
LinguAI: divulgative chatbot on computational linguistics UCM
La génesis del desarrollo de los chatbots se remonta a 1950 con la propuesta del Test de
Turing por Alan Turing. Este pionero de la informática planteó la interrogante de si una
máquina podría simular la conversación humana de tal manera que no fuera detectada
como tal, estableciendo así los fundamentos teóricos de los chatbots. En 1966, se creó el
primer chatbot, denominado ELIZA, que simulaba el rol de un psicoterapeuta mediante
la coincidencia de patrones y la selección de respuestas basadas en plantillas.
En 1972 emergió PARRY, un chatbot que simulaba ser un paciente esquizofrénico, su-
perando a ELIZA en términos de avance debido a su capacidad para simular una “per-
sonalidad” y un sistema de respuestas basado en supuestos y respuestas emocionales.
Posteriormente, en 1988 se introdujo Jabberwacky, que marcó el primer uso de la In-
teligencia Artificial en chatbots, empleando el emparejamiento de patrones contextuales,
aunque con limitaciones en velocidad y capacidad de usuarios.
El término Chatterbot se acuñó en 1991, el cual describía a un chatbot en un mundo
virtual utilizado para interactuar con jugadores humanos, quienes a menudo preferían
interactuar con Chatterbot en lugar de con jugadores reales. En 1992 apareció Dr.
Sbaitso, cuyo diseño intentó demostrar las capacidades de las tarjetas de sonido, ac-
tuando como un psicólogo con interacciones simples.
En 1995 se desarrolló ALICE, un chatbot en línea inspirado en ELIZA y basado en coin-
cidencia de patrones. Fue desarrollado con el mencionado lenguaje AIML, lo que permitió
conversaciones más largas y variadas. En 2001 aparece SmarterChild, el cual se utilizó
para servicios de mensajería como AOL y MSN, destacándose por su capacidad para
realizar tareas prácticas diarias como proporcionar información de bases de datos.
La siguiente etapa significativa se produjo entre 2010 y 2016 con el desarrollo de asistentes
personales de voz como Siri, Watson, Google Assistant, Cortana y Alexa. Estos
asistentes personales comprenden comandos de voz y realizan tareas complejas, marcan-
do una evolución importante en la interacción humano-computadora. En 2016 hubo una
proliferación de chatbots en plataformas de mensajería para diversas aplicaciones comer-
ciales y sociales, lo que provocó una mejora en la interacción con dispositivos conectados
en el Internet de las Cosas (Internet of Things o IoT).
Ese mismo año Microsoft introdujo XiaoIce, un chatbot con inteligencia emocional capaz
de establecer relaciones emocionales con los usuarios, quien consideraba peculiaridades
culturales y éticas. Este avance representó un cambio significativo en la manera en que
los chatbots se involucran en conversaciones, al diferenciarse de sus predecesores al ser
capaz de compartir pensamientos personales y comprender el contexto emocional de las
interacciones.
En la actualidad, los chatbots están adquiriendo una importancia creciente en diversas
industrias, debido a su capacidad para optimizar la eficiencia y mejorar la experiencia
del usuario. Aunque es complicado encontrar informes actuales y precisos sobre su im-
pacto, sí señalaremos las industrias que están obteniendo el mayor beneficio de estas
aplicaciones.
En el ámbito educativo, los chatbots respaldan el proceso de aprendizaje al proporcionar
asistencia personalizada, responder a consultas sobre material educativo y gestionar tareas
administrativas como inscripciones y programación de horarios. También se utilizan para
reducir la ansiedad en los estudiantes y asistir en el aprendizaje de vocabulario.
12
LinguAI: divulgative chatbot on computational linguistics UCM
En el sector de la salud, los chatbots proporcionan información personalizada sobre
estado de salud, recordatorios de medicación y asistencia emocional. Son útiles para el
diagnóstico inicial y la gestión de tratamientos, aunque presentan desafíos como la falta
de consistencia y errores en la información médica.
En el campo de la robótica, los chatbots proporcionan interfaces de lenguaje natural
para interactuar con robots físicos, facilitando la programación y el control de estos.
En el sector del servicio al cliente, los chatbots permiten una atención ininterrumpida,
responden a preguntas frecuentes y asisten en la toma de decisiones sobre productos, lo
que resulta en una mejora de la satisfacción del cliente.
Finalmente, en la industria, los chatbots se emplean en el sector bancario para gestionar
cuentas y pagos, en la industria alimentaria para realizar pedidos y reservas, y en servicios
como la compra de boletos y la difusión de información sobre salud pública. Algunos
ejemplos notables incluyen: Erika de Bank of America, el bot de Pizza de Dominos y
Julie de Amtrak. Estos ejemplos ilustran la versatilidad y la utilidad de los chatbots en
diversas aplicaciones industriales.
3.2.2. Tecnología y funcionamiento
De acuerdo con el análisis de Adamopoulou [29, 8], un chatbot se puede caracterizar por
los siguientes componentes:
Interfaz de usuario: es el punto de entrada donde el usuario interactúa con el
chatbot, ya sea a través de texto o voz, utilizando canales como Facebook Messenger,
Slack o WhatsApp, entre otros.
Análisis de mensajes del usuario: en este componente se analiza la intención
(Intent) del usuario1 y, cuando es necesario, se extraen las entidades2 necesarias.
Para ello, se utiliza uno de los enfoques, ya sea de coincidencia de patrones o Apren-
dizaje Automático. Este componente puede incluir servicios cognitivos adicionales
como correctores ortográficos, traductores y análisis de sentimiento.
Gestión del diálogo: este componente controla y actualiza el contexto de la con-
versación al gestionar la intención actual y las entidades identificadas. Suele incluir
módulos para manejo de ambigüedades, manejo de datos y errores.
Backend : proporciona la información necesaria para satisfacer la intención del
usuario, como con bases de datos externas o interfaces de programación de apli-
caciones (Application Programming Interfaces o AP I). Para ello, utiliza una base
de conocimientos que puede ser enriquecida con datos históricos para mantener la
coherencia y precisión del diálogo.
Generación de respuestas: produce las respuestas utilizando el modelo elegido:
basados en reglas, de recuperación y/o generativos. Como ya sabemos, cada uno de
estos modelos tiene diferentes enfoques para generar respuestas, desde seleccionar
respuestas predefinidas hasta generar texto nuevo utilizando técnicas de generación
de lenguaje natural.
1
En la terminología técnica relacionada con los chatbots, a las “intenciones de usuario” también se las
conoce como intents. Ambos términos se utilizarán en este documento indistintamente.
2
Son los términos que se utilizan para captar parámetros, como pueden ser ciudades, números...
13
LinguAI: divulgative chatbot on computational linguistics UCM
Una vez conocidos los componentes necesarios para crear un chatbot, procederemos a
describir brevemente los procesos necesarios para su desarrollo, ya que esto será parte de
lo descrito en el proyecto. El desarrollo de un chatbot abarca varias etapas esenciales:
comienza con la planificación detallada de objetivos y requisitos, seguida del desarrollo en
un lenguaje de programación o plataforma específica. Posteriormente, se lleva a cabo el
entrenamiento del lenguaje natural utilizando el corpus diseñado para enseñar al chatbot
a entender y responder al lenguaje humano, lo que incluye procesos de preentrenamiento
y reentrenamiento. Luego, se integra en plataformas de mensajería como Facebook Mes-
senger, Skype, Twitter y Slack para poder acceder a él. Además, se mejora la interacción
del chatbot mediante la adopción de personalidades. Finalmente, se consideran aspectos
clave de implementación como la definición clara de objetivos, la recolección continua de
datos para mejoras, el soporte plurilingüe y la atención especial a la comunicación por
voz.
3.2.3. Desafíos y tendencias
A pesar de sus numerosas ventajas, los chatbots enfrentan diversos desafíos y dificultades.
Un desafío principal es la adaptación de los clientes a esta nueva forma de comunicación,
ya que están acostumbrados a métodos tradicionales como el teléfono o el correo electró-
nico. Las empresas deben tener en cuenta tanto las plataformas tradicionales como las
emergentes, sobre todo durante el proceso de transformación. La seguridad de los datos
es otra de las grandes preocupaciones, ya que las empresas deben proteger y manejar
adecuadamente la información del cliente, especialmente en sistemas de autenticación y
pago.
Los chatbots a menudo fallan en entender la intención del usuario, lo que genera frustra-
ción y aleja a los clientes. Otros factores para el error son las respuestas largas, los errores
de ortografía y la falta de personalidad del chatbot.
La detección de engaños es otro desafío, ya que las interacciones más humanas de los
chatbots pueden ser utilizadas para fines indeseados. Asimismo, los asistentes de voz di-
gitales, como Amazon Alexa, también presentan vulnerabilidades de seguridad debido a
la falta de autenticación robusta. También existen problemas con el conocido como “con-
tenido tóxico”, que incluye información personal registrada por servicios poco confiables
y violaciones de la confidencialidad o derechos de autor. Por tanto, la protección contra
estos riesgos es crucial.
Para mitigar estos riesgos, se recomienda la integración con servicios de chat en vivo
para entradas no identificadas, el uso de herramientas de aseguramiento de calidad y la
especificación de un lenguaje aprobado para evitar mensajes ofensivos.
Por último, basándonos en la obra de Freed Conversational AI: Chatbots that work [30],
señalaremos, por un lado, las innovaciones más recientes y, por otro, las tendencias que
se presuponen en el futuro.
Innovaciones recientes en el campo de los chatbots
La primera que se destaca es la integración de la Inteligencia Artificial conversacional
avanzada, ya que los chatbots modernos están aprovechando técnicas avanzadas de Inte-
ligencia Artificial, como el Procesamiento del Lenguaje Aatural y el Aprendizaje Automá-
tico, con el fin de entender mejor y responder a las consultas de los usuarios. Esto incluye
14
LinguAI: divulgative chatbot on computational linguistics UCM
la capacidad de manejar conversaciones complejas y contextuales, lo que mejora signifi-
cativamente la interacción usuario-chatbot. Una segunda innovación es la personalización
de la experiencia del usuario, pues ahora los chatbots pueden adaptar las respuestas ba-
sadas en datos históricos del usuario en tiempo real. Esta personalización permite que
los chatbots ofrezcan respuestas más relevantes y útiles, lo que mejora la satisfacción
del usuario. En tercer lugar, se han integrado a sistemas empresariales, como Customer
Relationship Management (CRM ), sistemas de gestión de inventarios y herramientas de
análisis de datos, lo que permite una mejor automatización y eficiencia en los procesos
empresariales. En cuarto y último lugar, se ha puesto gran atención en la usabilidad
y accesibilidad, implementando interfaces de usuario más intuitivas y accesibles, lo que
facilita la interacción con los chatbots para una amplia gama de usuarios, incluyendo
aquellos con discapacidades.
Tendencias futuras de los chatbots
En cuanto al futuro, señalamos tres líneas de mejora:
Ética y privacidad: del mismo modo que hemos señalado esta como una de las
preocupaciones, también se producirá una mejora en la ética y la privacidad, ase-
gurando que las interacciones sean seguras y aumente el respeto los derechos de los
usuarios.
Aplicaciones en nuevas áreas: los chatbots se expandirán a nuevas áreas y
sectores, como el entretenimiento, proporcionando servicios y automatizando otras
tareas.
Colaboración humano-máquina: en general, será más común la colaboración con
los humanos al ejecutar tareas automatizadas, lo que mejorará la productividad y
la eficiencia en el lugar de trabajo, como ya podemos encontrar con Copilot[31].
Estas innovaciones y tendencias delinean un futuro prometedor para los chatbots, en el
que se espera que su integración y capacidad mejoren de manera continua.
15
Capítulo 4
Metodología
Con el fin de alcanzar nuestros objetivos y desarrollar el proyecto, el primer paso funda-
mental fue establecer una metodología sólida basada en Ingeniería de Software. Sommer-
ville define esta disciplina como “una disciplina de la ingeniería que comprende todos los
aspectos de la producción de software desde las etapas iniciales de la especificación del
sistema, hasta el mantenimiento de este después de que se utiliza” [32, p. 6]. Esta disci-
plina nos proporcionará la definición de los procesos, métodos y herramientas necesarios
para la creación de nuestro chatbot [33, p. 11], los cuales describiremos detalladamente
más adelante. A continuación explicamos los motivos por los que consideramos que una
metodología bien estructurada es esencial para este proyecto.
En primer lugar, una metodología adecuada nos permite evitar errores iniciales,
como una mala definición del proyecto que podría llevar a un trabajo inútil o a
decisiones que dificulten cambios o mejoras. Además, es crucial considerar la na-
turaleza del proyecto, que requiere asumir cambios en los requisitos, modificar el
resultado del chatbot, un aprendizaje continuo por parte del desarrollador y la ne-
cesidad de realizar pruebas formales para asegurar el correcto funcionamiento a lo
largo de los diferentes procesos.
En segundo lugar, una metodología bien definida permitirá evitar bloqueos, inte-
rrupciones en las fases del proyecto o problemas de continuidad, ya que facilita el
seguimiento riguroso del plan trazado a través de las tareas e hitos establecidos.
En tercer lugar, dada la naturaleza dinámica y evolutiva de este proyecto, es impor-
tante implementar una metodología que contemple la posibilidad de mantenimiento
y mejoras futuras. Esto no solo facilitará la incorporación de nuevas funcionalidades
y optimizaciones, sino que también garantizará que dichas adiciones se realicen de
manera coherente y eficiente.
4.1. La definición de los procesos
El primer paso en la Ingeniería de Software para desarrollar nuestra metodología es definir
los procesos que se llevarán a cabo. Según Pressman, “un proceso es un conjunto de
actividades, acciones y tareas que se ejecutan cuando va a crearse algún producto del
trabajo” [33, p. 12]. Las actividades están orientadas a alcanzar un objetivo amplio y
se aplican a cualquier proyecto, mientras que las acciones son un conjunto de tareas
16
LinguAI: divulgative chatbot on computational linguistics UCM
enfocadas en un objetivo específico y bien definido. La estructura del proceso establece
la base para el proceso completo, dividiéndose en actividades estructurales y actividades
de protección o sombrilla.
Por un lado, las actividades estructurales son aplicables a todos los proyectos de soft-
ware, independientemente de su tamaño o complejidad. Sommerville identifica cuatro
actividades estructurales fundamentales[32, p. 7]: especificación del software, desarrollo,
validación y evolución. Pressman, en cambio, amplía esta clasificación a cinco actividades
clave[33, p. 12]: comunicación, planeación, modelado, construcción y despliegue.
Por otro lado, las actividades de protección son igualmente esenciales. Aunque no generan
software directamente, estas actividades mejoran la calidad del producto, facilitan su
desarrollo y evitan la corrupción del proceso. Estas actividades incluyen, entre otras, la
gestión de la configuración, la garantía de calidad, las revisiones técnicas, las auditorías,
la gestión de riesgos y la medición de métricas.
Definir y estructurar estos procesos de manera precisa es crucial para asegurar un desarro-
llo eficiente, coherente y de alta calidad de nuestro chatbot de Lingüística Computacional.
Como se puede apreciar en la figura 4.1, los procesos se estructuran a partir de las ac-
ciones estructurales, que se conforman a partir de acciones y a las que hay que añadir
actividades de protección, que garantizarán no solo la creación de un producto funcional,
sino también su sostenibilidad y capacidad de evolución futura.
Figura 4.1: Esquema de actividades
Una vez definidos los procesos, es crucial elegir el modelo que guiará cómo se relacionan las
actividades, acciones y tareas entre sí y con el proceso en su conjunto. Existen numerosos
modelos de procesos, cada uno con sus propias ventajas y desventajas, dependiendo del
contexto en el que se apliquen. Por lo tanto, es fundamental seleccionar el modelo que
mejor se adapte a las características y necesidades específicas de nuestro proyecto.
En concreto, para este proyecto hemos decidido utilizar un modelo de procesos ágiles.
Los modelos ágiles surgen en 2001 a partir del “Manifiesto por el desarrollo ágil de soft-
ware” firmado por Ken Beck y el grupo conocido como “Alianza Ágil” como respuesta a
los modelos de procesos clásicos [33, 55]. El manifiesto pone en valor estos puntos que
atestiguan la intención de este modelo de procesos:
Los individuos y sus interacciones, sobre los procesos y las herramientas.
El software que funciona, más que la documentación exhaustiva.
17
LinguAI: divulgative chatbot on computational linguistics UCM
La colaboración con el cliente, y no tanto la negociación del contrato.
Responder al cambio, mejor que apegarse a un plan.
En sí, los modelos de procesos ágiles se caracterizan por su flexibilidad, la iteración rápida
y el enfoque en la colaboración continua con el cliente. Aunque en nuestro caso no existe
un cliente, sí contábamos con dos personas que hacían las veces de validadores de los
procesos. Más concretamente, existen tres superclaves [33, 58] de los procesos ágiles que
son sumamente útiles para las características de nuestro proyecto:
Es difícil predecir qué requisitos software persistirán y cuáles cambiarán.
El diseño y el desarrollo de software están intercalados. Por tanto, se deben realizar
de manera conjunta, de modo que el diseño se prueba según se crea. Es difícil
predecir cuánto diseño es necesario antes de construir el código que lo implemente.
El análisis, el diseño y la construcción no son predecibles desde el punto de vista
de la planificación.
De la primera, subrayamos la importancia de la adaptabilidad, dado que los requisitos
iniciales del proyecto fueron modificándose y saliendo del alcance original a lo largo del
desarrollo. En cuanto a la segunda y tercera observación, es crucial destacar el carácter
iterativo e incremental con el que se implementan los requisitos. En cada Sprint, se
incorporan nuevas funcionalidades, abarcando acciones de diseño, desarrollo y validación.
Además, una de las virtudes de los sprints es la obtención de retroalimentación constante
por parte de los clientes (en este caso, los tutores de este Trabajo Fin de Máster o
validadores) mediante la entrega continua al final de cada sprint.
De este modo, en consonancia con las características de los procesos ágiles y con el esque-
ma de actividades presentado en la figura 4.1, identificamos los dos tipos de actividades
que hemos llevado a cabo, junto con sus respectivas acciones.
4.2. Actividades estructurales
Para implementar nuestro modelo de procesos ágil, basado en la iteración y el incremento,
hemos dividido las tareas estructurales en tres categorías: definición, desarrollo y paso a
producción. Estas se describen a continuación, así como las acciones y tareas asociadas a
cada una de ellas:
4.2.1. Definición
Esta fase, centrada en el “qué”, se dedica a la planificación integral del proyecto. En ella se
abordan el análisis de los requisitos y la aplicación de principios de Ingeniería de Software.
Nuestra fase de definición se ha estructurado en tres acciones principales: la definición de
requisitos, el diseño (de un primer borrador) y la estimación.
Requisitos
Los requisitos son los servicios y restricciones del software, es decir, especifican qué se
desea lograr, evalúan su factibilidad y detallan las necesidades y limitaciones del sistema.
Estos requisitos se definen en colaboración con los usuarios y los desarrolladores. Existen
18
LinguAI: divulgative chatbot on computational linguistics UCM
diversas plantillas para su especificación, como la IEEE Std. 830-1998. Aunque en nuestro
proyecto no fue necesario el uso estricto de dicha plantilla, resultó esencial la descripción
detallada de los diferentes requisitos considerados para el desarrollo de nuestro chatbot.
Para la definición de los requisitos, hemos seguido el siguiente esquema:
Figura 4.2: Ingeniería de requisitos[32, 70]
a). Informe de viabilidad: conceptualización de la idea, análisis inicial y consulta con
los tutores del TFM sobre la viabilidad del proyecto. Esta se desarrolló, inicialmente,
con un proyecto de TFM, que señalaba la hipótesis, los objetivos, la motivación, y
algunas propuestas de requisitos y de metodología.
b). Obtención y análisis de requisitos: proceso de documentación exhaustiva sobre
Lingüística Computacional e interfaces conversacionales, con el fin de entender el
contexto y las necesidades del proyecto.
c). Requisitos específicos: definición detallada de los requisitos funcionales, de los re-
quisitos no funcionales y de las actividades de protección necesarias para el correcto
funcionamiento del chatbot.
d). Validación de requisitos: revisión y validación final por parte de los validadores,
seguido del inicio del primer borrador del proyecto.
Es importante destacar que los requisitos sufrieron modificaciones y evolucionaron a lo
largo del desarrollo del proyecto, reflejando la naturaleza iterativa y adaptable del modelo
ágil aplicado.
Requisitos funcionales
Los requisitos funcionales son las descripciones de las funcionalidades que tiene un soft-
ware. En nuestro caso, más que funcionalidades únicas nos centraremos en señalar un
conjunto que las aglutina, los casos de uso, que se definen como “una historia estilizada
sobre cómo interactúa un usuario final” [33, p. 113]. Para su desarrollo, es fundamental
considerar diversos factores, como el perfil del usuario, sus necesidades, motivaciones y la
forma en que se le ofrece el servicio. Estos aspectos moldean integralmente el desarrollo de
nuestro proyecto. Para la elaboración de estos requisitos, se llevaron a cabo varias tareas
de documentación, que incluyeron la creación de archivos de casos de uso y modelos de
conocimiento.
19
LinguAI: divulgative chatbot on computational linguistics UCM
Tal como hemos señalado, los casos de uso sufrieron reconfiguraciones a lo largo del
proyecto, tanto en esta fase de diseño como en cada una de las iteraciones. Estos se
conforman en un total de cinco, con distintos subniveles cada uno. La información que se
pretender mostrar en cada caso de uso se materializa a través de un flujo conversacional,
cuyo diseño mostraremos más adelante. Su selección surge de la documentación previa
y de las necesidades o conversaciones que consideramos que podían tener los usuarios
objetivo.
a). ¿Qué es la Lingüística Computacional?: ofrece información general del campo,
así como algunos conceptos o preguntas concretas.
b). Competencias de un lingüista computacional: información sobre las habili-
dades que por norma conocen los lingüistas computacionales.
c). Formación: posibilidades para formarse en un perfil de Lingüística Computacional.
d). Herramientas: explicación y enlaces de las herramientas más comunes.
e). Recursos complementarios: enlaces a otros recursos que puedan complementar
la formación o que sean de interés.
Requisitos no funcionales
Además de los requisitos funcionales, es necesario tener en cuenta otros aspectos que
influyen en la creación del proyecto. Si bien algunos manuales desglosan estos requisitos
en subcategorías, en nuestro proyecto nos enfocamos en describir directamente los más
relevantes a los que hemos prestado atención.
Algunas de los requisitos más relevantes son los propios del agente conversacional. Un
buen número de las decisiones parten de un trabajo previo realizado por el autor de este
Trabajo de Fin de Máster [34], en la que se estudiaba la personalidad de los chatbots y
se lograban ciertas decisiones de diseño para un proyecto como este:
La primera es la elección de basar la interfaz conversacional únicamente en texto
y prescindir de la voz. Esta, además de surgir del estudio sobre la personalidad,
también es una decisión técnica, pues añadir la posibilidad de comunicarse a través
del habla con el chatbot conllevaba construir otro chatbot destinado a eso y, por
tanto, el aprendizaje de otras herramientas; lo que supondría un esfuerzo demasiado
grande.
Otra decisión, esta vez sobre la interfaz, fue la de utilizar un diseño no antropológico,
que ayudase a describir su función, pero siendo coherente con la personalidad que
queríamos mostrar. De este modo, creamos el avatar que utilizaremos 4.3.
La tercera decisión que rescatamos es la personalidad que tendría el chatbot, basada
en el estudio que se hizo. En dicho trabajo se concluyó que el chatbot debería tener
una personalidad extrovertida y amable. De tal modo, nos hemos asegurado de
que las respuestas que ofrece la interfaz siguen esta línea, intentando darle cierta
coherencia y lograr los objetivos previstos.
Otro de los aspectos a atender es el formato en el que se presenta la información. Esto
produce varias diatribas, como la exposición de la información de un modo más breve, a
20
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 4.3: Avatar de LinguAI
partir de hipervínculos o, como se acabó decidiendo, con un breve texto de información
y una redirección a la web donde se integra.
Consecuentemente, fue necesario tomar una decisión sobre el lugar en el que se integraría
el chatbot, ya que este debe alojarse dentro de un canal. Ante las distintas opciones como
Messenger, WhatsApp o Telegram [35], tomamos la decisión de elegir la integración de
web(chat), ya que nos permite enlazar la información del chatbot a las páginas de la web,
así como otras posibilidades que conforman un proyecto aún mayor. De tal modo, así se
creó la web [Link] [36].
Fue importante también establecer cierta estructura en la organización. En este caso,
se estableció un equipo compuesto por un desarrollador y dos validadores. El trabajo
del desarrollador fue validado en todo momento por el equipo de validadores, quienes
proporcionaron orientación sobre los procesos y la documentación requerida.
Un requisito muy importante es la decisión de las herramientas que nos ayudaron a crear
nuestro software, conocidas como Computer Aided Software Engineering (CASE) o In-
geniería de Software Asistido por Computadora. Estas herramientas son “el software que
se utiliza para ayudar a las actividades del proceso de software como la ingeniería de re-
querimientos, el diseño, el desarrollo de programas y las pruebas” [32, 79]. La elección de
unas u otras tuvieron grandes implicaciones de muchos tipos: económicas, conocimien-
to, obsolescencia, limitaciones... Sin más, las herramientas utilizadas como entorno de
desarrollo fueron:
Dialogflow ES: plataforma conversacional de Google dedicada a la comprensión
del lenguaje natural, que facilita el diseño de interfaces de usuario conversacionales
y su integración en diversas aplicaciones para ser utilizada en múltiples dispositivos,
tales como móviles, sitios web, bots, y sistemas de respuesta de voz interactiva, entre
otros [37]. Por consiguiente, en nuestra investigación, utilizaremos esta herramienta
en su versión estándar (ES) para construir nuestro agente conversacional.
Miro: plataforma colaborativa orientada al diseño y la planificación de proyectos,
que facilita la visualización y organización de ideas [38]. En el contexto de nues-
tro proyecto, Miro ha sido extremadamente útil para el diseño de los flujogramas
correspondientes a los distintos casos de uso del chatbot.
Wordpress: plataforma de gestión de contenidos utilizada para la creación y ad-
ministración del sitio web del proyecto [39]. Su facilidad de uso y la disponibilidad
de un amplio número de plantillas y plugins la convierten en una herramienta ac-
cesible y altamente personalizable. Además, la adquisición de un dominio web nos
21
LinguAI: divulgative chatbot on computational linguistics UCM
ha permitido una mayor personalización del contenido, aportando un nivel de pro-
fesionalidad significativo al proyecto.
Microsoft Excel: herramienta de edición de hojas de cálculo que hemos empleado
para el análisis y organización de datos relacionados con el proyecto [40]. Esta
herramienta ha sido fundamental en la documentación de los procesos.
Overleaf: editor colaborativo de LaTeX utilizado para la redacción, edición y pu-
blicación de artículos científicos [41]. Su utilidad se extiende más allá de la simpli-
ficación del uso de LaTeX y la compilación de alta calidad, ofreciendo también la
posibilidad de colaboración en tiempo real para todo el equipo. Así, Overleaf ha
sido la herramienta empleada para documentar todo el proceso, incluida la presente
memoria del Trabajo de Fin de Máster.
En nuestro proyecto, hemos utilizado diversos elementos para documentar todo el proce-
so:
Modelo de conocimiento: este constituye la base del proyecto. En él se describen
los casos de uso con sus subniveles, la construcción de estos a partir de las intenciones
y respuestas, las siglas utilizadas, las entidades, etc.
Documento de respuestas: es un documento de texto plano que contiene las
respuestas proporcionadas por el chatbot en cada caso de uso e historia de usuario.
Es importante mantener este borrador actualizado, ya que las respuestas pueden
variar a lo largo del proyecto debido a cambios en la visualización y presentación
de la información.
Corpus de herramientas y recursos: ha sido necesario crear un corpus, también
en formato de texto plano, en el que se detallan las herramientas y recursos que el
chatbot ofrece, junto con sus enlaces correspondientes.
Flujogramas: para una representación visual del desarrollo de las historias de
usuario, es fundamental documentarlas en forma de flujogramas.
Primer borrador
Como parte de la actividad de definición, fue necesario crear un primer diseño del software
a modo de esqueleto. Este diseño inicial integraba los requisitos funcionales previamente
definidos, los cuales se explicitaban en forma de “especificación de requisitos”, así como
parte de la documentación mencionada anteriormente. En particular, destacaremos los
dos elementos más importantes presentados en este primer borrador, a partir del cual se
partió para empezar el proyecto en el primer sprint.
El primero es el modelo de conocimiento. Tal como se observa en la figura 4.4,
en él se presentan los cinco casos de uso con sus subniveles, además de una breve
explicación de su función y los intents que los activarán. Este documento, en formato
de hoja de cálculo, también incluye otras hojas dedicadas al entrenamiento, donde
se especifican los intents con su definición, el tipo de respuesta que proporcionan,
el sprint en el que se desarrollan y las frases de ejemplo que los activan.
El segundo elemento fundamental fue el diseño de la estructura de diálogo del
chatbot, representado en forma de flujograma. Como se muestra en la figura 5.13,
este flujograma ofrece una visión general del chatbot, constituido por cinco casos
22
LinguAI: divulgative chatbot on computational linguistics UCM
de uso desglosados en varios subniveles, además del menú principal o bienvenida.
Cada caso de uso cuenta con su propio flujograma para su visualización, lo cual
es esencial para el desarrollo de cada iteración. En el primer borrador se realizó
un esbozo de cada uno de ellos, que posteriormente fueron rediseñados en cada
sprint según los cambios en los requisitos, las dificultades encontradas y las nuevas
necesidades surgidas.
Figura 4.4: Captura de los casos de uso
Estimación
El último conjunto de actividades en la fase de definición corresponde a la planificación del
proyecto. Como señala Pressman [33, 593]: “Antes de que el proyecto pueda comenzar,
el equipo de software debe estimar el trabajo que se va a realizar, los recursos que se
requerirán y el tiempo que transcurrirá de principio a fin”. Con el fin de aplicar este
proceso a nuestro proyecto, era necesario establecer un calendario del proyecto en el que
se definieran las fases, tareas e hitos. Para lograr este objetivo, decidimos utilizar un
diagrama de Gantt que nos permitiera realizar una planificación visual del tiempo
y las tareas a desarrollar. Este enfoque nos permitió estimar el tiempo necesario para
cada tarea, planificar reuniones con los validadores, determinar si se habían alcanzado los
hitos y recopilar opiniones subjetivas del equipo. Por lo tanto, era esencial definir tanto el
modelo de procesos, como las tres actividades estructurales, los requisitos y, en general,
la estructura metodológica que utilizamos. De este modo, configuramos la planificación y
diseñamos el diagrama de Gantt, el cual dividimos en tres partes correspondientes a las
tres fases o actividades estructurales. Aunque el tiempo asignado a cada fase era el mismo
(dos meses), el esfuerzo requerido en cada una varió. El tiempo funcionaba de manera
orientativa para cumplir las tareas y objetivos, pero cada conjunto de tareas requirió un
esfuerzo diferente, ya que el equipo no estaba exclusivamente dedicado a este proyecto.
La distribución del esfuerzo se puede resumir en el cuadro 4.1.
La primera fase, correspondiente a la definición, se desarrolló en los dos primeros
meses. Como se aprecia en la figura 4.6, las actividades se llevaron a cabo a lo largo
del tiempo. Al ser la primera fase, y la planificación la última de sus actividades,
23
LinguAI: divulgative chatbot on computational linguistics UCM
Diseño 35 %
Desarrollo 25 %
Paso a producción 40 %
Cuadro 4.1: Distribución de esfuerzo
la programación inicial de actividades se realizó de manera manual, considerando
ciertos márgenes de tiempo y la configuración de las tareas a desarrollar.
La segunda fase, que describiremos en la siguiente subsección, se enfoca en el
desarrollo. Durante esta fase se llevaron a cabo los sprints, por lo que las tareas
se repetían casi todas las semanas. Existen dos semanas que difieren: el primer
sprint, en el cual era necesario estudiar y llegar a conclusiones sobre cómo aplicar la
metodología de la mejor manera posible, y el último sprint, ya que en él se llevaron
a cabo las actividades de protección.
La tercera y última fase es la de paso a producción. En esta fase se realizan tareas
relacionadas con los requisitos no funcionales, como la integración del chatbot en el
entorno web, actividades de protección como pruebas, y la redacción de la presente
memoria a partir de la documentación recopilada.
4.2.2. Desarrollo
Fase centrada en la construcción de la interfaz conversacional. En ella se definen cómo se
han de diseñar los casos de uso, cómo se implementan estos, cómo se entrenan los intents,
cómo aplicar el diseño al proyecto y cómo se han de realizar las pruebas. Esta fase se
repite en cada uno de los sprints, por lo que es importante seguir la metodología, no
únicamente con un fin unitario, sino también porque cada repetición de esta fase escala
sobre la anterior, por lo que se pueden producir ciertos problemas. Por tanto, esta fase
se divide en las tres tareas que señalamos en la figura 4.5.
Figura 4.5: Tareas y subtareas de la actividad de desarrollo
Diseño
En cada sprint, se revisa y rediseña la documentación, partiendo del borrador inicial
4.2.1. El diseño realizado durante la fase de desarrollo se basa en la práctica, es decir,
en un proceso de ensayo y error. Por ejemplo, a lo largo del sprint puede ser necesario
24
LinguAI: divulgative chatbot on computational linguistics UCM
modificar algún subnivel de los casos de uso, porque se concluye que no es necesario o
porque se debe añadir uno nuevo. Asimismo, puede ser necesario rediseñar el flujograma,
ya sea porque se descubre una forma más eficiente de llevarlo a cabo, ya sea porque el
diseño inicial resulta impracticable.
Construcción
La tarea de construcción, aunque constituye el grueso del desarrollo, es realmente la más
corta y sencilla si se ha llevado a cabo una fase de definición adecuada y un diseño correcto.
El desarrollo de nuestro chatbot se divide a su vez tres subtareas: el entrenamiento para
el entendimiento del lenguaje, la creación de las respuestas y la validación.
La tarea de entrenamiento del lenguaje natural se encarga de capacitar al chatbot para
comprender la entrada del usuario y así, generar la salida adecuada, en este caso, el
texto de las respuestas. Los chatbots capturan el texto del usuario y lo clasifican en
intents 1 . Aunque un caso de uso no es equivalente a un intent, estos se construyen a
partir de ellos, uniéndose según la intención del lenguaje natural del usuario, siguiendo los
flujos de conversación diseñados. Algunos intents no captan directamente la intención del
usuario, sino que sirven para desambiguar ciertas intenciones, indicar que algo no se ha
entendido o regresar a un punto anterior del flujo. Esta subtarea, a su vez, incluye varias
actividades. La primera es crear el intent dentro de la consola de Dialogflow. Para que
el intent cumpla su función, debe alimentarse con frases de entrenamiento o Utterances.
Estas frases deben ser similares a las que el usuario podría escribir para captar activar
el intent destinado. Las buenas prácticas sugieren que el número de estas frases debe
oscilar entre 20 y 30, aunque puede variar según la importancia y el tamaño de nuestra
intención. Estas frases se deben crear en nuestra documentación, utilizando el 70 % para
el entrenamiento del intent y reservando el 30 % restante para la validación posterior.
Además, es crucial añadir contextos [42] que conecten distintos intents, facilitando el
flujo de la conversación tal como se ha diseñado.
Las respuestas son las salidas y acciones que detona el intent una vez activado. No todos
los intents proporcionan información; algunos tienen otras funciones. Las respuestas que
usamos en general se estructuran en: la información que el intent pretende transmitir,
un enlace a la web que amplía dicha información y un mensaje que ayuda a continuar
el flujo conversacional. Dialogflow nos permite dos tipos de respuestas: las simples con
texto y las payloads 2 . En concreto, tuvimos que utilizar los dos tipos, las primeras para
los mensajes de información simples de texto, y las segundas, a través del formato JSON,
para crear distintos tipos de respuestas, como botones, chips, acordeones o listas. Cada
caso de uso, y concretamente cada intent, requiere su propia combinación de respuestas,
que a su vez sea coherente con el resto de respuestas del caso de uso y del chatbot en
general.
La tercera y última de las subtareas es la validación del lenguaje natural, es decir, ase-
gurarse de que los intents comprenden de manera correcta lo que se pretende. Para ello
se lleva a cabo dos tipos de validaciones.
1
Para más información, se puede consultar la documentación de Dialogflow (DF ) en: [Link]
[Link]/dialogflow/es/docs/intents-overview?hl=es-419
2
Para ello, consultamos la documentación disponible en: [Link]
docs/integrations/dialogflow-messenger?hl=es-419
25
LinguAI: divulgative chatbot on computational linguistics UCM
La primera validación utiliza conjuntos de pruebas. Para ello, se solicita a varias personas
que completen un conjunto de frases variadas que deben activar los intents. Esta tarea
implica el uso de un Script diseñado para verificar si todas esas frases son comprendidas
por el chatbot y categorizadas correctamente en el intent correspondiente. El script se
ejecuta con el primer conjunto de frases y se evalúan los resultados mediante las métricas
de precisión, cobertura y F1-score. Estas medidas son muy utilizadas en la ciencia de
datos para comprobar la eficiencia de los sistemas de clasificación. Para ello es importante
comprender los siguientes conceptos:
Verdadero positivo (VP): el modelo clasifica correctamente del modo esperado.
Falso positivo (FP): el modelo clasifica de manera incorrecta.
Verdadero negativo (VN): el modelo no clasifica o señala como indefinido, tal y
como se espera.
Falso negativo (FN): el modelo no clasifica, cuando sí debería.
Por tanto, las medidas se forman a partir de las siguientes fórmulas:
La precisión mide la proporción de predicciones correctas entre todas las predic-
ciones positivas realizadas por el modelo. Es decir, de todos los elementos que el
modelo clasificó como positivos, cuántos realmente lo son.
Verdaderos Positivos (VP)
Precisión =
Verdaderos Positivos (VP) + Falsos Positivos (FP)
La cobertura mide la proporción de verdaderos positivos entre todos los elementos
que son realmente positivos. Indica qué tan bien el modelo puede identificar todos
los casos positivos.
Verdaderos Positivos (VP)
Cobertura =
Verdaderos Positivos (VP) + Falsos Negativos (FN)
El F1-score es la media armónica entre la precisión y la cobertura. Proporciona
un balance entre estas dos métricas, especialmente útil cuando una de ellas está
desbalanceada.
Precisión × Cobertura
F1-Score = 2 ×
Precisión + Cobertura
Si el chatbot no comprende algunos de los enunciados que debería, se procede a reentrenar
con frases similares y se verifica manualmente su comprensión. Una vez alcanzada la
comprensión adecuada, se aplica nuevamente el script al segundo conjunto de pruebas,
repitiendo el proceso. Se espera que, en este segundo ciclo de validación, las métricas de
evaluación muestren una mejora porcentual, indicando una mayor eficacia tras el ajuste
y mejora del entrenamiento. El objetivo es que el porcentaje del F1-score sea al menos
un 85 % tras refinarlo y antes de ponerlo en estado de producción.
La segunda validación, denominado Test de regresión, utiliza el 30 % de las frases no
empleadas en la fase de entrenamiento de cada intent, y se acumulan tras cada sprint.
Estas frases se agrupan en un conjunto de pruebas, organizadas en un archivo de Excel.
26
LinguAI: divulgative chatbot on computational linguistics UCM
Este conjunto de pruebas asegura que tras cada iteración de ajuste o mejora del modelo
el funcionamiento del modelo en las iteraciones anteriores permanezca intacto.
Al igual que con los conjuntos de pruebas, se utiliza el script para verificar los intents
activados y se aplican las mismas métricas de evaluación. En este caso, se espera que el
F1-score obtenga un porcentaje superior, pues su naturaleza se basa en frases que parten
del entrenamiento, por lo que deben rondar el 90 - 95 %.
Seguimiento y control
Esta última tarea se centra principalmente en la aplicación de actividades de protección,
incluyendo la corrección de errores y la adaptación necesaria debido a la evolución del
software y a los cambios en los requisitos. Además, es crucial considerar cómo la solución
desarrollada se integra en el entorno previsto, identificar las posibilidades de mejora y
planificar los procesos subsiguientes.
4.2.3. Paso a producción e integraciones
La fase final, denominada “paso a producción”, implica la integración completa del chatbot
en la plataforma web. Aunque realmente el chatbot alcanzó el estado de producción al
finalizar cada iteración3 , esta fase abarca todas las tareas necesarias para obtener una
versión final del proyecto, de modo que el usuario pueda experimentar plenamente todas
las funcionalidades propuestas. Tal como se observa en la planificación presentada en la
figura 4.6, las tareas del primer mes se destinaron a la creación de la web, la integración
del chatbot, la vinculación de los intents con sus respectivos apartados web, la prueba de
diversas tipologías de respuestas enriquecidas, la adición y prueba de elementos visuales
como iconos, la mejora del contenido de la web y la realización de múltiples pruebas para
asegurar su correcto funcionamiento.
El segundo mes se dedicó íntegramente a la redacción de la memoria. Si bien en este pro-
yecto adquiere una relevancia particular por su propósito como Trabajo Final de Máster,
tal como se indicó en las tareas de documentación, consideramos de suma importancia
la documentación exhaustiva del proyecto. Además, no se trata únicamente de unificar
la documentación existente, sino que es necesario estructurarla adecuadamente, aprender
el sistema de composición LaTeX, realizar reuniones con los tutores para determinar las
mejores formas de presentación y redactar explícitamente los procesos derivados de la
metodología y del desarrollo del proyecto.
4.3. Actividades de protección
Las actividades de protección (o “sombrilla” para Pressman) constituyen un conjunto
de operaciones que encapsulan el modelo de proceso. Estas actividades tienen funciones
críticas como el aseguramiento de la calidad del software, la administración de la configu-
ración del software y las mediciones [33, 556]. Dichas actividades son autónomas respecto
a cualquier otra actividad del marco conceptual y se llevan a cabo de manera continua a
lo largo del proceso de desarrollo, como se ilustra en la figura 4.1. Por ende, se integran
3
El chatbot era funcional y estable en la versión de producción, mientras se sigue evolucionando en
el entorno de desarrollo.
27
LinguAI: divulgative chatbot on computational linguistics UCM
transversalmente a lo largo de las actividades estructurales, específicamente durante las
fases de definición, desarrollo y transición a la producción.
La primera actividad destacada son las reuniones de equipo, las cuales son esenciales
para la toma de decisiones dentro del proyecto. Este aspecto es un pilar de los modelos
de procesos ágiles, donde la comunicación efectiva tanto con los usuarios como entre
los miembros del equipo es primordial. A lo largo del proyecto, se han llevado a cabo
numerosas reuniones, tanto las programadas como otras interacciones individuales. Cada
una de estas reuniones ha resultado en una actualización del estado del proyecto, la
resolución de interrogantes, la emisión de recomendaciones y la planificación de los pasos
a seguir.
La segunda actividad es el seguimiento del cumplimiento del plan de tareas e hitos. Esta
supervisión es constante durante todo el proyecto y se realiza tanto en las reuniones
de equipo como en la revisión diaria del mapa de seguimiento. Los hitos, por su parte,
representan la finalización exitosa de un conjunto específico de tareas.
La tercera actividad, la identificación y administración de riesgos, es fundamental para el
desarrollo de software. Estas son acciones proactivas que permiten al equipo de software
comprender y gestionar la incertidumbre [33, 640], con el objetivo de prevenir cualquier
contratiempo que pueda comprometer la planificación del proyecto. Aunque no se haya
elaborado un plan RSGR específico, como el propuesto por Boehm[43], se han imple-
mentado medidas preventivas. Entre estas medidas se incluyen la cuidadosa selección de
requisitos, una planificación temporal detallada y la elección adecuada de herramientas.
Estas precauciones son vitales para mitigar los riesgos potenciales y asegurar la integridad
y el éxito del proyecto.
El complemento del punto anterior se manifiesta en la cuarta actividad de protección: la
implementación de pruebas de calidad y fiabilidad en el software. Estas pruebas garantizan
que cada proceso, componente y, en última instancia, el proyecto en su conjunto, cumplan
con los objetivos establecidos de manera eficiente. Para lograr esto, se realizan diversas
pruebas:
Pruebas unitarias: verifican que cada componente individual del chatbot funciona
correctamente. Esto incluye la creación y ejecución de casos de prueba específicos
para cada caso de uso.
Pruebas de integración: evaluan la interacción entre los diferentes casos de uso para
asegurar que funcionan de manera cohesiva.
Pruebas de usuario: recolectan de retroalimentación de usuarios reales para validar
la usabilidad y efectividad del chatbot en escenarios del mundo real. Se realizarán
ajustes basados en esta información para mejorar continuamente el sistema.
Además de las pruebas mencionadas, se realizaron las ya nombradas validaciones del
modelo de lenguaje, con los conjuntos de pruebas y los Test de regresión, así como pruebas
espontáneas, no solo del chatbot, sino también del entorno de integración.
Y por último, la última acción para la prevención de riesgos y quinta actividad sombri-
lla: los controles de seguridad y versionados. Es totalmente necesario tomar medidas de
seguridad, no tanto para evitar ataques o fugas de información (como puedan ser crítico
en proyectos mayores), sino para tener un control de todo el proceso en caso de rotura o
28
LinguAI: divulgative chatbot on computational linguistics UCM
pérdida de componentes. Para nuestro proyecto no ha sido necesario utilizar algunas de
las herramientas más comunes de versionado como Git, sino simplemente otros métodos
como la creación de dos versiones del chatbot en Dialogflow, una de desarrollo y otra de
producción; el almacenamiento de cada versión del chatbot en cada sprint o versiones de
cada flujo y de los textos de las respuestas.
29
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 4.6: Diagrama de Gantt
30
Capítulo 5
Desarrollo
En consecuencia, la etapa de desarrollo comprende los procesos mencionados en la me-
todología y representados en el diagrama de Gantt, los cuales serán detallados en las
secciones subsiguientes. Tal como indicó el cuadro 4.1, la fase de desarrollo representa el
menor esfuerzo (25 %), ya que en esencia consiste en la implementación de lo proyectado
durante la etapa de diseño. Sin embargo, en las metodologías ágiles, esta fase requiere
un esfuerzo ligeramente superior en comparación con otras tipologías. Esto se debe a que
se anticipan y se permiten ciertas modificaciones en los requerimientos, lo cual, si bien
proporciona un alto grado de adaptabilidad, también implica un incremento en el esfuerzo
requerido.
5.1. Sprint 1. Caso de uso: Welcome, Fallback y Chit-
chat
5.1.1. Descripción del caso de uso
El primer sprint establece las bases fundamentales para el desarrollo subsiguiente. Su
propósito primordial es construir la infraestructura básica del chatbot. Esto incluye, de
manera específica, implementar una función de bienvenida, gestionar los mensajes de
Fallback y permitir la navegación de retorno al menú de inicio y proporcionar respuestas
a ciertas entradas predefinidas, conocidas como Chit-chat. Basándonos en la metodología
seleccionada, los elementos necesarios para su desarrollo incluyen: el diseño del flujo de
conversación, previamente esbozado en la figura 5.13, y el modelo de conocimiento de la
figura 5.1, esenciales para compilar la documentación requerida.
Figura 5.1: Modelo de conocimiento del sprint 1
31
LinguAI: divulgative chatbot on computational linguistics UCM
5.1.2. Entrenamiento
El proceso de entrenamiento para este primer sprint presentó ciertas particularidades
en comparación con los demás sprints, acorde con la naturaleza específica de los intents
desarrollados. Algunos intents ya disponían de frases de entrenamiento predefinidas en
Dialogflow, lo que requirió únicamente la mejora del entendimiento con algunas variantes
adicionales. Para aquellos sin frases preestablecidas, se elaboró un documento con una
amplia gama de frases de entrenamiento. De este conjunto, como se mencionó anterior-
mente, se incorporó el 70 % en la consola del intent para su entrenamiento.
5.1.3. Creación de respuestas
En cuanto a la creación de respuestas, algunos de los intents del primer sprint plantearon
desafíos específicos, tal como se describió en la metodología. Por un lado, las respuestas
asociadas al chit-chat resultaron ser relativamente sencillas de implementar. Como se
observa en la figura 5.2, consisten en una respuesta textual, lo que implicó la aplicación del
estudio previo que se hizo sobre la personalidad definida para el chatbot [34]. No obstante,
es digno de mención que optamos por emplear tres variaciones distintas del mismo texto,
con el objetivo de ofrecer respuestas diversificadas en diferentes interacciones.
Figura 5.2: Respuestas del intent CHI-ThankYou
Por otro lado, los intents Default Welcome Intent y CHI-AnotherThing (ver figura 5.1)
representaron retos anticipatorios para los intents que se desarrollarían posteriormente.
En el caso del Default Welcome Intent, después de un mensaje de presentación (para el
cual también se optó por tres variantes), se despliega un menú con los cinco casos de uso
de nivel uno. Esto requería una interfaz similar a una botonera. Tras una investigación
exhaustiva y la validación con los tutores, como se explica en la metodología, se deci-
dió implementar la respuesta de tipo Custom Payload que ofrece Dialogflow. Mediante
el formato JSON1 , se logró crear diversas configuraciones de botones. Tras numerosas
pruebas, se seleccionó el formato de “chips de sugerencias” 2 , ya que permite generar la
cantidad necesaria de botones e incorporan iconos, resultando en la interfaz visualizada
en la figura 5.3(a).
El intent CHI-AnotherThing, como vemos en la figura 5.3(b), ofrece la misma interfaz
que el Default Welcome Intent. No obstante, su complejidad radica en la creación de
contextos. Los contextos de entrada fueron esenciales para activar este intent en los
puntos específicos dentro de flujos conversacionales avanzados, y los contextos de salida
para desencadenar los casos de uso de manera coherente con las expectativas.
1
Tal y como señalamos en el apartado 4.2.2
2
Uno de los formatos disponibles en Dialogflow Messenger [44]
32
LinguAI: divulgative chatbot on computational linguistics UCM
((b)) Captura del intent “otra co-
((a)) Captura de la bienvenida sa”
Figura 5.3: Captura de los intents Welcome y CHI-AnotherThing
5.1.4. Validación y pruebas de QA
Conforme a la metodología establecida, la validación del lenguaje se estructura en dos
componentes principales: el conjunto de pruebas y el Test de regresión. Para el conjunto
de pruebas, se diseñó una hoja de cálculo Excel, la cual fue completada por dos personas
no vinculadas directamente al proyecto. Se les solicitó que registraran las frases que
intuitivamente emplearían si interactuase con el sistema, tal y como se ilustra en la figura
5.4. Esta estrategia permitió recopilar datos auténticos y variados, fundamentales para
afinar el entrenamiento del modelo de lenguaje y asegurar su capacidad de interpretar
entradas naturales y espontáneas de los usuarios finales.
Siguiendo rigurosamente la metodología propuesta, se implementó un script para auto-
matizar el proceso de verificación de la comprensión del chatbot. Este script sirvió para
evaluar si las frases introducidas por los usuarios eran correctamente interpretadas y
asignadas al intent correspondiente.
Las pruebas que se realizaron fueron en el entorno de pruebas, para comprobar la co-
rrecta captación de los intents (pues propiamente aún no habíamos desarrollado flujos
de conversación) y que se presentase la información de manera correcta. Por lo tanto, en
este sprint, se realizaron exclusivamente pruebas unitarias.
33
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.4: Plantilla del conjunto de pruebas del sprint 1
5.2. Sprint 2. Caso de uso: información general
5.2.1. Descripción del caso de uso
Durante la realización del segundo sprint, se procedió al desarrollo del prototipo inicial
de flujo conversacional. Este fue específicamente diseñado para abordar el primer caso
de uso, proporcionando una panorámica introductoria sobre el campo de la Lingüística
Computacional. Como consecuencia de esta implementación, se hizo necesario el diseño
y la integración de nuevas categorías de intents con capacidades desambiguantes. En
consecuencia, no solo se elaboró el modelo de conocimiento ilustrado en la figura 5.5, sino
también tuvimos que valernos del diseño del flujograma de la figura 5.143 .
Figura 5.5: Modelo de conocimiento del sprint 2
5.2.2. Entrenamiento
El proceso de entrenamiento implementado en el segundo sprint presentó características
distintas al anterior. Se prestó especial atención a la diferenciación de los intents de
Questions & Answers (Q&A), cuyo propósito es proporcionar información precisa, con
el fin de evitar errores en su reconocimiento. A pesar de emplear contextos para mejorar
3
Los flujogramas están situados al final del capítulo
34
LinguAI: divulgative chatbot on computational linguistics UCM
la precisión, se buscó garantizar que los usuarios pudieran acceder a la información de
segundo nivel en cualquier instante.
Adicionalmente, se introdujo el intent DIA-MoreInfo_LC, diseñado para desambiguar entre
los niveles de interacción y el Fallback_LC que, careciendo de entrenamiento específico,
facilita la reincorporación del usuario al flujo conversacional. Para el resto de las frases
empleadas en el entrenamiento, se continuó aplicando la metodología establecida del
70 %.
5.2.3. Creación de respuestas
La construcción de los flujos conversacionales acarreó ciertas dificultades. Una de ellas
fue la necesidad de condensar la información a transmitir, evitando así la creación de
burbujas de diálogo (cada uno de los cuadros de mensaje) excesivamente extensas que
pudieran perjudicar la experiencia del usuario. Otra complicación surgió al determinar
la modalidad de presentación de la información, optando finalmente por un botón en
lugar de un menú de selección, tal como se muestra en la figura 5.6(a). Se desarrolló,
además, una tercera respuesta que asegura la continuidad del flujo, ya sea redirigiendo al
usuario al inicio del caso de uso correspondiente, mediante el uso de DIA-MoreInfo_LC, o
al menú principal establecido en el sprint previo. Un ejemplo ilustrativo de la formulación
de respuestas para el segundo nivel se puede observar en la figura 5.6(b).
((a)) Botonera del menú
de información ((b)) Ejemplo de respuesta del intent QNA-GetNeed_LC
Figura 5.6: Captura del sprint 2
35
LinguAI: divulgative chatbot on computational linguistics UCM
5.2.4. Validación y pruebas de QA
De nuevo, la validación siguió la metodología señalada en el apartado 4.2.2. Los conjuntos
de pruebas fueron rellenados y comprobados, así como se utilizó el 30 % de las frases de
entrenamiento para el Test de regresión. En esta validación encontramos ciertas dificul-
tades en la precisión, pues hay ciertos intents que son difíciles de delimitar entre sí, por
lo que tuvimos que tener cuidado a la hora de reentrenarlo.
En el desarrollo del sprint se asignó un enfoque intensificado a las pruebas. Era imperativo
verificar no solo la funcionalidad individual de los intents (mediante pruebas unitarias),
sino también asegurar la operatividad integral del flujo conversacional, lo que justificó la
inclusión de pruebas de integración. Estas últimas fueron cruciales para la identificación
y corrección de múltiples errores, así como para la anticipación de obstáculos futuros.
Un ejemplo de ello fue la necesidad de implementar intents intermedios que facilitaran la
navegación dentro de la conversación, evitando así intercambios demasiado prolongados,
y la instauración de un fallback específico para cada caso de uso, mejorando la resiliencia
del sistema.
5.3. Sprint 3. Caso de uso: competencias
5.3.1. Descripción del caso de uso
El tercer sprint desarrolló el caso de uso relativo a las competencias y sus subniveles. Este
fue el primer flujo en el que añadimos nuevas funcionalidades a partir de lo desarrollado
en el segundo sprint, lo que nos obligó a aprender a replicar los flujos, teniendo en cuenta
sus características particulares. Al igual que en el resto, para este también fue necesario
seguir el flujograma de la figura 5.15 y el modelo de conocimiento de la figura 5.7.
Figura 5.7: Modelo de conocimiento del sprint 3
5.3.2. Entrenamiento
El entrenamiento en este sprint resultó ser algo más sencillo que en los anteriores, dado
que se siguió el proceso llevado a cabo en el sprint previo. Todos los intents son informa-
cionales, es decir, que las frases de entrenamiento los activan para solicitar información,
36
LinguAI: divulgative chatbot on computational linguistics UCM
exceptuando los dos mismos casos que en el sprint anterior: DIA-More_Comp, que desam-
bigua el diálogo para retornar al nivel uno del flujo, y Fallback_Comp, para redirigir al
usuario al flujo.
5.3.3. Creación de respuestas
De manera similar, en las respuestas que proporcionaban la información sobre las compe-
tencias también tuvimos que buscar una forma de acortarlas. Las respuestas son realmente
breves y su tono mantiene la extroversión y amabilidad. Como vemos en la figura 5.8,
el primer mensaje es el texto de información y el segundo sigue siendo una botonera, el
cual redirige a la página web, donde se ofrece más información si el usuario así lo desea.
Finalmente, al igual que en el flujo anterior, cuando el usuario llega al final del flujo, se
le ofrece, a través de la introducción de lenguaje natural, la opción de elegir entre las dos
razones ya desarrolladas: volver al inicio del caso de uso con DIA-More_Comp o indicar si
desea volver al menú de casos de uso con CHI-AnotherThing. Y, como mencionábamos, si
el usuario introduce una entrada no esperada, también se le redirige.
Figura 5.8: Botonera del caso de uso: competencias, etiquetado de corpus
5.3.4. Validación y pruebas de Q&A
La validación en este sprint resultó ser bastante sencilla; a pesar de tener un mayor vo-
lumen de intents, estos son bastante diferentes en su entrenamiento. Prestamos atención
y tuvimos que reentrenar ciertos casos en los que una competencia puede recibir diversos
nombres, como puede ser PLN (“Procesamiento de Lenguaje Natural”) o NLP (Natural
Language Processing). Finalmente, validamos el Test de regresión con el 30 % del entrena-
miento de este sprint, lo que nos permitió asegurarnos de que el entrenamiento del sprint
pasado siguiese funcionando correctamente y no activase intents de este sprint.
37
LinguAI: divulgative chatbot on computational linguistics UCM
También fue importante dedicar esfuerzos a probar el correcto funcionamiento de cada
uno de los flujos, que en este caso eran un buen número. No solo fue necesario comprobar
el correcto funcionamiento de cada uno de los subniveles del caso de uso, sino también
verificar que funcionaban en cada flujo los intents de desambiguación, fallback y que se
podía saltar a otros intents cuando era posible. También nos fueron necesarias varias
pruebas para resolver algunos errores visuales de los iconos.
5.4. Sprint 4. Caso de uso: formación
5.4.1. Descripción del caso de uso
En el cuarto sprint nos enfocamos en el desarrollo del caso de uso relativo a la formación.
Como se puede observar en su modelo de conocimiento (figura 5.9), en este sprint desa-
rrollamos únicamente seis intents, los cuales, tal como se puede apreciar en el flujograma
de la figura 5.16, se descomponen en tres flujos.
Figura 5.9: Modelo de conocimiento del sprint 4
5.4.2. Entrenamiento
El entrenamiento en este sprint resultó ser bastante sencillo, no tanto por la cantidad de
intents, sino por la simplicidad de su función y enunciación. Como se puede observar en
el modelo de conocimiento en la figura 5.9, los intents utilizan el prefijo DIA-, en lugar del
anterior QNA-. Esto se debe a que la función del intent no es proporcionar una respuesta
informativa, sino que actúa como un diálogo y redirige a un repertorio.
5.4.3. Creación de respuestas
Como hemos mencionado, en un diseño inicial la intención era que el chatbot ofreciera
varios enlaces de una selección que habíamos realizado previamente. Sin embargo, esto
producía un exceso de número de mensajes, además de que dificultaba mucho que en el
futuro pudiéramos actualizar ese repertorio. Por lo tanto, como vemos en la figura 5.10,
la respuesta vuelve a seguir el patrón de utilizar un botón que redirige al apartado web
correspondiente, y un final de flujo igual que los anteriores.
5.4.4. Validación y pruebas de Q&A
Nuevamente, la validación en este sprint resultó ser bastante sencilla, tanto por el volumen
como por su complejidad. Por lo tanto, no encontramos grandes problemas, salvo algunas
correcciones, tanto en los conjuntos de pruebas como en el Test de regresión, el cual
tratamos con sumo cuidado una vez que ya habíamos iterado cuatro veces sobre él.
De cualquier modo, sí se mantuvo el tiempo dedicado en las pruebas para comprobar el
funcionamiento de los tres flujos, así como las redirecciones y el fallback.
38
LinguAI: divulgative chatbot on computational linguistics UCM
((a)) Captura del caso de uso: ((b)) Captura de la activación del
Formación, estudios de grado intent CHI-AnotherThing
Figura 5.10: Captura de las respuestas del caso de uso: Formación
5.5. Sprint 5. Caso de uso: herramientas
5.5.1. Descripción del caso de uso
En el quinto sprint nos enfocamos en el desarrollo del caso de uso que proporciona
información sobre las herramientas más comúnmente utilizadas por los lingüistas compu-
tacionales. Este sprint presentó ciertos desafíos, debido, por un lado, al número de intents
que se desarrollaron, como se puede observar en su modelo de conocimiento (figura 5.11)
y, por otro lado, a la cantidad de botoneras e interacciones que se necesitaban, tal como
se puede apreciar en su flujograma (figura 5.17).
Figura 5.11: Modelo de conocimiento del sprint 5
5.5.2. Entrenamiento
Por lo tanto, el entrenamiento también implicó ciertas dificultades. Además del volumen,
surgió el problema de que, para preguntar por muchas de las herramientas, se utilizan
enunciados muy similares a los desarrollados en el tercer sprint sobre competencias, como
por ejemplo la competencia de Uso de herramientas, pipelines y aplicaciones PLN con la
herramienta Etiquetado de corpus . Para mitigar esta problemática, fue necesario tanto la
39
LinguAI: divulgative chatbot on computational linguistics UCM
atención minuciosa del entrenamiento en cada intent, como el apoyo de los contextos para
seguir los flujos. Además, muchas de las herramientas utilizan diferentes nomenclaturas
(PLN, NLP, etiquetado de corpus, procesamiento del lenguaje, análisis del lenguaje...) y
también tuvimos en cuenta que los usuarios pudieran solicitar información denominando
directamente las herramientas. Como en el resto, también fue necesaria la creación del
intent desambiguante CHI-AnotherThing para redirigir el flujo y el fallback propio del caso
de uso.
5.5.3. Creación de respuestas
En la misma línea, también fue compleja la creación de las respuestas. En primer lugar, el
intent de nivel uno DIA-Tools_LC necesitaba un tipo de respuesta con un buen número de
chips, que redirigen a cada uno de los subniveles, en este caso, a cada herramienta. Para
acceder a cada uno de estos subniveles, es necesario tanto el entrenamiento de los intents
como el desarrollo de los contextos. En cuanto a las herramientas en sí, se mantiene el
proceso de mostrar el texto de información en un formato de texto simple, posteriormente
un botón que redirige a la web para acceder propiamente a las herramientas y sus enlaces,
y finalmente un mensaje que redirige al usuario en el flujo, ya sea al inicio del caso de uso
o al menú principal. Como en el caso de uso de la formación (desarrollado en el sprint 4),
también tuvimos que rehacer el diseño inicial propuesto, en el cual en cada herramienta
se mostraba un enlace directo a cada herramienta.
5.5.4. Validación y pruebas de QA
Por supuesto, la validación fue un proceso meticuloso y complejo. Tuvimos que reentre-
nar un buen número de intents, con la intención de afinar y evitar imprecisiones. Estos
problemas no los encontramos tanto en los conjuntos de pruebas, pues simplemente en
estos encontrábamos algunas formas de enunciación o herramientas que no habíamos te-
nido en cuenta, sino más bien en el Test de regresión, pues algunos de estos enunciados
se activaban como intents de las competencias.
Por ende, las pruebas fueron también exhaustivas, tanto las unitarias del propio caso de
uso, como pruebas de integración, para comprobar si el salto a otros flujos funcionaba
correctamente. También fue necesario comprobar la entrada de enunciados sueltos, para
comprobar la precisión del entendimiento.
5.6. Sprint 6. Caso de uso: recursos
5.6.1. Descripción del caso de uso
El penúltimo sprint (último de desarrollo) se centró en el desarrollo del caso de uso sobre
otros recursos. Este sprint fue realmente sencillo, con tan solo seis intents como vemos
en el modelo de conocimiento (figura 5.12) y únicamente tres flujos (figura 5.18).
5.6.2. Entrenamiento
El entrenamiento fue uno de los más sencillos, debido al poco volumen y a la diferencia
que había entre los mismos y con respecto al resto de los intents entrenados. De nuevo,
40
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.12: Modelo de conocimiento del sprint 6
también fueron necesarios los intents de desambiguación (DIA-MoreInfo_Resource) para
volver al inicio del flujo y el Falback_Resource propio del caso de uso.
5.6.3. Creación de respuestas
En la misma línea fue la creación de las respuestas, que siguió el mismo proceso del
primer nivel con las chips que se desglosaban en los tres subniveles (libros, organizaciones
y media) captados a partir del lenguaje natural, y luego la creación de las respuestas de
los intents de segundo nivel, con el primer mensaje de información, el segundo con el
enlace al apartado web y el tercera que presenta las opciones del usuario: volver al inicio
del caso de uso o al menú inicial.
5.6.4. Validación y pruebas de QA
Las validaciones, por tanto, fueron bastante sencillas. Tan solo fue necesario reentrenar
algunos intents, como el de Media DIA-GetInfo_Media, por encontrar posibilidades que
no se nos habían ocurrido anteriormente (preguntar por TikTok, Twitter, web educati-
vas...).
Del mismo modo, las pruebas siguieron los patrones que las anteriores, tanto pruebas de
los tres flujos desarrollados, como la interacción entre ellos y con el resto de flujos.
5.7. Sprint 7. Q&A y refinamiento
En la última etapa, dedicamos un sprint completo exclusivamente a la realización de
pruebas en frío, es decir, a probar el chatbot en el entorno de desarrollo de manera
repetida, tanto por parte del equipo de desarrollo como de otros usuarios, en busca de
posibles ajustes y mejoras. A través de estas pruebas se mejoraron varios aspectos, como
algunos iconos en los botones que no aparecían o cuya selección no era la más adecuada,
algunos errores en ciertos puntos que impedían realizar los saltos de flujos esperados, o
ciertas frases del entrenamiento que no accedían al flujo (y por tanto, al intent) esperado.
Así, además de la comunicación a lo largo del sprint, se llevó a cabo una reunión final
con los tutores en la que se explicitaron las decisiones tomadas y se preparó el paso a
producción.
5.8. Paso a producción
La última fase, a la que denominamos paso a producción, no es exactamente lo que se
entiende por antonomasia, sino la integración y mejora del lugar donde se integra el
chatbot. En realidad, la decisión del lugar en el que integrar el chatbot ya se tomó en la
metodología, dado que esa decisión era necesaria realizarla previamente porque repercutía
en una gran cantidad de decisiones del desarrollo. Sin embargo, en este proceso sí que
41
LinguAI: divulgative chatbot on computational linguistics UCM
se llevó a cabo la creación propiamente dicha de la web, en la que se obtuvo un hosting
de Wordpress [39] y se adquirió el dominio para otorgar una mayor profesionalidad al
proyecto: [Link]. La decisión de crear la web en un gestor como Wordpress y no
crearla completamente desde cero supuso ciertas conversaciones dentro del equipo. Si bien
la creación de la web desde los cimientos ofrece una mayor cantidad de personalización
y de mostrar la habilidad para ello (uno de los objetivos de la presente memoria), el uso
de un gestor ofrecía un gran número de ventajas:
Una menor cantidad de esfuerzo/tiempo, pues hicimos uso de una plantilla que
personalizamos.
Dificultad al desconocer cómo comprar un dominio y, en sí, hacer que esté en línea.
Falta de conocimientos para su mantenimiento.
Grandes posibilidades de personalización gracias a los Plugin, dentro de las necesi-
dades del proyecto.
Una vez creada la web se personalizó de acuerdo a las necesidades del proyecto. Una de
las principales era la creación de una página por cada caso de uso, con el fin de poder
redirigir a estas a través de los intents. Tras ello, se completaron dichas páginas con la
información dedicada a cada apartado. Esto produjo un problema, pues necesitábamos
enlazar el encabezado de cada apartado de las páginas con los intents, por lo que fue
necesario utilizar un plugin que permitiese utilizar código HTML en los encabezados,
creando etiquetas que nos permitieran enlazar los vínculos. Así, tuvimos que volver a
Dialogflow y añadir los enlaces correspondientes a cada intent, tal y como se muestra en
el siguiente código:
✞ ☎
1 <h2 class = ‘ ‘ wp - block - heading ’’ id = " s a l i d a s −l c " > Salidas y perfiles
laborales </ h2 >
✝ ✆
Asimismo, también fue necesaria la integración del propio chatbot, por lo que necesitamos
otro plugin llamado WPCode Lite, el cual nos permite insertar scripts en la cabeza y pie
de página. De este modo, pudimos añadir el script que integraba el chatbot en el lugar
deseado, el cual se compone de HMTL, JavaScript y CSS. Dicha integración se realizó a
través del código 5.8 situado al final del capítulo.
Como se puede observar, el encabezado se compone del <script>, una segunda parte con
los datos para la conexión de nuestro chatbot (a la cual le hemos quitado los datos sensi-
bles) y fue necesario para seleccionar el intent de inicio con el comando intent=“WELCOME”
y la forma de activarse con wait-open=“true”, y una última parte que tuvimos que mo-
dificar para los colores que elegimos para el proyecto.
Tras realizar la integración del chatbot y enlazarlo correctamente, fue necesario un gran
esfuerzo en pruebas, esta vez no tan técnicas, sino de comprobación de cómo se visualizan
los mensajes, botoneras e iconos, lo que conllevó ciertas mejoras y cambios. Por otro lado,
también destinamos tiempo en mejorar el contenido de los apartados web, pues en un
principio, como hemos mencionado en repetidas ocasiones, no planteamos el redirigir al
usuario a la web, sino mostrar los enlaces en la propia web.
Por último, se prosiguió con diversas pruebas, esta vez pruebas de usuario, a través de las
42
LinguAI: divulgative chatbot on computational linguistics UCM
cuales realizamos ciertas mejoras a partir de la retroalimentación de diversos usuarios, así
como una reunión con los tutores en la que poníamos en común todo lo realizado durante
esta fase y proyectábamos cómo redactar y organizar el presente documento.
✞ ☎
1 < script src = ‘ ‘ https :// www . gstatic . com / dialogflow - console / fast /
messenger / bootstrap . js ?v =1 ’ ’ ></ script >
2 <df - messenger
3 intent = ‘ ‘ WELCOME ’ ’
4 chat - title = ‘ ‘ LinguAI ’’
5 wait - open = ‘ ‘ true ’ ’
6 chat - icon = ‘ ‘ URL_DEL_ICONO ’’
7 agent - id = ‘ ‘ ID_DEL_AGENT ’’
8 language - code = ‘ ‘ es ’’
9 > </ df - messenger >
10 < style >
11 df - messenger {
12 --df - messenger - bot - message : #8 f34eb ;
13 --df - messenger - button - titlebar - color : #34 d9eb ;
14 --df - messenger - chat - background - color : # fafafa ;
15 --df - messenger - font - color : # fff ;
16 --df - messenger - user - message : #1187 ee ; } </ style >
✝ ✆
43
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.13: Flujograma: sprint 1
44
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.14: Flujograma: sprint 2
45
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.15: Flujograma: sprint 3
46
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.16: Flujograma: sprint 4
47
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.17: Flujograma: sprint 5
48
LinguAI: divulgative chatbot on computational linguistics UCM
Figura 5.18: Flujograma: sprint 6
49
Capítulo 6
Conclusiones y líneas de trabajo
futuro
El proyecto de creación de un chatbot divulgativo en el ámbito de la Lingüística Compu-
tacional ha constituido una integración significativa de los conocimientos adquiridos du-
rante el Máster Universitario en Letras Digitales de la UCM [1]. Este chatbot se ha
revelado como un medio eficaz para la divulgación, cumpliendo con su propósito de facili-
tar la comprensión y difusión de la Lingüística Computacional. La interfaz conversacional
permite presentar información compleja de forma accesible a usuarios no expertos, des-
tacando la importancia y las aplicaciones prácticas de la Lingüística Computacional en
el panorama de los avances tecnológicos actuales. La metodología seleccionada, basada
en sprints estructurados, ha posibilitado un desarrollo iterativo y una mejora continua
del chatbot, abordando distintos casos de uso y asegurando su funcionalidad y precisión
mediante pruebas de control de calidad QA.
A lo largo del proyecto, se han enfrentado diversos desafíos que han requerido descartar
o modificar funciones. Entre estos, destaca la limitación en el uso de eventos [45], que
habrían ofrecido mayores posibilidades de interacción, como la activación específica de
intents o la limitación en la frecuencia de respuestas, así como la realización de llamadas
a API, restricciones impuestas por la falta de financiación. Además, la versión ES de
Dialogflow no permitió el formateo de texto en las respuestas ni ofreció una amplia gama
de tipos de respuestas o personalización de botones.
No obstante, el proyecto se considera un éxito, no solo por la demostración de los conoci-
mientos en la memoria del Trabajo de Fin de Máster, sino también por haber desarrollado
una herramienta con utilidad y potencial de futuro. El chatbot es completamente funcio-
nal y se encuentra alojado en una web operativa [36]. La metodología empleada permite
continuar con la iteración y expansión del proyecto sin límites.
En aras de la evolución continua del proyecto, se delinean las siguientes líneas de trabajo
a futuro:
Expansión de funcionalidades: se propone una ampliación progresiva de las
capacidades del chatbot, con el fin de abarcar un espectro más extenso de consultas
y escenarios de uso. Esto implicaría la integración de herramientas adicionales y la
habilitación para la ejecución de operaciones de mayor complejidad en el dominio
de la Lingüística Computacional.
50
LinguAI: divulgative chatbot on computational linguistics UCM
Implementación de IA generativa: posterior al estudio detallado de su viabili-
dad y metodología de implementación, se podría considerar la inclusión de funciona-
lidades que empleen Inteligencia Artificial generativa para proporcionar respuestas
más dinámicas y personalizadas a los usuarios. Por ejemplo, se podría utilizar la
estrategia de RAG para indexar un documento y que respondiese a partir de este.
Validación y retroalimentación continua: se puede enfatizar en el estableci-
miento de un mecanismo de retroalimentación constante, permitiendo la recolección
de datos sobre la interacción de los usuarios con el chatbot. Esto facilitaría la op-
timización de las respuestas y la mejora de la precisión del sistema. Además, se
pueden implementar canales para recibir comentarios directos de los usuarios, lo
cual es esencial para identificar áreas susceptibles de mejora y adaptar el chatbot a
las necesidades emergentes de los usuarios.
Creación de entradas de blog: Elaboración de una serie de artículos especializa-
dos para el blog de la página web. Estos textos estarán destinados a profundizar y
expandir los conocimientos presentados en las páginas, como pueden ser tutoriales
detallados, exposiciones teóricas y descripciones de seminarios prácticos.
Nuevas integraciones: se puede expandir la presencia del chatbot en diversas
plataformas como Telegram, Facebook, Slack, entre otras, para aumentar su acce-
sibilidad y alcance.
Desarrollo de un chatbot de chatbots: explorar la posibilidad de crear un
sistema integrado de chatbots, lo que permitiría la coexistencia de múltiples agentes
especializados dentro de una misma plataforma, incluyendo agentes en otros idiomas
y agentes de voz. Una siguiente evolución muy factible podría ser el desarrollo de
una versión en inglés.
Investigación y desarrollo en PLN: investigación y aplicación de los avances
más recientes en Procesamiento de Lenguaje Natural y Aprendizaje Automático,
con el objetivo de potenciar las capacidades del chatbot. La integración de mo-
delos de lenguaje avanzados y técnicas de aprendizaje profundo promete mejorar
sustancialmente la eficiencia y efectividad del chatbot.
En conclusión, el proyecto del chatbot divulgativo en Lingüística Computacional ha de-
mostrado ser exitoso en términos de implementación y funcionalidad básica. No obstante,
se vislumbran oportunidades significativas para su mejora y expansión, asegurando así su
relevancia y utilidad a largo plazo.
51
Índice de figuras
3.1. Definición de la lingüística computacional según Martí y Castellón . . . . 5
4.1. Esquema de actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2. Ingeniería de requisitos[32, 70] . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3. Avatar de LinguAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4. Captura de los casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.5. Tareas y subtareas de la actividad de desarrollo . . . . . . . . . . . . . . 24
4.6. Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1. Modelo de conocimiento del sprint 1 . . . . . . . . . . . . . . . . . . . . 31
5.2. Respuestas del intent CHI-ThankYou . . . . . . . . . . . . . . . . . . . . 32
5.3. Captura de los intents Welcome y CHI-AnotherThing . . . . . . . . . . . . 33
5.4. Plantilla del conjunto de pruebas del sprint 1 . . . . . . . . . . . . . . . 34
5.5. Modelo de conocimiento del sprint 2 . . . . . . . . . . . . . . . . . . . . 34
5.6. Captura del sprint 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.7. Modelo de conocimiento del sprint 3 . . . . . . . . . . . . . . . . . . . . 36
5.8. Botonera del caso de uso: competencias, etiquetado de corpus . . . . . . 37
5.9. Modelo de conocimiento del sprint 4 . . . . . . . . . . . . . . . . . . . . 38
5.10. Captura de las respuestas del caso de uso: Formación . . . . . . . . . . . 39
5.11. Modelo de conocimiento del sprint 5 . . . . . . . . . . . . . . . . . . . . 39
5.12. Modelo de conocimiento del sprint 6 . . . . . . . . . . . . . . . . . . . . 41
5.13. Flujograma: sprint 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.14. Flujograma: sprint 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.15. Flujograma: sprint 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.16. Flujograma: sprint 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.17. Flujograma: sprint 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.18. Flujograma: sprint 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
52
Índice de cuadros
4.1. Distribución de esfuerzo . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
53
Bibliografía
[1] UCM, “Máster Universitario en Letras Digitales.” [Link]
master-letrasdigitales, 2024.
[2] M. Guerrero Nieto, “Cómo ser un lingüista computacio-
nal.” [Link]
como-ser-un-linguista-computacional-masteres-y-cursos-de-formacion/.
[3] E. Battaner Moro and J. A. López Iniesta, Humanidades digitales e historiografía lin-
güística hispánica: proyectos de presente y retos de futuro. Iberoamericana; Vervuert,
2023.
[4] A. Moreno Sandoval, Lingüística Computacional. Síntesis’, 1999.
[5] R. Grishman, Introducción a la linguística computacional. Visor, 1992.
[6] J. C. Torcera Yllescas, Linguística computacional. Tecnologías del habla’. Quaderns
de Filología. N.º 74., 2019.
[7] M. Meya and W. Huber, Linguística computacional. Teide, 1986.
[8] J. Moure, T. Llisterri, Lenguaje y nuevas tecnologías: el campo de la linguística
computacional. Edicions de la Universitat de Barcelona, 1996.
[9] M. A. Martí Antonín and I. Castellón Masalles, Linguística computacional. Edicions
de la Universitat de Barcelona, 2000.
[10] J. Lyons, Language and Linguistics. An introduction. Cambridge University press,
1981.
[11] Centro Virtual Cervantes (CVV), “Lingüística aplicada.” [Link]
es/ensenanza/biblioteca_ele/diccio_ele/diccionario/[Link],
2024.
[12] N. Chomsky, Estructuras sintácticas. Siglo XXI, 1957.
[13] T. Winograd, “Understanding natural language,” Cognitive Psychology, vol. 3, pp. 1–
191, 1972.
[14] M. Belinchón, Ángel Rivière, and J. M. Igoa, Psicología del lenguaje. Investigación
y teoría. Trotta, 1992.
[15] Asociación Ibérica de Estudios de Traducción e Interpretación (AIETI), “Lingüís-
tica computacional.” [Link]
[Link]#top, 2024.
54
LinguAI: divulgative chatbot on computational linguistics UCM
[16] DataCamp, “¿Qué es la tokenización?.” [Link]
what-is-tokenization, 2024.
[17] S. Petrov, D. Das, and R. McDonald, “A Universal Part-of-Speech Tagset,” European
Language Resources Association (ELRA), p. 2089–2096, 2012.
[18] Wikipedia, “Gramática libre de contexto.” [Link]
C3%A1tica_libre_de_contexto, 2024.
[19] U. Rehman, “What is dependency grammar in NLP?.” [Link]
answers/what-is-dependency-grammar-in-nlp, 2024.
[20] J. H. Jurafsky, D. Martin, “Speech and Language Processing.” [Link]
[Link]/~jurafsky/slp3/, 2024.
[21] T. Mikolov, I. Sutskever, K. Chen, G. S. Corrado, and J. Dean, “Distributed Repre-
sentations of Words and Phrases and their Compositionality,” Advances in Neural
Information Processing Systems 26, 2013.
[22] H. Bhaur, “What is semantic role labeling (SRL)?.” [Link]
answers/what-is-semantic-role-labeling-srl, 2024.
[23] M. Straka and J. Straková, “Tokenizing, POS Tagging, Lemmatizing and Parsing UD
2.0 with UDPipe,” Proceedings of the CoNLL 2017 Shared Task, pp. 88–99, 2017.
[24] L. Abzianidze, J. Bjerva, K. Evang, H. Haagsma, R. van Noord, P. Ludmann, and
D.-D. N. J. Bos, “The Parallel Meaning Bank: Towards a Multilingual Corpus of
Translations Annotated with Compositional Meaning Representations,” European
Chapter of the Association for Computational Linguistics, pp. 242–247, 2017.
[25] J. M. Gómez-Pérez, R. Denaux, and A. García-Silva, A Practical Guide to Hybrid
Natural Language Processing: Combining Neural Models and Knowledge Graphs for
NLP. Springer, 2021.
[26] Instituto de Ingeniería de Conocimiento (IIC) de la Universidad Autónoma de
Madrid (UAM), “Machine Learning & Deep Learning.” [Link]
inteligencia-artificial/machine-learning-deep-learning/, 2024.
[27] A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser,
and I. Polosukhin, “Attention Is All You Need,” Advances in Neural Information
Processing Systems 30, 2017.
[28] Instituto de Ingeniería de Conocimiento (IIC) de la Universidad Autónoma de Ma-
drid (UAM), “Transformers en Procesamiento del Lenguaje Natural.” [Link]
[Link]/innovacion/transformers-en-procesamiento-del-lenguaje-natural/,
2024.
[29] E. Adamopoulou and L. Moussiades, “Chatbots: History, technology, and applica-
tions,” Machine Learning with Applications, vol. 2, 2020.
[30] A. Freed, Converstional AI. Manning, 2021.
[31] Microsoft, “Copilot.” [Link] 2024.
[32] I. Sommerville, Ingeniería del Software. 7ª edición. Addison-Wesley, 2005.
55
LinguAI: divulgative chatbot on computational linguistics UCM
[33] R. S. Pressman, Ingeniería del Software. Un enfoque práctico. 6ª edición. McGraw-
Hill, 2005.
[34] A. Gázquet, “Cómo configurar la personalidad de un chatbot divulgativo de lin-
güística computacional: estrategias y consideraciones.” [Link]
120879012/C%C3%B3mo_configurar_la_personalidad_de_un_chatbot_divulgativo_
de_ling%C3%BC%C3%ADstica_computacional_estrategias_y_consideraciones/, 2024.
[35] GoogleCloud, “Integraciones.” [Link]
integrations?hl=es-419.
[36] A. Gázquet, “LinguAI.” [Link] 2024.
[37] GoogleCloud, “Documentación Dialogflow.” [Link]
docs, 2024.
[38] Miro, “Product-overview.” [Link] 2024.
[39] Wordpress, “Inicio.” [Link] 2024.
[40] Microsoft, “Microsoft Excel.” [Link]
excel, 2024.
[41] Overleaf, “Features Overview.” [Link]
features-overview, 2024.
[42] GoogleCloud, “Contextos.” [Link]
contexts-overview?hl=es-419.
[43] B. Boehm, Sofware Risk Management: Principles and Practices. IEEE Software,
1991.
[44] GoogleCloud, “Dialogflow Messenger.” [Link]
docs/integrations/dialogflow-messenger?hl=es-419#suggestion_chip_response_
type, 2024.
[45] GoogleCloud, “Eventos personalizados.” [Link]
docs/events-custom?hl=es-419, 2024.
[46] S. Queralt Estévez, Lingüistas de Hoy. Síntesis Editorial, 2023.
56
Glosario
Chit-chat Interacciones que tienen los chatbots para pro- 31
veer una mayor humanidad. Estas interaccio-
nes pueden ser muchas, como responder agra-
decimientos, a insultos, despedirse...
Fallback Intent que se detona cuando no se activa el 31
esperado.
Intent Clasifica la intención del usuario final en un 13
turno de conversación
Modelo de conocimiento Documento donde se registra la construcción 22
de un chatbot.
Plugin Pequeños programas complementarios que 42
amplían las funciones de aplicaciones web y
programas de escritorio
Script Conjunto de instrucciones de programación 26
que se ejecutan dentro de un entorno específi-
co
Sprint Período breve de tiempo fijo en el que un equi- 18
po de scrum trabaja para completar una can-
tidad de trabajo establecida.
Test de regresión Set de validación final que incluye el 30 % de 26
las frases de entrenamiento no usadas
Utterances Enunciados que detonan los intents, ya sean 25
para el entrenamiento, ya sean frases de usua-
rios.
57
Siglas
AP I Application Programming Interface 13
CASE Computer Aided Software Engineering 21
CRM Customer Relationship Management 15
DF Dialogflow 25
DL Deep Learning 9
IA Inteligencia Artificial 1
IS Ingeniería del Software 1
LC Lingüística computacional 1
ML Machine Learning 8
Q&A Questions and Answers 34
QA Quality Assurance 50
RAG Retrieval Augmented Generation 51
RSGR Reducción, supervisión y gestión de riesgos 28
TFM Trabajo de Fin de Máster 1
U CM Universidad Complutense de Madrid 1
UD Universal Dependencies 7
58
Hay que sentir el pensamiento y pensar el
sentimiento
Miguel de Unamuno
Adrián Gázquet Bustos
Julio de 2024
Ult. actualización 15 de julio de 2024
LATEX lic. LPPL & powered by TEFLON CC-ZERO
Esta obra está bajo una licencia Creative Commons “CC0 1.0
Universal”.