mirror of
https://github.com/Steffo99/unimore-bda-6.git
synced 2024-11-23 00:14:19 +00:00
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
import abc
|
|
|
|
|
|
class BaseSA(metaclass=abc.ABCMeta):
|
|
"""
|
|
Abstract base class for sentiment analyzers implemented in this project.
|
|
"""
|
|
|
|
def __init__(self) -> None:
|
|
"""
|
|
Create the empty shell of the sentiment analyzer.
|
|
"""
|
|
|
|
self.trained = False
|
|
"If :meth:`train` has been called at least once, and the analyzer is ready or not to be evaluated or used."
|
|
|
|
@abc.abstractmethod
|
|
def train(self, training_set) -> None:
|
|
"""
|
|
Train the analyzer with the given training set.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
@abc.abstractmethod
|
|
def evaluate(self, test_set) -> None:
|
|
"""
|
|
Evaluate the analyzer with the given test set.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
@abc.abstractmethod
|
|
def use(self, text: str) -> str:
|
|
"""
|
|
Use the sentiment analyzer.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
|
|
class AlreadyTrainedError(Exception):
|
|
"""
|
|
This model has already been trained and cannot be trained again.
|
|
"""
|
|
|
|
class NotTrainedError(Exception):
|
|
"""
|
|
This model has not been trained yet.
|
|
"""
|
|
|
|
|
|
__all__ = (
|
|
"BaseSA",
|
|
"AlreadyTrainedError",
|
|
"NotTrainedError",
|
|
)
|