/** * 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); } }
/** * Busca si el n-grama recibido como parámetro está en la segunda lista: si está, se elige la * menor de las dos significatividades. * * @param aux N-grama a buscar en la lista * @param lista Lista donde comprobaremos si el n-grama se encuentra contenido * @return Se devuelve un nuevo n-grama con la menor de las significatividades, y null si no * existe la coincidencia */ private NGrama buscarCoincidencia(NGrama aux, ArrayList<NGrama> lista) { NGrama nuevo = null; Iterator<NGrama> i = lista.iterator(); float significatividad = 0.0f; boolean seguirIterando = true; while (i.hasNext() && seguirIterando) { nuevo = i.next(); if (nuevo.equals(aux)) { significatividad = Math.min(aux.getSignificatividad(), nuevo.getSignificatividad()); nuevo.setSignificatividad(significatividad); seguirIterando = false; } else nuevo = null; } return nuevo; }