Я хочу аннотировать свои данные в определенном формате, который можно использовать в придоге (простое) - PullRequest
0 голосов
/ 10 мая 2019

Я хочу аннотировать свои данные (с помощью меток [ДАТА, ВРЕМЯ]), которые представляют собой список предложений в определенном формате, подобном следующему: (dic включает в себя текст, который является предложениями, интервал, который является начальным и окончанием объекта с помощью deisredlable)

[{'text': 'On 1600 January 13/2317 at 11h 50m, the right ascension of Mars was: 18 19',
  'spans': [{'start': 7, 'end': 18, 'label': 'TIME'}]},
 {'text': 'Hence, Mars is at 10° 38’ 46” Leo, at an adjusted time of 11h 40m reduced to the meridian of Uraniborg.',
  'spans': []},
 {'text': 'But on January 24/February 3 at the same time it was at 6° 18’ Leo.',
  'spans': [{'start': 6, 'end': 17, 'label': 'DATE'}]}]

Я пытался сделать аннотацию, и я мог аннотировать и конвертировать в этот формат только для одного ярлыка likeso

import re
from prodigy.util import write_jsonl

label = "DATE"   # whatever label you want to use
texts = texts  # a list of your texts
regex_patterns = [
                # your expressions – whatever you need
                re.compile(r'\d{4} [A-Z][a-z.]+ \d{2} |\d{4} [A-Z][a-z.]+ \d{2} | [JFMASOND][a-z.]+\s\d{1,2}' ) 
            ]
examples = []
for text in texts:
    for expression in regex_patterns:
        spans = []
    for match in re.finditer(expression, text):
        start, end = match.span()
        span = {"start": start, "end": end, "label": label}
        spans.append(span)
    task = {"text": text, "spans": spans}
    examples.append(task)              

write_jsonl("data_DATE.jsonl", examples)

этот код работает только для одного ярлыка, как можно аннотироватьмои данные для более чем одного ярлыка?

Я пробовал это, но очевидно, что он не работает, а только аннотирует данные на основе последнего ярлыка


import re
from prodigy.util import write_jsonl

label = ["DATE", "TIME"]   # whatever label you want to use
texts = texts  # a list of your texts
for lbl in label:
        if lbl == "DATE":
            regex_patterns = [
                # your expressions – whatever you need
                re.compile(r'\d{4} [A-Z][a-z.]+ \d{2} |\d{4} [A-Z][a-z.]+ \d{2} | [JFMASOND][a-z.]+\s\d{1,2}' )                  
        ]
        if lbl == "TIME":
             regex_patterns = [
                re.compile(r'\d{1,2}h\s\d{1,2}m | \d{1,2}h' )  
        ]



        examples = []
        for text in texts:
            for expression in regex_patterns:
                spans = []
                for match in re.finditer(expression, text):
                    start, end = match.span()
                    span = {"start": start, "end": end, "label": lbl}
                    spans.append(span)
                task = {"text": text, "spans": spans}
                examples.append(task)

write_jsonl("data.jsonl", examples)

ответ долженне так сложно, я знаю, но я не могу найти его, большое спасибо за вашу помощь

...