'Use BLLIP to parse a sentence. Takes a sentence as a list of
(word, tag) tuples; the sentence must have already been tokenized
and tagged. BLLIP will attempt to use the tags provided but may
use others if it can\'t come up with a complete parse subject
to those constraints. You may also specify a tag as ``None``
to leave a token\'s tag unconstrained.
:return: An iterator that generates parse trees for the sentence
from most likely to least likely.
:param sentence: Input sentence to parse as (word, tag) pairs
:type sentence: list(tuple(str, str))
:rtype: iter(Tree)'

def tagged_parse(self, word_and_tag_pairs):

    words = []
    tag_map = {}
    for (i, (word, tag)) in enumerate(word_and_tag_pairs):
        words.append(word)
        if (tag is not None):
            tag_map[i] = tag
    _ensure_ascii(words)
    nbest_list = self.rrp.parse_tagged(words, tag_map)
    for scored_parse in nbest_list:
        (yield _scored_parse_to_nltk_tree(scored_parse))
