Está en la página 1de 10

METODOLOGIA

Hable de lo que son los chat bots, no se


Luego si comience con las librerías

Librerías

CHATBOT DE TEXTO A TEXTO

Se creo una variable respuesta donde vamos a traer la información o de una página de Wikipedia
que habla de League of legends

En la línea 30 se crea una variable llamada html la cual va a guardar la información obtenida de la
variable respuesta.
En la línea 33 se utiliza la función BeautifulSoup que es para analizar código HTML de una página.
El cual el primer atributo ‘html’ que es la variable mencionada en la línea 30 y el segundo especfica
el analizador que se va a utilizar para analizar el contenido HTML, ósea html5lib.

La línea 37 extrae solo el texto de la pagina web que ha sido analizada en la línea 33.

La línea 40 se utiliza para dividir el texto extraído en palabras o tokens y se indica que se trata de
un texto en español.

La línea 43 limpia de los token todo signo de puntuación

La línea 49 crea un objeto de clase FreqDist el cual se utilizo para calcular la frecuencia de
aparición de cada token en la lista de token antes creada.

En el ciclo FOR de la línea 50 imprime la cada palabra y su frecuencia en el corpus antes


establecido.

En la línea 54 se genero un grafico de 30 palabras o token que son las más frecuentes en el corpus

En la línea 59 se crea una copia de la lista de tokens

En el for de la línea 61 se elimina las palabras vacías que están en la variable Tokens_limpios, esto
se verifica en el IF de la línea 62 con el stopwords.words si esta se va a remover en la línea 63.

En la línea 69 se hizo una lista de sinónimos el cual son utilizados en un mismo contexto que se
refieren a lo mismo, en este caso se digitaron tres.
En la línea 72 se crea otra copia de la lista de tokens

En el FOR de la línea 73 se hace una iteración sobre cada sinónimo y se reemplaza en la lista, esta
claramente que la palabra coincida con le termino común que es league of legends.

En la línea 77 se recalcula la frecuencia de cada palabra con los sinónimos agregados

En el FOR de la línea 81 se imprime estos valores

La línea de código 85 se utiliza para reducir las palabras de los token limpios a su raíz léxica.

En la línea de código 87 se comienza a realizar la lematización de los datos de la variable


Sin_tokens_limpios lo que puede ayudar a simplificar los datos y reducir el ruido en el análisis de
texto. El cual en este aso se esta realizando en la lematización en español y en la línea 89 se
imprimen en consola.

En la línea 93 se carga el modelo pre-entrenado de procesamiento de lenguaje natural. En la línea


95 se crea una lista vacia para añadir la lematización que se va a generar después. Se creo en la
línea 97 una variable con un espacio definido para separas las palabras que se van a lematizar. En la
línea 99 se toma los token de Sin_tokens_limpios que están limpios esto los une en una sola
cadena de texto utilizando la variable separador que fue definida en la línea anterior. En la línea
100 se guarda en la variable cadena2 como un documento que contiene el texto procesado de lo
que se hizo en la línea 99.

En el for de la línea 102 recorre cada uno de los textos, para que en la línea 103 imprima el token,
lema y la posición de cada uno y en la línea 104 se añade a la lista que se creó anteriormente.

En la línea 107 se vuelve a hacer la frecuencia y en la 110 se muestra en base a 30 tokens de las
más repetidas en el corpus.

En la función de la línea 112 recibe la lista de tokens que contienen etiquetas HTML y las elimina
devolviendo una nueva lista limpia de etiquetas HTML

En la línea 125 toma la lista de tokens que se limpio anteriormente y la guarda en la lista
cleaned_tokens y en la línea 126 los imprime en consola

La línea 133 se utiliza para dividir el corpus en una lista de oraciones y en la línea 134 convierte el
corpus en una lista de palabras, ya en la línea 135 se crea la instancia para comenzar a lematizar

En la línea 137 se crea una función que toma como entrada los tokens y como salida da los mismos
tokens, pero lematizados.
La función que se creó en la línea 142 se encarga de aplicar la función LemTokens a una lista de
tokens que se crea a partir del texto de entrada, el resultado da una lista de palabras lematizadas y
normalizadas que puede ser utilizada para analizar el texto.

La función que se creo a partir de la línea de código 149 es la principal del chatbot debido a que
devuelve la respuesta al usuario. En la línea 151 el mensaje del usuario se agrega al final de la lista
de sentencias del corpus. Para después utilizar la clase TfidfVectorizer en la línea 152 para
transformas los tokens de la lista de sentencia de la línea 151, también se utilizo la función
LemNormalize para lematizar. Después se calcula la similitud del coseno entre el vector
correspondiente al mensaje del usuario que este se encuentra en la línea 153, que como tal se
obtiene el índice del vector. Esta se compara con el segundo índice que es el del corpus y se
almacena en la línea de código 158 y luego se agrega el texto en la sentencia correspondiente de la
variable idx a la respuesta del chat bot, si esta sentencia no se encuentra o no hay una similitud el
chat bot va a ejecutar la sentencia del if de la línea 163, pero si encuentra similitud va a ejecutar la
de la línea 167.

