Python - Duda palabras con mayor frecuencia

 
Vista:
sin imagen de perfil
Val: 31
Ha aumentado su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

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


00

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 31
Ha aumentado su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Duda palabras con mayor frecuencia

Publicado por Jacob (11 intervenciones) el 26/02/2021 11:11:45
ACTUALIZACIÓN: YA LO HE SOLUCIONADO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar