Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	File size: 1,740 Bytes
			
			| 56da2e5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
from summarizer import Summarizer
import networkx as nx
class TFIDFSummarizer:
    @staticmethod
    def summarize(sentences, preprocessed_sentences, num_sentences):
        vectorizer = TfidfVectorizer()
        tfidf_matrix = vectorizer.fit_transform(preprocessed_sentences)
        scores = np.sum(tfidf_matrix.toarray(), axis=1)
        ranked_indices = np.argsort(scores)[::-1]
        return " ".join([sentences[i] for i in ranked_indices[:num_sentences]])
class TextRankSummarizer:
    @staticmethod
    def summarize(sentences, preprocessed_sentences, num_sentences):
        vectorizer = TfidfVectorizer()
        tfidf_matrix = vectorizer.fit_transform(preprocessed_sentences)
        similarity_matrix = cosine_similarity(tfidf_matrix)
        nx_graph = nx.from_numpy_array(similarity_matrix)
        scores = nx.pagerank(nx_graph)
        ranked_indices = sorted(scores, key=scores.get, reverse=True)
        return " ".join([sentences[i] for i in ranked_indices[:num_sentences]])
class CombinedSummarizer:
    @staticmethod
    def summarize(sentences, preprocessed_sentences, num_sentences):
        tfidf_summary = TFIDFSummarizer.summarize(
            sentences, preprocessed_sentences, num_sentences
        )
        textrank_summary = TextRankSummarizer.summarize(
            sentences, preprocessed_sentences, num_sentences
        )
        return f"{tfidf_summary} {textrank_summary}"
class BERTSummarizer:
    def __init__(self):
        self.model = Summarizer()
    def summarize(self, text, num_sentences):
        return self.model(text, num_sentences=num_sentences)
 | 
