将具有多个主题的复合句分成多个句子,每个句子一个主题?

时间:2016-07-22 20:55:45

标签: nlp

有没有办法将复合句与多个科目分开,如:

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

我正在考虑使用解析树将其分开并识别多个主题,但我不确定如何创建一个能够通常可靠地执行此操作的算法。

2 个答案:

答案 0 :(得分: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 CC VP ,表示连词用于连接两个动词组,并且它们具有共享主题。因此,您可以在两个句子中使用相同的主题并添加一个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 - > NN CC NN NP-> NNP CC NNP 表示CC连接两个NN / NNP也可以单独使用。所以你可以拆分这些NN / NNP。

=>你会得到像

这样的句子

1)John吃了苹果2)John吃了香蕉[和]

1)约翰在苹果2)迈克吃了苹果

答案 1 :(得分:0)

您可以使用它。您可以使用POStagger和Parse树。

here如何使用opennlp提取名词,形容词和动词

设置和使用都很简单,您可以按照blog

进行操作

现在你知道如何使用POS提取句子的部分内容,它必须更容易实现你想要的。

希望这有帮助!