问题 使用NLTK检测英语动词时态


我正在寻找一种方法,在过去,现在和将来的时间里都有一个英文文本计数动词短语。现在我正在使用 NLTK,做一个POS(词性)标记,然后计数说'VBD'来过去时态。这虽然不够准确,所以我想我需要更进一步使用分块,然后分析VP块以获取特定的时态模式。有什么存在的吗?任何进一步的阅读可能会有所帮助?该 NLTK书 主要集中在NP-chunk上,我可以找到关于VP-chunks的很少信息。


12456
2017-08-08 11:31


起源

你的逻辑有一个缺陷。如果一个chunker可以检测到NP,那么它必须能够检测到VP。 - Tim McNamara
当然,但我最感兴趣的是进一步的VP分析 - 如何在不同的时态之间做出改变。 - Michael Pliskin


答案:


确切的答案取决于你打算使用哪个chunker,但列表推导会带你走很长的路。这可以使用不存在的块来获取动词短语的数量。

len([phrase for phrase in nltk.Chunker(sentence) if phrase[1] == 'VP'])

您可以采用更细粒度的方法来检测时态数。


9
2017-08-09 05:26



感谢指针,这就是我要使用的 - 我的下一个问题是是否存在检测时态模式的东西。对于每个副总裁,我想知道它是什么时态。 - Michael Pliskin
我实际上设法用这种方法解决了我的问题,因此将其标记为已接受的答案。以下文章非常有用: streamhacker.com/2009/02/23/chunk-extraction-with-nltk - Michael Pliskin
嗨,迈克尔,很高兴听到事情对你有用! - Tim McNamara


你可以使用 伯克利分析师 要么 斯坦福分析师。但我不知道是否有可用的Python接口。


1
2017-08-09 03:01



非常感谢,这可能是一个选择 - 但是由于我已经大量使用NLTK,切换可能需要做很多工作。不过会看。 - Michael Pliskin
NLTK中有斯坦福分析器的接口。您可以按如下方式使用它: tagger = nltk.tag.stanford.POSTagger('models/german-fast.tagger', 'stanford-postagger.jar') 您可能必须首先将字符串编码为UTF-8(至少对于德语模型)。 - Suzana
伯克利拼写错误。我不能建议错误修复答案。 - Streeter