Source code for spear.labeling.continuous_scoring.core

from typing import Any, Callable, List, Mapping, Optional

from ..data_types import DataPoint


[docs]class BaseContinuousScorer: """Base Class for Continuous Scoring function used by the Labeling Function Args: name (str): Name of the continuous scoring function cf (Callable[..., int]): Core function which calculates continuous score resources (Optional[Mapping[str, Any]], optional): Resources for the scorer. Defaults to None. """ def __init__( self, name: str, cf: Callable[..., int], resources: Optional[Mapping[str, Any]] = None, # pre: Optional[List[BasePreprocessor]] = None, ) -> None: """Instantiate the BaseContinuousScorer Class """ self.name = name self._cf = cf self._resources = resources or {} def __call__(self, x: DataPoint, **kwargs) -> float: """Applies core function on datapoint to give continuous score Args: x (DataPoint): Datapoint Returns: float: continuous score output by the function """ return self._cf(x,**self._resources, **kwargs) def __repr__(self) -> str: """Represents class objects as string Returns: str: representation of class object as string """ return f"{type(self).__name__} {self.name}"
[docs]class continuous_scorer: """Decorator class for continuous scoring. Args: name (Optional[str], optional): Name for the decorator. Defaults to None. resources (Optional[Mapping[str, Any]], optional): Resources for the scorer. Defaults to None. Raises: ValueError: If decorator is missing parantheses. """ def __init__( self, name: Optional[str] = None, resources: Optional[Mapping[str, Any]] = None, ) -> None: """Instantiates decorator for continuous scorer """ if callable(name): raise ValueError("Looks like this decorator is missing parentheses!") self.name = name self.resources = resources def __call__(self, cf: Callable[..., int]) -> BaseContinuousScorer: """Creates a callable BaseContinuosScorer object for applying scorer on datapoint. Args: cf (Callable[..., int]): Core function for calculating continuous score Returns: BaseContinuousScorer: a callable BaseContinuousScorer class object """ name = self.name or cf.__name__ return BaseContinuousScorer(name=name, resources=self.resources, cf=cf)