/**
   * 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;
  }