mirror of
https://github.com/Steffo99/unimore-bda-6.git
synced 2024-11-23 00:14:19 +00:00
55 lines
1.2 KiB
Python
55 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",
|
||
|
)
|