Skip to content

Commit

Permalink
#473 related refactoring: renaming classes (generalization)
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolay-r committed May 15, 2023
1 parent 07bc391 commit d8c691c
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 17 deletions.
14 changes: 10 additions & 4 deletions arekit/common/data/input/providers/instances/base.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
class BaseTextOpinionsLinkageInstancesProvider(object):
from arekit.common.linkage.base import LinkedDataWrapper

def iter_instances(self, text_opinion_linkage):

class BaseLinkedDataInstancesProvider(object):

def iter_instances(self, linked_data):
raise NotImplementedError()

@staticmethod
def provide_label(text_opinion_linkage):
return text_opinion_linkage.First.Sentiment
def provide_label(linked_data):
""" Implementation based on the first element of the linkage.
"""
assert(isinstance(linked_data, LinkedDataWrapper))
return linked_data.First.Sentiment
10 changes: 5 additions & 5 deletions arekit/common/data/input/providers/instances/multiple.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
from arekit.common.data.input.providers.instances.base import BaseTextOpinionsLinkageInstancesProvider
from arekit.common.data.input.providers.instances.base import BaseLinkedDataInstancesProvider
from arekit.common.linkage.text_opinions import TextOpinionsLinkage
from arekit.common.text_opinions.base import TextOpinion


class MultipleLinkedTextOpinionsInstancesProvider(BaseTextOpinionsLinkageInstancesProvider):
class MultipleInstancesLinkedTextOpinionsProvider(BaseLinkedDataInstancesProvider):

def __init__(self, supported_labels):
assert(isinstance(supported_labels, list))
self.__supported_labels = supported_labels

def iter_instances(self, text_opinion_linkage):
def iter_instances(self, linked_data):
""" Enumerate all opinions as if it would be with the different label types.
"""
for label in self.__supported_labels:
yield self.__modify_first_and_copy_linked_wrap(text_opinion_linkage, label)
yield self.__modify_first_and_copy_linked_wrap(linked_data, label)

@staticmethod
def __modify_first_and_copy_linked_wrap(text_opinions_linkage, label):
assert (isinstance(text_opinions_linkage, TextOpinionsLinkage))

linkage = [text_opinion for text_opinion in text_opinions_linkage]
linkage = list(text_opinions_linkage)
text_opinion_copy = TextOpinion.create_copy(other=linkage[0])
text_opinion_copy.set_label(label=label)
linkage[0] = text_opinion_copy
Expand Down
8 changes: 4 additions & 4 deletions arekit/common/data/input/providers/instances/single.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from arekit.common.data.input.providers.instances.base import BaseTextOpinionsLinkageInstancesProvider
from arekit.common.data.input.providers.instances.base import BaseLinkedDataInstancesProvider


class SingleInstanceTextOpinionsLinkageProvider(BaseTextOpinionsLinkageInstancesProvider):
class SingleInstanceLinkedDataProvider(BaseLinkedDataInstancesProvider):

def iter_instances(self, text_opinions_linkage):
yield text_opinions_linkage
def iter_instances(self, linked_data):
yield linked_data
return
9 changes: 5 additions & 4 deletions arekit/common/data/input/providers/rows/samples.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from collections import OrderedDict

from arekit.common.data import const
from arekit.common.data.input.providers.instances.multiple import MultipleLinkedTextOpinionsInstancesProvider
from arekit.common.data.input.providers.instances.single import SingleInstanceTextOpinionsLinkageProvider
from arekit.common.data.input.providers.instances.multiple import MultipleInstancesLinkedTextOpinionsProvider
from arekit.common.data.input.providers.instances.single import SingleInstanceLinkedDataProvider
from arekit.common.data.input.providers.label.base import LabelProvider
from arekit.common.data.input.providers.label.binary import BinaryLabelProvider
from arekit.common.data.input.providers.label.multiple import MultipleLabelProvider
Expand Down Expand Up @@ -134,10 +134,11 @@ def __create_row_ids_provider(label_provider):

@staticmethod
def __create_instances_provider(label_provider):
# TODO. #473 related: thiese label providers are based on text opinion extraction task!
if isinstance(label_provider, BinaryLabelProvider):
return MultipleLinkedTextOpinionsInstancesProvider(label_provider.SupportedLabels)
return MultipleInstancesLinkedTextOpinionsProvider(label_provider.SupportedLabels)
if isinstance(label_provider, MultipleLabelProvider):
return SingleInstanceTextOpinionsLinkageProvider()
return SingleInstanceLinkedDataProvider()

def __provide_rows(self, row_dict, parsed_news, entity_service,
text_opinion_linkage, index_in_linked, idle_mode):
Expand Down

0 comments on commit d8c691c

Please sign in to comment.