Я хочу аннотировать свои данные (с помощью меток [ДАТА, ВРЕМЯ]), которые представляют собой список предложений в определенном формате, подобном следующему: (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)
ответ долженне так сложно, я знаю, но я не могу найти его, большое спасибо за вашу помощь