Tokenizes all multiword names in the list of Units.

        Modifies:
            - (indirectly) self.unit_list, by combining words into compound words.

        This is done because many names may be composed of multiple words, e.g.,
        'grizzly bear'. In order to count the number of permissible words
        generated, and also to compute semantic relatedness between these
        multiword names and other names, multiword names must each be reduced to
        a respective single token.

def tokenize(self):
        """Tokenizes all multiword names in the list of Units.

        Modifies:
            - (indirectly) self.unit_list, by combining words into compound words.

        This is done because many names may be composed of multiple words, e.g.,
        'grizzly bear'. In order to count the number of permissible words
        generated, and also to compute semantic relatedness between these
        multiword names and other names, multiword names must each be reduced to
        a respective single token.
        """
        if not self.quiet:
            print
            print "Finding compound words..."

        # lists of animal names containing 2-5 separate words
        compound_word_dict = {}
        for compound_length in range(5,1,-1):
            compound_word_dict[compound_length] = [name for name in self.names if len(name.split()) == compound_length]

        current_index = 0
        finished = False
        while not finished:
            for compound_length in range(5,1,-1): #[5, 4, 3, 2]
                if current_index + compound_length - 1 < len(self.unit_list): #don't want to overstep bounds of the list
                    compound_word = ""
                    #create compound word
                    for word in self.unit_list[current_index:current_index + compound_length]:
                        compound_word += " " + word.text
                    compound_word = compound_word.strip() # remove initial white space
                    #check if compound word is in list
                    if compound_word in compound_word_dict[compound_length]:
                        #if so, create the compound word
                        self.make_compound_word(start_index = current_index, how_many = compound_length)
                        current_index += 1
                        break
            else: #if no breaks for any number of words
                current_index += 1
                if current_index >= len(self.unit_list): # check here instead of at the top in case
                                                         # changing the unit list length introduces a bug
                    finished = True