有没有办法将具有多个主语的复合句分开,例如:
- 我是人类,你也是人类。 => 我是一个人。你是一个人。
- 这只狗有时会吃奶酪,它是一只拉布拉多犬。 => 狗有时会吃奶酪。这是一只拉布拉多犬。
我正在考虑使用解析树将其分离并识别多个主题,但我不确定如何创建一个通用且可靠的算法。
最佳答案
您需要识别连接词及其类型(隐式/显式连接词)并使用句子的选区分析树来识别连接词。
示例:
(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) 约翰吃了苹果 2) 约翰吃了香蕉[和]
1) 约翰在苹果 2) 迈克吃了苹果
关于nlp - 将一个有多个主语的复合句分成多个各有一个主语的句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38535091/