docs: def summarize(self, text, topics=4, length=5, binary_matrix=True, topic_sigma_threshold=0.5):
          """
          Implements the method of latent semantic analysis described by Steinberger and Jezek in the paper:
  
          J. Steinberger and K. Jezek (2004). Using latent semantic analysis in text summarization and summary evaluation.
          Proc. ISIM ’04, pp. 93–100.
  
          :param text: a string of text to be summarized, path to a text file, or URL starting with http
          :param topics: the number of topics/concepts covered in the input text (defines the degree of
          dimensionality reduction in the SVD step)
          :param length: the length of the output summary; either a number of sentences (e.g. 5) or a percentage
          of the original document (e.g. 0.5)
          :param binary_matrix: boolean value indicating whether the matrix of word counts should be binary
          (True by default)
          :param topic_sigma_threshold: filters out topics/concepts with a singular value less than this
          percentage of the largest singular value (must be between 0 and 1, 0.5 by default)
          :return: list of sentences for the summary
          """
  
          text = self._parse_input(text)
  
          sentences, unprocessed_sentences = self._tokenizer.tokenize_sentences(text)
  
          length = self._parse_summary_length(length, len(sentences))
          if length == len(sentences):
              return unprocessed_sentences
  
          topics = self._validate_num_topics(topics, sentences)
  
          # Generate a matrix of terms that appear in each sentence
          weighting = 'binary' if binary_matrix else 'frequency'
          sentence_matrix = self._compute_matrix(sentences, weighting=weighting)
          sentence_matrix = sentence_matrix.transpose()
  
          # Filter out negatives in the sparse matrix (need to do this on Vt for LSA method):
          sentence_matrix = sentence_matrix.multiply(sentence_matrix > 0)
  
          s, u, v = self._svd(sentence_matrix, num_concepts=topics)
  
          # Only consider topics/concepts whose singular values are half of the largest singular value
          if 1 <= topic_sigma_threshold < 0:
              raise ValueError('Parameter topic_sigma_threshold must take a value between 0 and 1')
  
          sigma_threshold = max(u) * topic_sigma_threshold
          u[u < sigma_threshold] = 0  # Set all other singular values to zero
  
          # Build a "length vector" containing the length (i.e. saliency) of each sentence
          saliency_vec = np.dot(np.square(u), np.square(v))
  
          top_sentences = saliency_vec.argsort()[-length:][::-1]
          # Return the sentences in the order in which they appear in the document
          top_sentences.sort()
  
          return [unprocessed_sentences[i] for i in top_sentences]