Формат ввода 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.0GitHub, версия моих данных (образец из корпуса 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.

Другие вопросы по тегам