Está en la página 1de 23

Universidad San Sebastián

Facultad de Ingeniería y Tecnología

Tópicos avanzados de inteligencia
artificial
ICIF 1035

Proyecto: Programación en
Python y uso de librerías para
el procesamiento de lenguaje
natural
Autor:
Felipe Flores

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versión: 1

Fecha:
21/04/2015

Página 1 /
20

Universidad San Sebastián
Facultad de Ingeniería y Tecnología

Tópicos avanzados de inteligencia
artificial
ICIF 1035

Contenidos
1. Descripción del problema..........................................................Página 3
2. Alternativas
de
solución………………………………………….………..……
Página 4
3. Solución…………………………………………………………………………………
Página 5
4. Implementación…………………………………………………………….
……...Página 6 - 18
5. Conclusiones……………………………………………………………………….…
Página 19
6. Bibliografía…………………………………………………………………………....Pág
ina 20

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versión: 1

Fecha:
21/04/2015

Página 2 /
20

se pide que a partir de los datos obtenidos se realice un gráfico representativo de la frecuencia de todas las palabras. Luego de esto.Descripción del problema En el presente informe para el curso de tópicos avanzados de inteligencia artificial.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 1. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 3 / 20 . se pide hacer uso de del lenguaje de programación Python para determinar la cantidad de palabras que se repiten dentro de un “asunto” de varios correos electrónicos.

Para graficar. se puede hacer uso de Matlab o Octave. entre otros métodos.La segunda alternativa que se propone es de hacer uso de las librerías nltk de Python que hace uso del procesamiento de lenguaje natural.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 2.Crear e implementar algoritmos para trabajar con cadena de caracteres. Se necesita implementar métodos que trabajen con las cadenas de caracteres. que sea capaz de distinguir mayúsculas y minúsculas. el cual permite trabajar con cadena de caracteres. 2. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 4 / 20 . que cuenten la cantidad de palabras. se presentan 2 alternativas de solución para abordar la problemática: 1. Python cuenta con otras librerías que permiten hacer gráficos en base a los datos que se dispongan. que sea capaz de contar la cantidad de letras de cada palabra. Para graficar.Alternativas de solución A continuación. .

Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 3. entre otras cosas. Para graficar la frecuencia de palabras que se obtenga no es necesario un programa externo como matlab u octave. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 5 / 20 . como por ejemplo: analizar expresiones regulares. ya que Python cuenta con librerías como la matplotlib que permite generar gráficos a partir de datos contenidos en listas o arrays.Solución Para la solución de este problema se hará uso de las diferentes librerías que ofrece Python. Se utilizara las librerías de procesamiento de lenguaje natural y librerías para graficar. ya que hacer los algoritmos tomaría mucho tiempo. hace uso de modelos estadísticos. ¿Por qué utilizar nltk? nltk es una librería que permite realizar un sinnúmero de funciones relacionadas con el manejo del lenguaje. funciona como clasificador de palabras.

Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 6 / 20 . se procede a instalar el software. se descarga Python desde la página oficial: Web: https://www. para ello se debe hacer doble clic en el paquete de instalación lo que abrirá la siguiente ventana.Implementación Como primer paso.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 4.org/getit/ Una vez descargado.python.

Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 7 / 20 . el programa pregunta si la persona desea instalar los complementos como se ve a continuación. Una vez seleccionada la ruta.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 El software pide seleccionar la ruta de instalación. Es recomendable no cambiar la ruta ya que luego se instalaran las diferentes librerías y módulos necesarios para el correcto funcionamiento de Python.

Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Una vez seleccionado los complementos el software comenzara la instalación Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 8 / 20 .

Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 El software tardara 1 o 2 minutos en instalarse dependiendo del computador. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 9 / 20 .

Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Una vez instalado el programa es necesario modificar las variables de entorno de Windows. Para ello. En esta nueva ventana se debe hacer clic en la opción que dice “variables de entorno”. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 10 / 20 . hay que escribir en el inicio de Windows: “Editar las variables de entorno del sistema”.

exe. Esto permitirá instalar las librerías faltantes que no se instalan mediante un archivo con extensión . Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 11 / 20 . Se debe modificar la variable PATH con la ruta de Python27.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 En esta nueva ventana aparecerá un recuadro con las variables de sistema. sino que se instalan mediante la consola de comandos.

se inicia la interfaz gráfica.org/ Las cuales se instalan de la misma forma en la que se instaló Python. se requieren instalar las siguientes librerías: -nltk. Web: http://www.nltk. la cual se ve de la siguiente manera: Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 12 / 20 .org/ -matplotlib . Una vez instalado Python junto con todas las librerías necesarias para su correcto funcionamiento.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Una vez modificadas las variables de entorno y haber instalado el software. Web: http://matplotlib. mediante un menú de instalación.

Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 El primer paso. para implementar la solución a la problemática planteada en un comienzo. es crear un fichero que contenga 100 frases que emularan los asuntos de un correo electrónico. para ello se abrirá un bloc de notas y se escribirán los 100 asuntos diferentes como se ve a continuación: Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 13 / 20 .

