Python - Извлечение отношения сущностей (имен существительных) из неструктурированного текста (NLP) с использованием NLTK - PullRequest
0 голосов
/ 17 мая 2018

Из неструктурированного текста я извлек все необходимые объекты и сохранил их в словаре, используя POS-теги Стэнфорда. Теперь я хочу извлечь отношение между ними, чтобы построить мою собственную онтологию в форме триплетов (Entity1, Entity2, отношение). Я пробовал анализатор зависимостей Стэнфорда, но не знаю, как извлечь эти триплеты.

Например: Передние диффузоры содержат поворотные клапаны, которые расположены между граничными стенками воздуховодов.

Я хочу иметь отношение (передние диффузоры, поворотные клапаны, составляют); (поворотные заслонки, граничные стенки воздуховодов, расположение);

Другой пример: грузовой кузов содержит контейнер, имеющий пол, верхнюю стенку, переднюю стенку, боковые стенки и заднюю дверь.

Мои ожидаемые отношения (груз, контейнер, контейнер); (контейнер, пол, есть); (контейнер, верхняя стенка, есть); (контейнер, передняя стенка, есть); (контейнер, боковые стенки, есть); (контейнер, задняя дверь, есть).

Что я могу сделать с анализатором зависимостей Стэнфорда для достижения моей цели? Это означает, как перемещаться по дереву разбора зависимостей и получать результаты?

1 Ответ

0 голосов
/ 18 мая 2018

Вы на правильном пути, используя парсеры зависимостей.Вам просто нужно углубиться немного глубже, чтобы извлечь структуру, которую вы ищете.Из того, что я вижу, анализатор зависимостей имеет всю информацию, которую вы ищете:

 (ROOT
  (S
    (NP (DT The) (JJ front) (NNS diffusers))
    (VP (VBP comprise)
      (NP
        (NP (JJ pivotable) (NNS flaps))
        (SBAR
          (WHNP (WDT that))
          (S
            (VP (VBP are)
              (VP (VBN arranged)
                (PP (IN between)
                  (NP
                    (NP (NN boundary) (NNS walls))
                    (PP (IN of)
                      (NP (NN air) (NNS ducts)))))))))))
    (. .)))

Вот что вам действительно нужно прямо из самого синтаксического анализатора:

nsubj(comprise-4, diffusers-3)
root(ROOT-0, comprise-4)
amod(flaps-6, pivotable-5)
dobj(comprise-4, flaps-6)

ПростоИзучите разные предложения, и вы сможете извлечь информацию в любом формате, который хотите получить.

...