Memoria Caso Práctico PLN
Memoria Caso Práctico PLN
Memoria Caso Práctico PLN
Integrantes:
Roberto Rojas
Danilo Vera
DESARROLLO
El desarrollo del Caso Práctico consistente en el desarrollo de una propuesta para un
chatbot que permita identificar una solicitud de viajes y extraer los elementos de una
cadena de un texto o voz para que sea almacenado en un archivo .json con la finalidad
de almacenar de forma adecuada en un repositorio o base de datos.
A continuación, se resumen los elementos del caso práctico estructurados en los tres
puntos que sostiene el enunciado: (1) Parte básica, (2) Parte intermedia y (3) Parte
avanzada.
1. Parte Básica
Generar una tabla o JSON que contenga la siguiente información de cada mensaje:
Para el mensaje: “Comprar tres billetes para el 15 de octubre con Iberia de Madrid a
Bilbao”. Se debe obtener:
{'origen': 'Madrid',
'destino': 'Bilbao',
'fecha': '15 de octubre',
'cantidad': 3,
'aerolinea': 'Iberia'}
{'origen': 'Berlín',
'destino': 'Madrid',
'fecha': None,
'cantidad': 1,
'aerolinea': 'Lufthansa'}
1.1. Componente 1
Se trabajará con la librería NLTK, con el tokenizador incluido en la librería y los 4 taggers
vistos en los contenidos del módulo. También es necesario contar con el RegEx Parser
de NLTK. Por último, como complementos no obligatorios pero que utilizaremos para dar
formato o hacer más sencillo el trabajo
Se carga el corpus al cual se le incluyen frases adicionales que se consideran necesarias
para un correcto entrenamiento de los taggers para lo cual es necesario generar los
conjuntos de Train y Test
Teniendo los conjuntos ya creados, se procede a entrenar los taggers. Para entrenar se
hará uso de HiddenMarkovModelTagger mediante la función .train(). Esto con la
finalidad de ganar precisión en el entrenamiento. Este proceso brinda un resultado de:
Una definidas la estructura que nos ayudará a identificar el contenido de una frase por
medio de expresiones regulares definimos una función para reutilizar el proceso las veces
que sean necesarias.
Esto permite identificar los elementos necesarios para generar el proceso de reserva:
1.2. Componente 2
El proceso comienza convirtiendo cada frase del corpus en una lista de tokens utilizando
word_tokenize, configurada para el idioma español. Luego, se realiza un filtrado para
conservar solo palabras y números, excluyendo otros caracteres. Esto se logra mediante
una comprensión de lista que verifica si cada token es alfabético o numérico.
Este enfoque de tokenización y filtrado es vital para simplificar el análisis del lenguaje y
facilitar el procesamiento de los datos. Al enfocarse en palabras y números relevantes,
se elimina el ruido y se preparan los datos para etapas posteriores de análisis, como la
generación de modelos de lenguaje o la clasificación de texto. Este proceso refleja un
compromiso con la precisión y la eficiencia en el tratamiento de datos lingüísticos, un
aspecto crucial en el campo de la inteligencia artificial y el procesamiento del lenguaje
natural.
El avance en el proyecto incluye ahora la integración de un proceso de limpieza de los
tokens utilizando la biblioteca nltk. Este paso es crucial para eliminar las palabras que no
aportan significado relevante al análisis, conocidas como 'stopwords'. Se ha obtenido
una lista de estas palabras en español, de la cual se han excluido intencionalmente
ciertas preposiciones como 'a', 'de', 'desde' y 'hasta' debido a su posible relevancia en
el contexto de reservaciones de viajes.
Este paso de limpieza es fundamental para afinar el análisis de los datos y preparar el
corpus para aplicaciones más avanzadas, como el entrenamiento de modelos de
clasificación o análisis de sentimiento. Refleja un enfoque detallado y cuidadoso en el
procesamiento de lenguaje natural, asegurando que los datos sean lo más relevantes y
útiles posible para las aplicaciones de inteligencia artificial.
3. PARTE AVANZADA
Este código avanza en el proyecto al integrar la funcionalidad de traducción y consulta
a una API para obtener códigos de aeropuertos IATA. Utiliza la biblioteca googletrans
para traducir los nombres de las ciudades al inglés y luego consulta la API de Air-Port-
Codes para obtener los códigos IATA correspondientes.
El proceso comienza con la función traducir_ciudad_a_ingles, que traduce el nombre
de una ciudad del español al inglés. Luego, obtener_codigo_iata utiliza esta traducción
para hacer una solicitud a la API y obtener el código IATA.
EJEMPLOS
Se define entonces una función que permita realizar las veces que se desee la
extracción de los códigos IATA:
EJEMPLOS
Los ejemplos finales integran la posibilidad de generar una solicitud tanto con ingreso
de texto o con ingreso de voz utilizando las funciones elaboradas. Finalmente,
guardamos los resultados obtenidos en un archivo .json de acuerdo a los requerimientos
iniciales: