code: def _make_probs(self, *sequences):
          
          sequences = self._get_counters(*sequences)
          counts = self._sum_counters(*sequences)
          if self.terminator is not None:
              counts[self.terminator] = 1
          total_letters = sum(counts.values())
  
          prob_pairs = {}
          cumulative_count = 0
          counts = sorted(counts.items(), key=lambda x: (x[1], x[0]), reverse=True)
          for char, current_count in counts:
              prob_pairs[char] = (
                  Fraction(cumulative_count, total_letters),
                  Fraction(current_count, total_letters),
              )
              cumulative_count += current_count
          assert cumulative_count == total_letters
          return prob_pairs
docs: https://github.com/gw-c/arith/blob/master/arith.py