def __init__(self, sentence, words=[], type=None, role=None, relation=None):
<EOL>b1 = isinstance(relation, (list, tuple))<EOL>b2 = isinstance(role, (list, tuple))<EOL>if not b1 and not b2:<EOL><INDENT>r = [(relation, role)]<EOL><DEDENT>elif b1 and b2:<EOL><INDENT>r = zip(relation, role)<EOL><DEDENT>elif b1:<EOL><INDENT>r = zip(relation, [role] * len(relation))<EOL><DEDENT>elif b2:<EOL><INDENT>r = zip([relation] * len(role), role)<EOL><DEDENT>r = [(a, b) for a, b in r if a is not None or b is not None]<EOL>self.sentence      = sentence<EOL>self.words         = []<EOL>self.type          = type  <EOL>self.relations     = r     <EOL>self.pnp           = None  <EOL>self.anchor        = None  <EOL>self.attachments   = []    <EOL>self._conjunctions = None  <EOL>self._modifiers    = None<EOL>self.extend(words)<EOL>
A list of words that make up a phrase in the sentence.
            - type: the phrase tag; "NP" => a noun phrase (e.g., "the black cat").
            - role: the function of the phrase; "SBJ" => sentence subject.
            - relation: an id shared with other phrases, linking subject to object in the sentence.