Формат ввода AllenNLP BERT SRL ("OntoNotes v. 5.0 отформатирован")
Цель состоит в том, чтобы обучить BERT SRL другому набору данных. По комплектации требует.
Изначально мои данные поступают в формате CoNLL, и я преобразовал их в формат conll-formatted-ontonotes-5.0 из . Чтение данных работает, и обучение, похоже, работает, за исключением того, что точность остается на уровне 0. Я подозреваю, что либо кодирование аргументов SRL (BOI или фразовое?), Либо структура столбца (другие версии OntoNotes в формате CoNLL здесь отличаются) от ожидаемого Вход. В качестве альтернативы ошибка может возникнуть из-за того, что метки ролей жестко закреплены в коде. Я следовал справочным данным при использовании длинной формы (
ARGM-TMP
), но вы часто видите краткую форму (
AM-TMP
) в других данных.
Вопрос в том, какой набор данных и формат здесь ожидается. Я предполагаю, что это один из форматов CoNLL / Skel для OntoNotes 5.0 с восстановленным столбцом WORD, но
Версия CoNLL, похоже, не поставляется с версией OntoNotes для LDC.
Похоже, что это не формат версии OntoNotes v.5.0 "conll-formatted-ontonotes-5.0" на предоставленный создателями OntoNotes.
Существует как минимум еще одна версия данных OntoNotes 5.0 CoNLL / Skel как часть PropBank . Он отличается от другого тем, что не использует 3 столбца и кодирует предикаты. (Для части моих данных это собственный формат.)
В документации SrlReader упоминается кодировка BIO (IOBES). Это действительно использовалось в других редакциях CoNLL данных PropBank, но не в вышеупомянутых корпусах OntoNotes. Другими такими форматами являются, например, форматы CoNLL-2008 и CoNLL-2009 и различные варианты.
Прежде чем я начну обратное проектирование SrlReader, есть ли у кого-нибудь под рукой фрагмент данных, чтобы я мог соответствующим образом подготовить свои данные?
GitHub версии OntoNotes v.5.0conll-formatted-ontonotes-5.0
GitHub, версия моих данных (образец из корпуса EWT):
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0 0 where WRB (TOP(S(SBARQ(WHADVP*) - - - - * (ARGM-LOC*) * * -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0 1 can MD (SQ* - - - - * (ARGM-MOD*) * * -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0 2 I PRP (NP*) - - - - * (ARG0*) * * -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0 3 get VB (VP* get 01 - - * (V*) * * -
google/ewt/answers/00/20070404104007AAY1Chs_ans.xml 0 4 morcillas NNS (NP*) - - - - * (ARG1*) * * -
1 ответ
«Нативный» формат — это формат в редакции CoNLL-2012, см. cemantix.org/conll/2012/data.html, как его создать.
Однако класс Ontonotes, который его читает, может столкнуться с трудностями при синтаксическом анализе «собственных» данных CoNLL-2012, поскольку сценарии предварительной обработки CoNLL-2012 могут привести к недопустимым деревьям синтаксического анализа. Разбор с помощью NLTK, естественно, приведет к ошибке ValueError, такой как
ValueError: Tree.read(): expected ')' but got 'end-of-string'
at index 1427.
"...LT#.#.) ))"
Не существует прямого способа решить эту проблему на уровне данных, потому что анализируемая строка является промежуточным представлением, а не исходными данными. Если вы хотите обработать данные CoNLL-2012, необходимо отловить ошибку ValueError, ср. https://github.com/allenai/allennlp/issues/5410.