Source code for council.scorers.scorer_base
import abc
import logging
from typing import Any, Dict
from council.contexts import ChatMessage
from .scorer_exception import ScorerException
logger = logging.getLogger(__name__)
[docs]class ScorerBase(abc.ABC):
"""
Base class for implementing a Scorer
"""
[docs] def score(self, message: ChatMessage) -> float:
"""
Score the given message
Parameters:
message (ChatMessage): the message to be scored
Returns:
similarity score. The greater the value to higher the similarity
Raises:
SimilarityScorerException: an unexpected error occurs
"""
try:
return self._score(message)
except Exception:
logging.exception('message="execution failed"')
raise ScorerException
[docs] @abc.abstractmethod
def _score(self, message: ChatMessage) -> float:
"""
To be implemented with in derived classes with actual scoring logic
"""
pass
[docs] def to_dict(self) -> Dict[str, Any]:
"""
Serialize the instance into a dictionary. May need to be overriden in derived classes
"""
return {"type": self.__class__.__name__}