Я хотел бы извлечь чистые тройки в форме кортежа (субъект, отношение, объект) из модели предиктора 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 а>