from sumy.parsers.plaintext import PlaintextParser from sumy.nlp.tokenizers import Tokenizer from sumy.summarizers.text_rank import TextRankSummarizer from sumy.summarizers.lsa import LsaSummarizer from sumy.summarizers.lex_rank import LexRankSummarizer import nltk nltk.download('punkt') def summarize_with_textrank(text, sentences_count=10): """ Summarizes the provided text using TextRank algorithm. Args: text (str): Text to summarize. sentences_count (int): Number of sentences for the summary. Returns: str: Summarized text. """ # Check if the text is not empty if not text.strip(): return "Provided text is empty." # Create a parser for the provided text parser = PlaintextParser.from_string(text, Tokenizer("english")) # Use TextRank for summarization text_rank_summarizer = TextRankSummarizer() text_rank_summary = text_rank_summarizer(parser.document, sentences_count=sentences_count) # Compile summary into a single string summary_text = "\n".join(str(sentence) for sentence in text_rank_summary) return summary_text # Define LSA summarization function def summarize_with_lsa(text, sentences_count=10): """ Summarizes the provided text using LSA (Latent Semantic Analysis) algorithm. Args: text (str): Text to summarize. sentences_count (int): Number of sentences for the summary. Returns: str: Summarized text. """ # Check if the text is not empty if not text.strip(): return "Provided text is empty." # Create a parser for the provided text parser = PlaintextParser.from_string(text, Tokenizer("english")) # Use LSA for summarization lsa_summarizer = LsaSummarizer() lsa_summary = lsa_summarizer(parser.document, sentences_count=sentences_count) # Compile summary into a single string summary_text = "\n".join(str(sentence) for sentence in lsa_summary) return summary_text