检测标题中的被动语态

数据挖掘 Python nlp 斯派西
2022-03-11 16:00:55

为了检测句子中的被动语态,我们可以使用 spacy 模块对句子中的每个标记进行标记,然后构建一个分类器,根据常规语法规则将其分类为被动语态或主动语态,例如

如果一个从句具有以下所有条件,那么它是被动语态:

  • 助动词的一种形式(通常是 be 或 get)
  • 及物动词的过去分词
  • 没有直接对象
  • 动词短语的主语是正在发生动作或状态发生变化的实体

新闻标题的写法不同。他们不遵循传统的语法规则。如何使用 spacy 来检测被动语态中的标题?

例如,如果我有这个标题,“违反冠状病毒限制的教堂被烧毁”,它的词性标签是['ROOT', 'dobj', 'compound', 'compound', 'nsubjpass', 'auxpass', 'relcl', 'prep', 'pobj']. 我们可以将其归类为被动,基于它具有名义主语(被动)且没有直接宾语的事实。

然而,如果我有这个标题,“雷沙德布鲁克斯被亚特兰大警察枪杀”,它的词性标签是['compound', 'ROOT', 'advmod', 'ROOT', 'prep', 'det', 'compound', 'pobj']. 我们不能使用任何标准将其归类为被动语态,因为标题已删除辅助语态,而 spacy 未检测到名义主题(被动语态)。

1个回答

所以,你的任务是从句子中检测被动语态。目前,您已经定义了一些检测被动语态的规则,并且您注意到您定义的规则有一些例外。

因此,开发一个模型来预测句子是被动(或主动)的概率是一个好主意。

您可以通过使用循环神经网络 (RNN) 或 LSTM将句子编码为单词序列(转换为单词嵌入)来实现这一点。此编码会将单词编码为“隐藏表示”。然后,可以使用带有最终 softmax 输出层的神经网络对隐藏表示进行解码,然后输出句子分别以被动语态和主动语态书写的概率。

由于这将是一个有监督的学习问题,因此您需要标记被动语态和主动语态句子的示例。