Извлечение постобработанных троек из модели AllenNLP Open IE

Я хотел бы извлечь чистые тройки в форме кортежа (субъект, отношение, объект) из модели предиктора Allen NLP Open IE.

В настоящее время я вижу, что шаги следующие

OIE_output = predictor_OIE.predict(sentence=sent)
for verb in OIE_output['verbs']:
    srl_output = predictor_OIE.make_srl_string(words,verb['tags'])

srl_output при печати дает мне теги в предложениях, например:

[ARG0: Корпорация Raytheon Technologies проводит исследования], разрабатывает и [V: производит] [ARG1: продукты передовых технологий] [ARGM-LOC: в аэрокосмической и оборонной промышленности], [C-ARG1: включая авиационные двигатели, авионику, авиационные конструкции, кибербезопасность] [ARGM-ADV: , ракеты, системы ПВО и беспилотники] .

Проблема в том, что я не могу найти какой-либо код для преобразования примерного предложения, подобного этому, в несколько кортежей формы (субъект, отношение, объект). В частности, особые типы тегов, такие как ARGM-LOC и ARGM-ADV, усложняют задачу.

Я уже просмотрел устаревший репозиторий Github https://github.com/gabrielStanovsky/supervised_oie_wrapper (который не совсем создает эти типы кортежей), и самой близкой к этому функцией, которую я смог найти в AllenNLP, был метод make_srl_string, но вывод по-прежнему требует постобработки для создания кортежей.

Есть ли код, который создает кортежи из модели AllenNLP Open IE? Если нет, не могли бы вы добавить это как функцию?

Подробное объяснение в выпуске github https://github.com/allenai/allennlp/issues/4857


person Michael Potter    schedule 04.12.2020    source источник


Ответы (1)


AllenNLP пока не имеет такой возможности, но я не думаю, что было бы сложно добавить ее в класс SRLPredictor. Если вы это сделаете, отправьте нам запрос на вытягивание!

person Dirk Groeneveld    schedule 12.12.2020
comment
Это не так просто, как кажется, потому что Subject и Object иногда могут быть ARG0, ARG1 и ARG2. Так что сделать из них тройки подлежащее, сказуемое, объект — это большая работа. Лингвистический вывод allenNLP отличного качества, но если вы хотите сделать тройки извлечения информации, это головная боль. - person blah; 22.04.2021
comment
Единственным непротиворечивым аргументом является предикат Verb, помеченный как V: , поскольку этот ярлык уникален. - person blah; 22.04.2021