Iterate over the lines of "The Complete Works of William Shakespeare".

        This yields lists of strings (**texts**) rather than vectors (vectorized bags-of-words).
        And the **texts** yielded are lines rather than entire plays or sonnets.
        If you want vectors, use the corpus interface instead of this method.

        >>> shakes = ShakesCorpus(lowercase=True)
        >>> for i, tokens in enumerate(shakes.get_texts()):
        ...     print(i, tokens)
        ...     if i >= 4:
        ...         break
        (0, [])
        (1, [])
        (2, [u'the', u'sonnets'])
        (3, [])
        (4, [u'by', u'william', u'shakespeare'])

def get_texts(self, metadata=None):
        """Iterate over the lines of "The Complete Works of William Shakespeare".

        This yields lists of strings (**texts**) rather than vectors (vectorized bags-of-words).
        And the **texts** yielded are lines rather than entire plays or sonnets.
        If you want vectors, use the corpus interface instead of this method.

        >>> shakes = ShakesCorpus(lowercase=True)
        >>> for i, tokens in enumerate(shakes.get_texts()):
        ...     print(i, tokens)
        ...     if i >= 4:
        ...         break
        (0, [])
        (1, [])
        (2, [u'the', u'sonnets'])
        (3, [])
        (4, [u'by', u'william', u'shakespeare'])
        """
        if metadata is None:
            metadata = self.metadata
        self.input_file = gzip.GzipFile(self.input_file_path)
        volume_num = 0
        with self.input_file as lines:
            for lineno, line in enumerate(lines):
                if volume_num >= len(self.book_meta['volumes']):
                    raise StopIteration()
                if lineno < self.book_meta['volumes'][volume_num]['start']:
                    continue
                if lineno < self.book_meta['volumes'][volume_num]['stop']:
                    # act_num, scene_num = 0, 0  # FIXME: use self.book_meta['volumes'][volume_num]['sections']
                    if metadata:
                        # FIXME: use self.lemmatize
                        toks = self.tokenize(line, lowercase=self.lowercase)
                        yield (toks, (lineno,))
                    else:
                        toks = self.tokenize(line, lowercase=self.lowercase)
                        yield toks
                else:
                    volume_num += 1