Select Git revision
duckling_base_processing_task.py
duckling_base_processing_task.py 1.93 KiB
from abc import abstractmethod, ABC
from pprint import pprint
from typing import Any
import requests
from sziszapangma.integration.repository.experiment_repository import ExperimentRepository
from sziszapangma.integration.task.processing_task import ProcessingTask
from sziszapangma.model.relation_manager import RelationManager
class DucklingBaseProcessingTask(ProcessingTask, ABC):
_duckling_endpoint: str
_duckling_language: str
_input_property_name: str
_duckling_property_name: str
def __init__(self, duckling_endpoint: str, duckling_language: str, input_property_name: str,
duckling_property_name: str, task_name: str, require_update: bool):
super().__init__(task_name, require_update)
self._duckling_endpoint = duckling_endpoint
self._duckling_language = duckling_language
self._input_property_name = input_property_name
self._duckling_property_name = duckling_property_name
def process_duckling(self, text: str) -> Any:
return requests.post(self._duckling_endpoint, data={'locale': self._duckling_language, 'text': text}).json()
def run_single_process(self, record_id: str, experiment_repository: ExperimentRepository,
relation_manager: RelationManager):
test_property = experiment_repository.get_property_for_key(
record_id, self._input_property_name)
duckling_result = self.process_duckling(self.get_transcript_to_process(test_property))
print('duckling_result_len', len(duckling_result))
experiment_repository.update_property_for_key(record_id, self._duckling_property_name, duckling_result)
@abstractmethod
def get_transcript_to_process(self, property_value: Any) -> str:
pass
def skip_for_record(self, record_id: str, experiment_repository: ExperimentRepository) -> bool:
return experiment_repository.property_exists(record_id, self._duckling_property_name)