Spaces:
Build error
Build error
from typing import List, Union | |
class SummModel: | |
""" | |
Base model class for SummerTime | |
""" | |
# static variables | |
model_name = "None" | |
is_extractive = False | |
is_neural = False | |
is_query_based = False | |
is_dialogue_based = False | |
is_multi_document = False | |
def __init__( | |
self, | |
trained_domain: str = None, | |
max_input_length: int = None, | |
max_output_length: int = None, | |
): | |
self.trained_domain = trained_domain | |
self.max_input_length = max_input_length | |
self.max_output_length = max_output_length | |
def summarize( | |
self, corpus: Union[List[str], List[List[str]]], queries: List[str] = None | |
) -> List[str]: | |
""" | |
All summarization models should have this function | |
:param corpus: each string in the list is a source document to be summarized; if the model is multi-document or | |
dialogue summarization model, then each instance contains a list of documents/utterances | |
:param queries: a list of queries if this is a query-based model | |
:return: a list of generated summaries | |
""" | |
raise NotImplementedError( | |
"The base class for models shouldn't be instantiated!" | |
) | |
def assert_summ_input_type( | |
cls, corpus: Union[List[str], List[List[str]]], queries: Union[List[str], None] | |
): | |
""" | |
Verifies that type of input corpus or queries for summarization align with the model type. | |
""" | |
raise NotImplementedError( | |
"The base class for models shouldn't be instantiated!" | |
) | |
def show_capability(cls) -> None: | |
""" | |
Use concise language to show the strength and weakness for each model. Try not to use NLP terminologies | |
""" | |
raise NotImplementedError( | |
"The base class for models shouldn't be instantiated!" | |
) | |
def generate_basic_description(cls) -> str: | |
""" | |
Automatically generate the basic description string based on the attributes | |
""" | |
extractive_abstractive = "extractive" if cls.is_extractive else "abstractive" | |
neural = "neural" if cls.is_neural else "non-neural" | |
basic_description = ( | |
f"{cls.model_name} is a" | |
f"{'query-based' if cls.is_query_based else ''} " | |
f"{extractive_abstractive}, {neural} model for summarization." | |
) | |
if cls.is_multi_document or cls.is_dialogue_based: | |
basic_description += ( | |
f"It can handle {'multi-document' if cls.is_multi_document else ''} " | |
f"{'dialogue' if cls.is_dialogue_based else ''} textual data." | |
) | |
return basic_description | |