Java - Contar todas las palabras diferentes en un archivo de texto

 
Vista:

Contar todas las palabras diferentes en un archivo de texto

Publicado por Paola (1 intervención) el 23/02/2019 02:14:43
Hola chicos como están, estoy incursionando en este mundo del desarrollo y me dejaron esto y la verdad no tengo idea, por favor alguien puede ayudarme, quedaría eternamente agradecida
Gracias.

Escriba un programa rápido en (Shell, Python, Perl, Java, Lisp, C ++, APL, o lo que sea) para obtener un recuento de todas las "palabras" diferentes en un archivo de texto. Use cualquier definición de palabra que tenga sentido lógico o que facilite su trabajo. La salida podría verse así:

17 a
14 the
9 of
9 in
8 com
7 you
7 that
7 mercedsystems
6 to
...

Para este archivo de entrada, la palabra "a" ocurrió 17 veces, "la" 14 veces, etc.
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
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Contar todas las palabras diferentes en un archivo de texto

Publicado por Billy Joel (876 intervenciones) el 23/02/2019 18:22:12
Creo que algo así te puede servir

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
/**
 *
 * @author billy.johnson
 */
public class ContadorPalabras {
 
    public static void ordenamientoArreglos(String[] palabras, int[] apariciones) {
        for (int i = palabras.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (j + 1 <= i && apariciones[j] < apariciones[j + 1]) {
                    String aux = palabras[j];
                    int iux = apariciones[j];
                    palabras[j] = palabras[j + 1];
                    apariciones[j] = apariciones[j + 1];
                    palabras[j + 1] = aux;
                    apariciones[j + 1] = iux;
                }
            }
        }
    }
 
    public static void main(String[] arg) {
        File archivo;
        FileReader fr = null;
        BufferedReader br;
        Map<String, Integer> palabras = new HashMap();
 
        try {
            archivo = new File("C:\\lorem_ipsum.txt");
            fr = new FileReader(archivo);
            br = new BufferedReader(fr);
 
            //La variable linea será utilizada para leer el contenido del archivo linea a linea
            String linea;
            while ((linea = br.readLine()) != null) {
                //por cada linea quitamos las comas, los puntos, puntos y comas y dos puntos
                //también generamos un String [] para delimitar las palabras
                for (String palabra : linea.replace(",", "").replace(".", "").replace(";", "").replace(":", "").split(" ")) {
                    //registramos cada palabra en un mapa en donde sumamos 1 cada vez que se repite
                    palabras.put(palabra, palabras.containsKey(palabra) ? palabras.get(palabra) + 1 : 1);
                }
            }
 
            //Creamos dos arreglos para ordenarlos
            String[] arreglo_palabras = new String[palabras.size()];
            int[] arreglo_repeticiones = new int[palabras.size()];
            palabras.keySet().toArray(arreglo_palabras);
            for (int i = 0; i < arreglo_palabras.length; i++) {
                arreglo_repeticiones[i] = palabras.get(arreglo_palabras[i]);
            }
            //ordenamos los arreglos de forma desendente en base a la repetición
            //El ordenamiento responde al algoritmo de ordenamiento por burbuja
            ordenamientoArreglos(arreglo_palabras, arreglo_repeticiones);
 
            //Imprimimos el resultado
            for (int i = 0; i < arreglo_repeticiones.length; i++) {
                System.out.println(arreglo_repeticiones[i] + " " + arreglo_palabras[i]);
            }
            System.out.println("Para este archivo de entrada, la palabra " + arreglo_palabras[0] + " ocurrió " + arreglo_repeticiones[0] + " veces, " + arreglo_palabras[1] + " " + arreglo_repeticiones[1] + " veces, etc.");
        } catch (IOException e) {
            e.printStackTrace(System.out);
        } finally {
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (IOException e2) {
                e2.printStackTrace(System.out);
            }
        }
    }
}

Saludos
;-)
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