2016-07-22 1 views
2

Есть ли способ, чтобы отделить сложное предложение с несколькими темами, как:Разделив сложное предложение несколькими субъектами на несколько предложений с одним предметом каждый?

  • Я человек, а ты человек. => Я человек. Вы человек.
  • Собака иногда ест сыр, и это лабрадор. => Собака иногда ест сыр. Это лабрадор.

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

ответ

2

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

Примеры:

(1) Я человек, и ты человек.

(ROOT 
    (S 
    (S 
     (NP (PRP I)) 
     (VP (VBP am) 
     (NP (DT a) (NN human)))) 
    (CC and) 
    (S 
     (NP (PRP you)) 
     (VP (VBP are) 
     (NP (DT a) (NN human)))) 
    (. .))) 

=> Здесь вы можете увидеть, что S -> S CC S. Это означает, что оба аргумента, связанные с CC, являются самими предложениями. Таким образом, вы можете напрямую разделить их на CC.

=> Вы получите 2 предложения.

1) Я человек 2) Вы человек

(2) Джон пошел в отель и пообедал.

(ROOT 
    (S 
    (NP (NNP John)) 
    (VP 
     (VP (VBD went) 
     (PP (TO to) 
      (NP (NNP Hotel)))) 
     (CC and) 
     (VP (VBD had) 
     (NP (NN lunch)))) 
    (. .))) 

=> Здесь VP -> VP VP CC, означает соединительно используется для соединения двух глагольных групп, и они имеют общие темы. Таким образом, вы можете использовать один и тот же объект в обоих предложениях и добавить один VP.

=> Результат будет,

1) Джон пошел в отель 2) Джон пообедали

(3) Джон съел яблоко и банан. Джон и Майк съели яблоко.

(ROOT    #John ate apple and banana. 
    (S 
    (NP (NNP John)) 
    (VP (VBD ate) 
     (NP (NN apple) 
     (CC and) 
     (NN banana))) 
    (. .))) 

(ROOT    #John and Mike ate apple. 
    (S 
    (NP (NNP John) 
     (CC and) 
     (NNP Mike)) 
    (VP (VBD ate) 
     (NP (NN apple))) 
    (. .))) 

=> Здесь Н.П. -> НН СС Н.Н. и NP-> ННП CC ННП что означает СС соединяет два NNS/NNPs оба могут быть использованы по отдельности, а также. Таким образом, вы можете разделить эти NNs/NNP.

=> Вы получите предложения, как,

1) Джон съел яблоко 2) Джон съел банан [и]

1) Джона в яблоко 2) Майк съел яблоко

0

вы должны работать над ним. Для этого вы можете использовать POStagger и Parse tree.

here «s, как извлечь существительные, прилагательные и глаголы, используя opennlp

Это легко установить и использовать, вы можете следовать этой blog

теперь, когда вы знаете, как извлечь часть предложения с использованием POS , вам должно быть легче достичь того, чего вы хотите.

надеюсь, что это поможет!

Смежные вопросы