nlp - 将一个有多个主语的复合句分成多个各有一个主语的句子?

标签 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中拆分它们。

=> 您将得到 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 NNNP-> NNP CC NNP 表示 CC 连接两个 NN/NNP,也可以单独使用。因此您可以拆分这些 NN/NNP。

=> 你会得到类似这样的句子,

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

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

关于nlp - 将一个有多个主语的复合句分成多个各有一个主语的句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38535091/

相关文章:

tensorflow - 我应该将分类输出转换为整数吗?如何转换?

machine-learning - 如何将tensorflow的word2vec保存在文本/二进制文件中以供以后使用kNN输出?

python - Word2vec - 获得相似度等级

python - 如何将tfidf特征与自制特征结合起来

nlp - 句子的 RDF 表示

tensorflow - 我的模型的损失值缓慢下降。如何在训练时更快地减少我的损失?

ios - 语言标注器错误地标注为 'OtherWord'

python - 有没有办法将 Google Colab 代码转换为网络服务或休息 API

python-3.x - nltk.corpus - 'getset_descriptor' 对象没有属性 'setdefault'

python - 自然语言处理 : text corpus format for word2vec