def add(self, phrase, id=None):
        """
        Adds a new phrase to the dictionary
        :param phrase: the new phrase as a list of tokens
        :param phrase_id: optionally the phrase_id can be set on addition.  Beware, if you set one id you should set
            them all as the auto-generated ids do not take into account phrase_ids set this way.
        :return: None
        """
        phrase_id = id if id is not None else self.get_next_id()
        PhraseDictionary._add_phrase(phrase, phrase_id, self, self.word_list)
        self.id2phrase[phrase_id] = phrase