tarea 1 inteligencia artificial 2

28
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: Autor: Felipe Flores Valdebenito Revisor : Eugenio Bravo Versión: 1 Fecha: 21/04/2015 Página 1 /20

Upload: felipe-flores

Post on 26-Sep-2015

237 views

Category:

Documents


0 download

DESCRIPTION

contador de frecuencias de palabras

TRANSCRIPT

Universidad San SebastinFacultad de Ingeniera y TecnologaTpicos avanzados de inteligencia artificialICIF 1035

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

Contenidos

1. Descripcin del problema..........................................................Pgina 32. Alternativas de solucin...Pgina 43. SolucinPgina 54. Implementacin....Pgina 6 - 185. Conclusiones.Pgina 196. Bibliografa....Pgina 20

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.

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.

.

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.

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.

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.

Una vez seleccionado los complementos el software comenzara la instalacin

El software tardara 1 o 2 minutos en instalarse dependiendo del computador.

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.

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.

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:

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:

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\gutenbergEn 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.

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.

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.

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.

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. 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.

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.

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.

6- Bibliografa

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

Autor: Felipe Flores ValdebenitoRevisor : Eugenio Bravo

Versin: 1

Fecha: 21/04/2015

Pgina 20 /20