A partir de la línea de código 173 se crearon unas listas de las cuales son para saludos, despedidas
de entrada y las de salida
En la línea 178 se hace una bandera la cual va a iniciar que el chat bot nos pueda responder,
después en la línea 179 se hace como una presentación de este para después entrar en un WHILE
en la línea 180 la cual captura el dato del usuario en la línea 181 y en la 182 lo convierte a
minúsculas para después en la línea 184 pasar a unos IF los cuales dependiendo de la pregunta o
texto digitado del usuario nos saluda, despide o nos da una respuesta al texto que se le ingreso

VOZ a texto
En el chat bot de voz a texto se utilizo lo mismo del chat bot de texto a texto lo único que cambio
fue la parte de while y se agregaron otras líneas de código, este chat voz se hizo de dos formas, con
reconocimiento de voz y en base a un sonido pre-grabado

Se inicializo el reconocimiento de voz con la variable r

FORMA DE SONIDO PRE-GRABADO

Se creo una Variable donde alberga la dirección en la que se encuentra el audio pre-grabado
Este while tiene lo mismo que el de texto a texto solo cambia algunas cosas, se le añadió en la
línea 203 unas líneas de código las cuales hacen que se reproduzca el audio, la línea 205 hace que
el audio como tal calibre su ruido y se pueda oír mejor las palabras y la línea 206 lo reproduce para
después dentro del try en la línea 209 reconocer el texto reproducido en el audio con el Google
Speech Recognition luego el user_response lo hacen igual a text que es donde esta el texto del
audio y después se ejecuta el bloque de los IF en la línea 212.

FORMA DE RECONOCIMIENTO DE VOZ

Es el mismo while que el de un sonido pre-grabado solo que inicializamos el reconomiento del
micrófono en la linea 245 y dentro el while en la línea 247 ajustamos el sonido de ambiente o
ruido y en la línea 250 capturamos ese sonido para después guardarlo en el try en la variable texto.
SINTESIS DE VOZ

Para hacer que el chat bot te responda con voz se tiene que inicializar el motor o el medio por el
cual va a hablar, eso se hace en la línea 180 despues se hace una validación en la línea 181 de un IF
que si la variable engine esta en loop o ejecución deténgala para seguir con la siguiente y que no
haya ningún error.

Luego en la línea 185 se hace una propiedad la cual es la velocidad que el chat bot a hablar y en la
línea 187 se define la voz y el idioma que es español

Como tal en la línea 189 se crea una función que va a capturar la respuesta del bot y la va a
reproducir

En esta el while donde el chat bot da las respuestas cambia


Como se ve estamos usando el while con reconocimiento de voz el cual tiene unas líneas de código
que se llaman habla que son las líneas 260, 264 y 272 las cuales son la función que creamos
anteriormente y captura la respuesta del chat bot para después reproducirlas mediante voz o
sonido

CHAT GPT

Primero se importa la librería de chat gpt que es openai y la random forest para la cuestión de los
saludos y despedidas

Después se tiene que autenticar el api con una key la cual es única para cada usuario que quiera
trabajar con la IA o tener un programa basado en ella

Se define el modelo el cual es los recursos que vamos a usar de la API, el model_engine es el tipo
de motor que se va a utilizar en este caso es el text-davinci-002 que es uno de los más precisos en
cuanto a lenguaje natural, el model_prompt es la entrada del usuario, max_tokens es la cantidad
de tokens que tenemos permitido utilizar de la API y temperature es la cantidad de precisión que
quiere que tenga la respuesta, si es 0.5 es que la respuesta puede fallar en ciertos aspectos pero va
por la línea que le puedas preguntar.

Se creo el arreglo de los saludos y despedidas


Se creo la función donde CHAT GPT va a generar la respuesta en base a los atributos del modelo y
la pregunta o prompt que le enviamos

Después se creo el bucle donde se va a dar la respuesta al usuario en base a los tokens que nos
deja utilizar chat gpt

RESULTADOS

Cada una de las formas en las que se desarrollo el chat bot se puede ver o imaginar las
posibilidades y alcances que se puede tener con solo poder tener un fragmento de información de
X pagina las diferentes formas en las que se puede dar una respuesta.

En la de texto a texto el chat bot respondia al instante debido a que lo que captaba era de un solo
escrito y su respuesta era de manera instantánea, ya en la parte de sonido y voz el chat voz se
demoraba un poco más debido a que tenia que capturar el audio y luego procesarlo a texto pero la
diferencia no es mucha solo milésimas, ya por otro lado chat gpt tiene una amplia base de datos o
tokens los cuales lo hacen desempeñar en diferentes temas lo que lo hace bastante importante
ahora que se esta hablando del Boom de las IA´s.

También podría gustarte