Выделение статьи с использованием анализатора Stanford

У меня сложное предложение, и мне нужно разделить его на основное и зависимое предложение. Например, для предложения ABC ссылается на то, что химические добавки запрещены во многих странах и считают, что они могут быть запрещены и в этом штате. Требуется раскол

1)ABC cites the fact   
2)chemical additives are banned in many countries   
3)ABC feels they may be banned in this state too.    

Я думаю, что я мог бы использовать дерево или зависимости Stanford Parser, но я не уверен, как исходить отсюда.

Дерево

(ROOT
  (S
    (NP (NNP ABC))
    (VP (VBZ cites)
      (NP (DT the) (NN fact))
      (SBAR (IN that)
        (S
          (NP (NN chemical) (NNS additives))
          (VP
            (VP (VBP are)
              (VP (VBN banned)
                (PP (IN in)
                  (NP (JJ many) (NNS countries)))))
            (CC and)
            (VP (VBZ feels)
              (SBAR
                (S
                  (NP (PRP they))
                  (VP (MD may)
                    (VP (VB be)
                      (VP (VBN banned)
                        (PP (IN in)
                          (NP (DT this) (NN state)))
                        (ADVP (RB too))))))))))))
    (. .)))

и анализ разваленной зависимости

nsubj(cites-2, ABC-1)  
root(ROOT-0, cites-2)  
det(fact-4, the-3)   
dobj(cites-2, fact-4)  
mark(banned-9, that-5)  
nn(additives-7, chemical-6)  
nsubjpass(banned-9, additives-7)   
nsubj(feels-14, additives-7)   
auxpass(banned-9, are-8)   
ccomp(cites-2, banned-9)   
amod(countries-12, many-11)  
prep_in(banned-9, countries-12)   
ccomp(cites-2, feels-14)    
conj_and(banned-9, feels-14)    
nsubjpass(banned-18, they-15)   
aux(banned-18, may-16)    
auxpass(banned-18, be-17)    
ccomp(feels-14, banned-18)   
det(state-21, this-20)    
prep_in(banned-18, state-21)    
advmod(banned-18, too-22)   

Ответ 1

Вероятно, лучше, если вы в первую очередь используете дерево разбора на основе элементов, а не зависимости. Зависимости будут полезны, но только после завершения основной работы! Я собираюсь объяснить это в конце моего ответа.

Это объясняется тем, что анализ синтаксического анализа основан на грамматической структуре фразы, что наиболее важно, если вы хотите извлечь предложения из предложения. Это может быть сделано и с использованием зависимостей, но в этом случае вы, по сути, будете восстанавливать структуру фразы - начиная с корня и глядя на зависимые узлы (например, ABC и facts являются номинальным объектом и прямым объектом глагол cites и т.д.).

Однако полезно визуализировать дерево разбора. В вашем примере эти предложения обозначаются тегом SBAR, который является предложением, введенным (возможно, пустым) субординирующим соединением. Все, что вам нужно сделать, это следующее:

  • Определите узлы без полномочий root в дереве синтаксического анализа
  • Удалить (но сохранить отдельно) поддеревья, внедренные в эти клаузуальные узлы из главного дерева.
  • В главном дереве (после удаления поддеревья на шаге 2) удалите любые висячие предлоги, подчиненные союзы и наречия.

В шаге 3, что я подразумеваю под "зависанием", является то, что любые предлоги и т.д., зависимость которых была удалена на этапе 2. Например, из "ABC ссылается на то, что" вам нужно удалить предлог/соединение "что", потому что его зависимый node "запрет" был удален на шаге 2. Таким образом, у вас будет три независимых предложения:

  • химические добавки запрещены во многих странах (удаление SBAR на этапе 2).
  • они могут быть запрещены и в этом состоянии (удаление SBAR на шаге 2)
  • ABC ссылается на факт (шаг 3)

Единственная проблема здесь - это соединение ABC. Для этого обратите внимание, что как "запрещенные", так и "чувственные" являются дополнениями глагола "цитирует", и, следовательно, имеют тот же предмет, который является "ABC"! И вы сделали. Когда это будет сделано, вы получите четвертое предложение: "ABC чувствует", что вы можете или не хотите включать в свой окончательный результат.

Список всех клаузуальных тегов (и, фактически, всех тегов Penn Treebank), см. в этом списке: http://www.surdeanu.info/mihai/teaching/ista555-fall13/readings/PennTreebankConstituents.html

Для онлайн-визуализации синтаксического анализа вы можете использовать онлайн-версию парсера Berkeley. Это помогает в формировании лучшей интуиции. Здесь изображение, сгенерированное для вашего примера: Berkeley Parser Tree

Предостережение

  • Даже самые лучшие парсеры не всегда правильно разбирают предложения, поэтому имейте это в виду.
  • Кроме того, многие сложные предложения включают right node raise, который почти никогда не разбирается в большинстве парсеров.
  • Вам может потребоваться немного изменить алгоритм, если предложение имеет пассивный голос.

Помимо этих трех ошибок, приведенный выше алгоритм должен работать довольно точно.