/** * Método que realiza todas las operaciones del algoritmo blindLight nombradas anteriormente: * obtiene los n-gramas del texto, sus frecuencias absoluta y relativa, estima su probabilidad * mediante el estimador Simple Good-Turing y, por último, aplica el estadístico elegido a cada * n-grama para establecer su significatividad (que es, en definitiva, nuestra meta en estos * momentos). * * @throws NGramaException Esta excepción se lanza si la longitud del texto de un n-grama no * coincide con el tamaño de n-grama estipulado */ public void iniciarAlgoritmo() throws NGramaException { ong.calcular(ruta, this.sizeNGrama); gt = new GoodTuring(ong.getListaNGramas()); gt.componerPrimerVector(); gt.componerSegundoVector(); listaNGramas = gt.cruzarListas(ong.getListaNGramas()); ep.setN(listaNGramas.size()); this.aplicarEstadistico(); }
/** * Recorre la lista que contiene los n-gramas y sus probabilidades estimadas, y para cada uno * calcula su "peso" o significatividad, mediante el estimador que haya sido indicado. Una vez * realizada la operación, el n-grama se incluye en otra lista de salida. * * @throws NGramaException Esta excepción se lanza si la longitud del texto de un n-grama no * coincide con el tamaño de n-grama estipulado */ private void aplicarEstadistico() throws NGramaException { listaDescomposiciones = ong.getListaDescomposiciones(); Iterator<NGrama> i = listaNGramas.iterator(); NGrama aux, nuevo; listaSalida = new ArrayList<NGrama>(); while (i.hasNext()) { aux = i.next(); float probabilidad = aux.getProbabilidadEstimada(); float resultado = ep.calcularEstadistico(aux, probabilidad, listaDescomposiciones); nuevo = new NGrama(aux.getTexto()); nuevo.setSignificatividad(resultado); listaSalida.add(nuevo); } }