Universidad San Sebastián Facultad de Ingeniería y Tecnología Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Tópicos avanzados de inteligencia artificial ICIF 1035 Versión: 1 Fecha: 21/04/2015 Página 14 / 20 .

txt. en la siguiente ruta del computador: C:\Users\Felipe\AppData\Roaming\nltk_data\corpora\gutenberg En la carpeta Gutenberg. se debe importar la librería nltk para su posterior uso. se encuentran la mayoría de los libros con los que viene Python para hacer pruebas con la librería nltk. La siguiente línea de código hace lo descrito. este será guardado bajo el nombre de Asuntos. Import nltk: Importa la librería de procesamiento de lenguaje natural.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Una vez creado el archivo. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 15 / 20 . Una vez guardado el archivo en la ruta descrita.

para ello se utilizara la siguiente línea de código: texto = nltk.words ('Asuntos. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 16 / 20 .corpus.gutenberg.gutenberg. nltk.corpus. mediante la palabra words. Lo siguiente que se debe hacer es almacenar las palabras del archivo de texto en una variable.fileids (): Este línea describe la ruta de la carpeta donde está la librería nltk y despliega por pantalla el nombre de todos los ficheros que se encuentran allí.txt'): En la variable texto se almacenan todas las palabras que contiene el archivo Asuntos.txt.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Se utilizara la siguiente línea de código para confirmar de manera gráfica que el archivo se guardó correctamente en la carpeta gutenberg.

FreqDist (texto) : La frecuencia de distribución se guardara en la variable fd. se puede hacer uso de una distribución de frecuencias e ir tomando nota las veces que cada palabra aparece en el texto. fd = nltk. la cual es tomada de la variable que se creó anteriormente. NLTK ofrece soporte integrado para esta tarea.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Para contar las diferentes palabras de un texto. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 17 / 20 . La siguiente línea de código permite crear una variable de frecuencia de distribución utilizando la extensión de FreqDist. llamada texto.

La función que nos interesa es la que permita contar la cantidad de palabras (frecuencia) que hay en los diferentes asuntos.most_common ( ): La función most_common muestra la cantidad de veces que se repite una palabra en un archivo de texto o una lista. La siguiente línea de código hace lo descrito. llamada “fd” permitirá hacer diferentes operaciones con las palabras.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 La nueva variable creada. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 18 / 20 . fd.

la palabra “oferta” aparece 14 veces. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 19 / 20 . la palabra “para” que también aparece 14 veces y así sucesivamente.txt y su frecuencia. la cual aparece 33 veces en el texto.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Lo que se ve a continuación son las palabras que contiene el archivo Asunto. Por ejemplo en la primera línea se ve que la palabra “de”.

plot(): Permite hacer gráficos de frecuencia según la cantidad de palabras que se tengan en un texto. La siguiente línea de código hace lo descrito: fd. junto con la variable “fd” que contiene la frecuencia de las palabras a graficar. En el eje y se encuentran la cantidad de veces que se repitió una palabra y en el eje x la cantidad de palabras que hay.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Para graficar esto. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 20 / 20 . se utiliza el método plot.

Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 21 / 20 .Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 Para tener una mejor visualización de lo descrito.plot (10) permite hacer lo descrito. se mostrara solo las 10 primeras palabras con la mayor frecuencia. La línea de código fd.

que para este caso fueron métodos de la librería nltk para analizar textos. Nltk es una herramienta muy poderosa para el procesamiento de lenguaje natural.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 5. librerías. Para la personalización de los programas creados con Python. ya que se pudo obtener la frecuencia de cada palabra y el grafico representativo de ello.Conclusiones Los objetivos planteados al principio fueron logrados satisfactoriamente. En esta librería existen muchos métodos para trabajar con textos y libros los cuales pueden ser analizados en cosa de minutos. solo implementar los nuevos métodos. el programa solicitado no necesitó de más funciones y acciones específicas. así como todas las capacidades de personalización contenidas en los lenguajes de programación incrustados en estos. clases. es altamente recomendable leer la documentación contenida en los software. instrucciones y maneras de realizar una acción. métodos. A diferencia de los proyectos anteriores. etc. puesto que esta permite conocer todas las funcionalidades. módulos. Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 22 / 20 .

python.org/ Web: http://www.Bibliografía Web: https://www.Universidad San Sebastián Facultad de Ingeniería y Tecnología Tópicos avanzados de inteligencia artificial ICIF 1035 6. Ewan Klein y Edward Loper Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 23 / 20 .nltk.org/ Libro: “Python para todos” de Raúl González Duque Libro: “El tutorial de Python” de Guido van Rossum Libro: “Natural language processing with Python” de Steven Bird.