把一个有多个主语的复句分成多个句子,每个句子有一个主语

  • 本文关键字:句子 主语 有一个 一个 nlp
  • 更新时间 :
  • 英文 :


有没有一种方法可以将一个包含多个主题的复句分开,比如:

  • 我是人,你也是人。=>我是一个人。你是一个人
  • 这只狗有时吃奶酪,它是拉布拉多犬。=>狗有时吃奶酪。它是一只拉布拉多犬

我曾考虑使用解析树将其分离,并识别多个主题,但我不确定如何创建一个能够普遍可靠地做到这一点的算法。

您需要识别连接词及其类型(隐式/显式连接词),并使用句子的选区解析树来识别连接词的参数。

示例:

(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.中分离出来

=>你会得到两个句子。

1) 我是人类你是人类

约翰去饭店吃午饭

(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-CC-VP表示连接词用于连接两个动词组,并且它们有共同的主语。所以你们可以在两个句子中使用相同的主语,并添加一个VP。

=>结果是,

1) 约翰去了酒店约翰吃了午饭

约翰吃了苹果和香蕉。约翰和迈克吃了苹果

(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->NN CC NNNP->NNP CC NNP,这意味着CC连接两个NN/NNP,两者也可以单独使用。因此,您可以拆分这些NN/NNP。

=>你会得到像这样的句子

1) 约翰吃了苹果约翰吃了香蕉和

1) 约翰在吃苹果

你必须处理它。你可以使用POStagger和Parse树来实现这一点。

以下是如何使用opennlp 提取名词、形容词和动词

它很容易设置和使用,你可以关注这个博客

既然你知道了如何使用POS提取句子的部分,那么实现你想要的一定会更容易。

希望这能有所帮助!

最新更新