-
Notifications
You must be signed in to change notification settings - Fork 3
/
parser.py
38 lines (26 loc) · 1.19 KB
/
parser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from arekit.common.news.objects_parser import SentenceObjectsParserPipelineItem
from arekit.common.pipeline.context import PipelineContext
from arekit.common.text.partitioning.str import StringPartitioning
from arekit.contrib.source.brat.sentence import BratSentence
class BratTextEntitiesParser(SentenceObjectsParserPipelineItem):
KEY = "sentence"
def __init__(self):
super(BratTextEntitiesParser, self).__init__(StringPartitioning())
# region protected methods
def _get_text(self, pipeline_ctx):
sentence = self.__get_sentence(pipeline_ctx)
return sentence.Text
def _get_parts_provider_func(self, input_data, pipeline_ctx):
sentence = self.__get_sentence(pipeline_ctx)
return self.__iter_subs_values_with_bounds(sentence)
# endregion
# region private methods
def __get_sentence(self, pipeline_ctx):
assert(isinstance(pipeline_ctx, PipelineContext))
assert(self.KEY in pipeline_ctx)
return pipeline_ctx.provide(self.KEY)
@staticmethod
def __iter_subs_values_with_bounds(sentence):
assert(isinstance(sentence, BratSentence))
return sentence.iter_entity_with_local_bounds()
# endregion