¿Alguna vez se ha preguntado sobre una manera rápida de decir en qué se está enfocando un documento? ¿Cuál es su tema principal? Déjame darte este simple truco. Enumere las palabras únicas mencionadas en el documento y luego verifique cuántas veces se ha mencionado cada palabra (frecuencia). De esta manera le daríamos una indicación de lo que trata principalmente el documento. Pero eso no funcionaría fácilmente de forma manual, por lo que necesitamos un proceso automatizado, ¿no es así??
Sí, un proceso automatizado hará esto mucho más fácil. Veamos cómo podemos listar las diferentes palabras únicas en un archivo de texto y verificar la frecuencia de cada palabra usando Python.
En este tutorial, vamos a usar test.txt como nuestro archivo de prueba. ¡Adelante, descárgalo, pero no lo abras! Vamos a hacer un pequeño juego. El texto dentro de este archivo de prueba es de uno de mis tutoriales en Envato Tuts +. En función de la frecuencia de las palabras, adivinemos de cuál de mis tutoriales se extrajo este texto.
Que empiece el juego!
Ya que vamos a aplicar un patrón en nuestro juego, necesitamos usar expresiones regulares (expresiones regulares). Si "expresiones regulares" es un término nuevo para usted, esta es una buena definición de Wikipedia:
Una secuencia de caracteres que definen un patrón de búsqueda, principalmente para su uso en la coincidencia de patrones con cadenas, o en la cadena, es decir, operaciones similares a "buscar y reemplazar". El concepto surgió en la década de 1950, cuando el matemático estadounidense Stephen Kleene formalizó la descripción de un lenguaje regular, y entró en uso común con las utilidades de procesamiento de texto de Unix, un editor y grep, un filtro.
Si desea saber más acerca de las expresiones regulares antes de seguir adelante con este tutorial, puede ver mi otro tutorial Expresiones regulares en Python y volver para continuar este tutorial..
Vamos a trabajar paso a paso en la construcción de este juego. Lo primero que queremos hacer es almacenar el archivo de texto en una variable de cadena.
document_text = abrir ('test.txt', 'r') text_string = document_text.read ()
Ahora, para facilitar la aplicación de nuestra expresión regular, convierta todas las letras de nuestro documento en letras minúsculas, utilizando la función lower (), de la siguiente manera:
text_string = document_text.read (). lower ()
Escribamos nuestra expresión regular que devolvería todas las palabras con el número de caracteres en el rango [3-15]
. Empezando desde 3
ayudará a evitar palabras que no nos interesen en contar su frecuencia, como Si, de, en, etc., y palabras que tienen una longitud mayor que 15
Puede que no sean palabras correctas. La expresión regular para tal patrón se ve como sigue:
\ b [a-z] 3,15 \ b
\segundo
está relacionado con límite de palabra. Para obtener más información sobre el límite de la palabra, puede consultar este tutorial.
La expresión regular anterior se puede escribir de la siguiente manera:
match_pattern = re.search (r '\ b [a-z] 3,15 \ b', text_string)
Como queremos recorrer varias palabras en el documento, podemos usar el encuentra todos
función:
Devuelve todas las coincidencias no superpuestas de modelo en cuerda, como una lista de cuerdas. los cuerda se escanea de izquierda a derecha y las coincidencias se devuelven en el orden encontrado. Si uno o más grupos están presentes en el patrón, devuelva una lista de grupos; esta será una lista de tuplas si el patrón tiene más de un grupo. Las coincidencias vacías se incluyen en el resultado a menos que toquen el comienzo de otra coincidencia..
En este punto, queremos encontrar la frecuencia de cada palabra en el documento. El concepto adecuado para usar aquí son los diccionarios de Python, ya que necesitamos valor clave
pares, donde llave
es el palabra, y el valor
representa el frecuencia palabras aparecidas en el documento.
Suponiendo que hayamos declarado un diccionario vacío. frecuencia =
, El párrafo anterior se vería como sigue:
para word en match_pattern: count = frequency.get (word, 0) frequency [word] = count + 1
Ahora podemos ver nuestras llaves usando:
frequency_list = frequency.keys ()
Finalmente, para obtener la palabra y su frecuencia (la cantidad de veces que apareció en el archivo de texto), podemos hacer lo siguiente:
para palabras en frequency_list: imprima palabras, frecuencia [palabras]
Pongamos el programa en la siguiente sección y veamos cómo se ve la salida..
Habiendo discutido el programa paso a paso, ahora veamos cómo se ve el programa:
importar re importar cadena frecuencia = document_text = abrir ('test.txt', 'r') text_string = document_text.read (). lower () match_pattern = re.findall (r '\ b [az] 3,15 \ b ', text_string) para word en match_pattern: count = frequency.get (word, 0) frequency [word] = count + 1 frequency_list = frequency.keys () para palabras en frequency_list: imprimir palabras, frecuencia [words]
Si ejecuta el programa, debería obtener algo como lo siguiente:
Volvamos a nuestro juego. Repasando las frecuencias de palabras, ¿de qué cree que estaba hablando el archivo de prueba (con el contenido de mi otro tutorial de Python)??
(Pista: verifica la palabra con la frecuencia máxima).