from abc import ABCMeta, abstractmethod from typing import List class Publication(): def __init__(self, pmc_id, pm_id, doi, preprint_id, other_id): self.pmc_id = pmc_id self.pm_id = pm_id self.doi = doi self.preprint_id = preprint_id self.other_id = other_id class TextMiningService(metaclass=ABCMeta): def __init__(self, name: str, description: str): self.name = name self.description = description @abstractmethod def getMentions(self, entities: List[str], limit: int = 20) -> List[Publication]: """Returs a list of publications for a given list of entity IDs in which the entities appear. Arguments: entities {List[str]} -- [description] Keyword Arguments: limit {int} -- [description] (default: {20}) Returns: List[Publication] -- [description] """ pass @abstractmethod def getCoOccurrences(self, entity: str) -> List[str]: """ Co-occurrences at publication level. To-do: decide how to handle resources that can provide co-occurrences at sentence level """ pass