docs: 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