Duda palabras con mayor frecuencia
Publicado por Jacob (11 intervenciones) el 25/02/2021 17:50:41
Buenas, tengo el siguiento problema que creía estar haciendo bien, porque según lo estoy deduciendo me parece que debería funcionar bien, pero parece ser que tengo algunos fallos.
Tengo varias carpetas con muchos ficheros dentro cada una, el ejercicio me pide que dentro de esos ficheros para cada carpeta imprima las 5 raices de palabras (tokens) mas frecuentes.
Lo hago todo bien, pero cuando lo imprimo parece ser que todo me sale con frecuencia 1, ¿ alguien sabe donde podría estar el error ? Los ficheros de las carpetas los recorre bien asi que debería de darme las frecuencias usando la función del final.
Gracias

Tengo varias carpetas con muchos ficheros dentro cada una, el ejercicio me pide que dentro de esos ficheros para cada carpeta imprima las 5 raices de palabras (tokens) mas frecuentes.
Lo hago todo bien, pero cuando lo imprimo parece ser que todo me sale con frecuencia 1, ¿ alguien sabe donde podría estar el error ? Los ficheros de las carpetas los recorre bien asi que debería de darme las frecuencias usando la función del final.
Gracias

1
import collections
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import os
import re
ruta_carpetas = './colección_SFU_PLN/'
nombres_carpetas = os.listdir(ruta_carpetas)
#FUNCION QUE DEVUELVA EL NOMBRE DE LOS ARCHIVOS DE TEXTO DE UNA CARPETA
def buscar_archivos(ruta):
archivos_texto = [] #Lista vacía para introducir los archivos .txt de cada carpeta
archivos = os.listdir(ruta) #lista la ruta de la carpeta donde estan los archivos
for archivo in archivos: #Para cada archivo de la carpeta
archivos_texto.append(archivo) #lo guardo en la lista "archivos_texto" = []
return archivos_texto
#PROGRAMA PRINCIPAL
for carpeta in nombres_carpetas: #Para cada nombre de carpeta dentro de la ruta
ruta = ruta_carpetas + carpeta #actualizo la ruta con el nombre de la carpeta correspondiente a la que voy a acceder
archivos_texto = buscar_archivos(ruta) #Llamo a la función y actualizo la lista con los .txt dependiendo de la carpeta a la que acceda
print("\n")
print(ruta)
lista_raices = []
#diccionario_frecuencias = {}
repetida = 0
for archivo in archivos_texto:
with open(ruta + '/' + archivo, 'r', encoding="cp1252") as f:
contenido = f.read()
resultado = tokenizer.tokenize(contenido) #Guardo en listas, los tokens de cada oracion de cada fichero
filtered = [word for word in resultado if word not in english_stops] #Guardo en filtered los tokens pero sin palabras vacías del idioma "english"
for token in filtered: #Para cada token dentro de la lista filtered
raiz_token = stemmer.stem(token) #Extraigo la raiz del token
if raiz_token not in lista_raices: #Si no esta esa raiz en la lista de raices guardada entonces lo guardo
lista_raices.append(raiz_token)
counter = collections.Counter(lista_raices)
for raiz, cont in counter.most_common(5): #Para raiz dentro de la lista de raices, imprimir las 5 con mayor frecuencia de aparición
print(f"'{raiz}' aparece {cont} {'veces' if cont > 1 else 'vez'}.")
break
Valora esta pregunta


0