| 6 | def generate_sentence(self): pass |
| 7 | |
| 8 | class DyIEPP(TaskFormat): |
| 9 | def __init__(self, doc_json): |
| 10 | self.doc_key = doc_json['doc_key'] |
| 11 | self.sentences = doc_json['sentences'] |
| 12 | self.ner = doc_json['ner'] |
| 13 | self.relations = doc_json['relations'] |
| 14 | self.events = doc_json['events'] |
| 15 | self.sentence_start = doc_json.get('sentence_start', doc_json['_sentence_start']) |
| 16 | |
| 17 | def generate_sentence(self, type_format='subtype'): |
| 18 | for sentence, events_in_sentence, sentence_start in zip(self.sentences, self.events, self.sentence_start): |
| 19 | events = list() |
| 20 | for event in events_in_sentence: # 一个trigger代表一个事件的形式 |
| 21 | trigger, event_type = event[0] |
| 22 | trigger -= sentence_start # sentence_start 指的是该句在整个document中的位置 |
| 23 | |
| 24 | suptype, subtype = event_type.split('.') # XX.YY 类别信息, XX为大类别, YY为小类别 |
| 25 | |
| 26 | if type_format == 'subtype': |
| 27 | event_type = subtype |
| 28 | elif type_format == 'suptype': |
| 29 | event_type = suptype |
| 30 | else: |
| 31 | event_type = suptype + type_format + subtype |
| 32 | |
| 33 | arguments = list() |
| 34 | for start, end, role in event[1:]: |
| 35 | start -= sentence_start |
| 36 | end -= sentence_start |
| 37 | arguments += [[role, list(range(start, end + 1))]] |
| 38 | |
| 39 | event = {'type': event_type, 'tokens': [trigger], 'arguments': arguments} |
| 40 | |
| 41 | events += [event] |
| 42 | yield {'tokens': sentence, 'events': events} |
| 43 | |
| 44 | |
| 45 | class Event(TaskFormat): |
nothing calls this directly
no outgoing calls
no test coverage detected