Anda di halaman 1dari 23

Universidad San Sebastin

Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Proyecto: Programacin en
Python y uso de libreras para
el procesamiento de lenguaje
natural
Autor:
Felipe Flores

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 1 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Contenidos
1. Descripcin del problema..........................................................Pgina 3
2. Alternativas
de
solucin...
Pgina 4
3. Solucin
Pgina 5
4. Implementacin.
...Pgina 6 - 18
5. Conclusiones.
Pgina 19
6. Bibliografa....Pg
ina 20

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 2 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

1- Descripcin del problema


En el presente informe para el
curso de tpicos avanzados de
inteligencia artificial, se pide hacer uso de del lenguaje de programacin
Python para determinar la cantidad de palabras que se repiten dentro de
un asunto de varios correos electrnicos. Luego de esto, se pide que a
partir de los datos obtenidos se realice un grfico representativo de la
frecuencia de todas las palabras.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 3 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

2- Alternativas de solucin
A continuacin, se presentan 2 alternativas de solucin para abordar la
problemtica:
1- Crear e implementar algoritmos para trabajar con cadena de
caracteres. Se necesita implementar mtodos que trabajen con las
cadenas de caracteres, que cuenten la cantidad de palabras, que
sea capaz de distinguir maysculas y minsculas, que sea capaz
de contar la cantidad de letras de cada palabra, entre otros
mtodos. Para graficar, se puede hacer uso de Matlab o Octave.
2- La segunda alternativa que se propone es de hacer uso de las
libreras nltk de Python que hace uso del procesamiento de
lenguaje natural, el cual permite trabajar con cadena de
caracteres. Para graficar, Python cuenta con otras libreras que
permiten hacer grficos en base a los datos que se dispongan.
.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 4 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

3- Solucin
Para la solucin de este problema se har uso de las diferentes libreras
que ofrece Python, ya que hacer los algoritmos tomara mucho tiempo.
Se utilizara las libreras de procesamiento de lenguaje natural y libreras
para graficar.
Por qu utilizar nltk? nltk es una librera que permite realizar un
sinnmero de funciones relacionadas con el manejo del lenguaje, como
por ejemplo: analizar expresiones regulares, funciona como clasificador
de palabras, hace uso de modelos estadsticos, entre otras cosas.
Para graficar la frecuencia de palabras que se obtenga no es necesario
un programa externo como matlab u octave, ya que Python cuenta con
libreras como la matplotlib que permite generar grficos a partir de
datos contenidos en listas o arrays.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 5 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

4- Implementacin
Como primer paso, se descarga Python desde la pgina oficial:
Web: https://www.python.org/getit/
Una vez descargado, se procede a instalar el software, para ello se debe
hacer doble clic en el paquete de instalacin lo que abrir la siguiente
ventana.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 6 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

El software pide seleccionar la ruta de instalacin. Es recomendable no cambiar


la ruta ya que luego se instalaran las diferentes libreras y mdulos necesarios
para el correcto funcionamiento de Python. Una vez seleccionada la ruta, el
programa pregunta si la persona desea instalar los complementos como se ve
a continuacin.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 7 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Una vez seleccionado los complementos el software comenzara la instalacin

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 8 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos 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

Versin: 1

Fecha:
21/04/2015

Pgina 9 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Una vez instalado el programa es necesario modificar las variables de entorno


de Windows. Para ello, hay que escribir en el inicio de Windows: Editar las
variables de entorno del sistema.
En esta nueva ventana se debe hacer clic en la opcin que dice variables de
entorno.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 10 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

En esta nueva ventana aparecer un recuadro con las variables de sistema.

Se debe modificar la variable PATH con la ruta de Python27. Esto permitir


instalar las libreras faltantes que no se instalan mediante un archivo con
extensin .exe, sino que se instalan mediante la consola de comandos.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 11 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Una vez modificadas las variables de entorno y haber instalado el software, se


requieren instalar las siguientes libreras:
-nltk, Web: http://www.nltk.org/
-matplotlib , Web: http://matplotlib.org/
Las cuales se instalan de la misma forma en la que se instal Python, mediante
un men de instalacin.
Una vez instalado Python junto con todas las libreras necesarias para su
correcto funcionamiento, se inicia la interfaz grfica, la cual se ve de la
siguiente manera:

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 12 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

El primer paso, para implementar la solucin a la problemtica planteada en un


comienzo, es crear un fichero que contenga 100 frases que emularan los
asuntos de un correo electrnico, para ello se abrir un bloc de notas y se
escribirn los 100 asuntos diferentes como se ve a continuacin:

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 13 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Versin: 1

Fecha:
21/04/2015

