2017-02-10 3 views
0

Мне нужно извлечь главные слова предложений (точнее, главные слова высшей фразы в предложении). Я использую сервер Stanford CoreNLP через py-corenlp, чтобы комментировать мои предложения. В наборе есть модификация алгоритма поиска головного слова Майкла Коллина, но я не нашел никакого способа использовать его через сервер. Я бы хотел не изобретать колесо, так что я могу добиться этого с помощью существующих инструментов в Python?Поиск головного слова в Python

Пример:

номер элементарных сущностей в 1 моль вещества известен как что?

(ROOT 
    (S 
    (NP 
     (NP (DT The) (NN number)) 
     (PP (IN of) 
     (NP 
      (NP (JJ elementary) (NNS entities)) 
      (PP (IN in) 
      (NP 
       (NP (CD 1) (NN mole)) 
       (PP (IN of) 
       (NP (DT a) (NN substance)))))))) 
    (VP (VBZ is) 
     (VP (VBN known) 
     (PP (IN as) 
      (NP (WP what))))) 
    (. ?))) 

«Число элементарных звеньев в 1 моль вещества» является высшим именная.

«number» - это головное слово фразы, которую я хочу извлечь.


EDIT: Добавлен пример.

+0

Пожалуйста, добавьте пример и что вы хотите;) – Ika8

ответ

0

Похоже, что проще использовать типизированные зависимости вместо синтаксического анализа. Ваше предложение будет ROOTed с глаголом, затем найдите зависимость nsubj или nsubjpas для этого глагола. Например:

root (ROOT-0 , known-13) <- Start with this one 
det (number-2 , The-1) 
nsubjpass (known-13 , number-2) <- Then this one 
case (entities-5 , of-3) 
amod (entities-5 , elementary-4) 
nmod (number-2 , entities-5) 
case (mole-8 , in-6) 
nummod (mole-8 , 1-7) 
nmod (entities-5 , mole-8) 
case (substance-11 , of-9) 
det (substance-11 , a-10) 
nmod (mole-8 , substance-11) 
auxpass (known-13 , is-12) 
case (what-15 , as-14) 
nmod (known-13 , what-15)