        """
        compute the probabilities of each of the tokens and then compute
        the aggregate probability of the top 15 tokens.

        return a tuple of the form:
          (aggregate_probability, [(probability, token), ...])
        """
        probs = self.get_token_probabilities(tokens)

        prod = reduce(operator.mul, [x for (x,y) in probs], 1)
        inv_prod = reduce(operator.mul, [1-x for (x,y) in probs], 1)