class_docstr: In-memory store of translations for a given phrase, and the log
  probability of the those translations
class_docstr_tok: ["In-memory","store","of","translations","for","a","given","phrase",",","and","the","log","probability","of","the","those","translations"]
docstr: :type src_phrase: tuple(str)
  :type trg_phrase: tuple(str)
  
  :param log_prob: Log probability that given ``src_phrase``,
      ``trg_phrase`` is its translation
  :type log_prob: float
docstr_tok: [":","type","src_phrase",":","tuple","(","str",")",":","type","trg_phrase",":","tuple","(","str",")",":","param","log_prob",":","Log","probability","that","given","``","src_phrase","``",",","``","trg_phrase","``","is","its","translation",":","type","log_prob",":","float"]
code: def add(self, src_phrase, trg_phrase, log_prob):
      """
      :type src_phrase: tuple(str)
      :type trg_phrase: tuple(str)
  
      :param log_prob: Log probability that given ``src_phrase``,
          ``trg_phrase`` is its translation
      :type log_prob: float
      """
      entry = PhraseTableEntry(trg_phrase=trg_phrase, log_prob=log_prob)
      if src_phrase not in self.src_phrases:
          self.src_phrases[src_phrase] = []
      self.src_phrases[src_phrase].append(entry)
      self.src_phrases[src_phrase].sort(
          key=lambda e: e.log_prob, reverse=True
      )
  
imports: import subprocess
  from collections import namedtuple
label_desc: Use image node_id 3 for calling the PhraseTable obj's underlying member method code with example usage: obj.add(src_phrase, trg_phrase, log_prob) without return types