如何用javascript检测被动语态句子

时间:2014-12-26 06:55:26

标签: javascript text

被动语态中的句子是行动的实施者被放在最后的句子,并且动作的接收者在开始时,与活动语音中的句子相反。例如,

  约翰接球了。

处于主动语态,但

  

球被约翰抓住了。

处于被动语态。英语SE上的This answer为一个被动句子提供了4个必要条件,这些条件是一个条款具有及物动词的过去分词,没有直接宾语,辅助/帮助动词(任何形式) )。为了我的目的,我们可以忽略第四个条件,因为编码很难,大多数句子都属于这个类别。
还有一些事项需要注意:

  • 被动句经常(但并非总是)具有介词短语(" X"),其中X是句子活动版本开头的主语。
  • 句子可以有几个以逗号或分号等分隔的子句,每个子句都有自己的声音。例如,
      

    当钟声响起时(校长),吉米退出了课堂。

来自"的第一个条款"逗号是被动的,第二个是活动的。另外,句子很好,没有括号中的部分,指的是我的第一点 虽然这不是严格意义上的,但我们可以将每组带有动词的单词和至少三个由一些标点符号分隔的单词视为一个子句。请考虑您有一个包含文本中每个子句的数组(因此您不必担心提取子句)。

我的问题是,"我们如何使用JavaScript识别被动句?" 我已经考虑了一段时间,尝试了几次失败,但我无法走得太远。如果它有帮助,我至少需要近似文本中被动句子百分比的原因是因为我试图使用stylometry来分析文本作者的特征;被动句子的使用,尤其是某些短语的频率,就是这样一种特征。

1 个答案:

答案 0 :(得分:3)

有趣。假设我们有一个包含所有子句的数组,我们只需要找到一种方法来编码你引用的4 necessary conditions。该条款必须具有:

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

1)如果我们有一个辅助动词词典,这是一块蛋糕。我们还可以将每个条款与动词词典和检查是否有2个或更多动词(更有可能是一个辅助动词)。

2)同样,我们需要在子句中找到动词并通过一些检查来运行它们。可能会查看结尾字符以确定它是被动的。

3)查找子句是否包含直接对象会有点简单。检查名词及其相对于动词的原因位置。

4)类似于3;检查名词,如果只有一个,我们通过这方面的机会很大。

显然它有点棘手,而且还有更多我们必须要做的事情。我认为我们能做的最基本的事情(授予它的准确性非常糟糕)是:

  • 将条款分解为动词&名词
  • 检查名词数量&他们相对于动词的位置
  • 检查动词结尾是否符合常见的被动动词结尾(即' -ed')

这是一个有趣且非常棘手的问题,我很好奇你能用这种方法获得的准确度。