Pgina 14 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Una vez creado el archivo, este ser guardado bajo el nombre de Asuntos.txt,
en la siguiente ruta del computador:
C:\Users\Felipe\AppData\Roaming\nltk_data\corpora\gutenberg
En la carpeta Gutenberg, se encuentran la mayora de los libros con los que
viene Python para hacer pruebas con la librera nltk.
Una vez guardado el archivo en la ruta descrita, se debe importar la librera
nltk para su posterior uso. La siguiente lnea de cdigo hace lo descrito.
Import nltk: Importa la librera de procesamiento de lenguaje natural.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 15 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Se utilizara la siguiente lnea de cdigo para confirmar de manera grfica que


el archivo se guard correctamente en la carpeta gutenberg.
nltk.corpus.gutenberg.fileids (): Este lnea describe la ruta de la carpeta
donde est la librera nltk y despliega por pantalla el nombre de todos los
ficheros que se encuentran all.

Lo siguiente que se debe hacer es almacenar las palabras del archivo de texto
en una variable, para ello se utilizara la siguiente lnea de cdigo:
texto = nltk.corpus.gutenberg.words ('Asuntos.txt'): En la variable texto
se almacenan todas las palabras que contiene el archivo Asuntos.txt, mediante
la palabra words.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 16 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Para contar las diferentes palabras de un texto, se puede hacer uso de una
distribucin de frecuencias e ir tomando nota las veces que cada palabra
aparece en el texto. NLTK ofrece soporte integrado para esta tarea. La
siguiente lnea de cdigo permite crear una variable de frecuencia de
distribucin utilizando la extensin de FreqDist.
fd = nltk.FreqDist (texto) : La frecuencia de distribucin se guardara en la
variable fd, la cual es tomada de la variable que se cre anteriormente,
llamada texto.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 17 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

La nueva variable creada, llamada fd permitir hacer diferentes operaciones


con las palabras. La funcin que nos interesa es la que permita contar la
cantidad de palabras (frecuencia) que hay en los diferentes asuntos. La
siguiente lnea de cdigo hace lo descrito.
fd.most_common ( ): La funcin most_common muestra la cantidad de
veces que se repite una palabra en un archivo de texto o una lista.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 18 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Lo que se ve a continuacin son las palabras que contiene el archivo Asunto.txt


y su frecuencia. Por ejemplo en la primera lnea se ve que la palabra de, la
cual aparece 33 veces en el texto, la palabra oferta aparece 14 veces, la
palabra para que tambin aparece 14 veces y as sucesivamente.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 19 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Para graficar esto, se utiliza el mtodo plot, junto con la variable fd que
contiene la frecuencia de las palabras a graficar. La siguiente lnea de cdigo
hace lo descrito:
fd.plot(): Permite hacer grficos de frecuencia segn la cantidad de palabras
que se tengan en un texto. 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.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 20 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

Para tener una mejor visualizacin de lo descrito, se mostrara solo las 10


primeras palabras con la mayor frecuencia.
La lnea de cdigo fd.plot (10) permite hacer lo descrito.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 21 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

5- Conclusiones
Los objetivos planteados al principio fueron logrados satisfactoriamente, ya que
se pudo obtener la frecuencia de cada palabra y el grafico representativo de
ello.
A diferencia de los proyectos anteriores, el programa solicitado no necesit de
ms funciones y acciones especficas, solo implementar los nuevos mtodos,
mdulos, instrucciones y maneras de realizar una accin, que para este caso
fueron mtodos de la librera nltk para analizar textos.
Nltk es una herramienta muy poderosa para el procesamiento de lenguaje
natural. En esta librera existen muchos mtodos para trabajar con textos y
libros los cuales pueden ser analizados en cosa de minutos.
Para la personalizacin de los programas creados con Python, es altamente
recomendable leer la documentacin contenida en los software, puesto que
esta permite conocer todas las funcionalidades, libreras, clases, mtodos, etc,
as como todas las capacidades de personalizacin contenidas en los lenguajes
de programacin incrustados en estos.

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 22 /
20

Universidad San Sebastin


Facultad de Ingeniera y Tecnologa

Tpicos avanzados de inteligencia


artificial
ICIF 1035

6- Bibliografa
Web: https://www.python.org/
Web: http://www.nltk.org/
Libro: Python para todos de Ral Gonzlez Duque
Libro: El tutorial de Python de Guido van Rossum
Libro: Natural language processing with Python de Steven Bird, Ewan Klein y
Edward Loper

Autor: Felipe
Flores
Valdebenito

Revisor : Eugenio
Bravo

Versin: 1

Fecha:
21/04/2015

Pgina 23 /
20

Anda mungkin juga menyukai