识别python中的动词时态

Joh*_*ugo 4 python text-processing nlp machine-learning nltk

如何使用Python + NLTK来识别句子是指过去/现在/将来?

我只能使用POS标记吗?这似乎有点不准确,在我看来,我需要考虑句子上下文而不仅仅是单词.

对于另一个可以做到这一点的图书馆的任何建议?

fra*_*zzi 6

自己做这件事并不难. 这个表应该可以帮助你识别不同的动词时态,处理它们只需要解析nltk.pos_tag的结果(字符串)

我不确定你是否想要进入所有不规则的动词时态,比如'本来可以'等......但是如果你只想要现在/过去/将来这是一个非常容易解析的任务.

我不知道任何图书馆会自己做这件事,而且我一直想到训练一些模型来为我决定这个,但从来没有绕过它.

会有一定程度的错误,但不会很大.我建议解析所有动词以决定你想要如何处理时态,因为在句子中:我很高兴他会看到她.时态存在,但是有一个未来时态条款(他会看到她)所以这进入你的问题的语言学,你没有详细说明,但你明白了.


art*_*omp 6

POS标记 - 它为您提供了让您查看动词时态的标记 - 已经考虑了句子上下文,因此它解决了您的问题.通过背景准确.事实上,POS标签实际上并不适用于单词本身!从Ch看这个例子.给出句子中的上下文的情况下,NLTK书的第5部分允许NLTK区分名词和动词给出的同音异义词(即给出像许可这样的词,可以具有不同的含义作为动词和名词):

让我们看另一个例子,这次包括一些同音异义词:

  >>> text = nltk.word_tokenize("They refuse to permit us to obtain the refuse permit")
  >>> nltk.pos_tag(text)
  [('They', 'PRP'), ('refuse', 'VBP'), ('to', 'TO'), ('permit', 'VB'), ('us', 'PRP'),
  ('to', 'TO'), ('obtain', 'VB'), ('the', 'DT'), ('refuse', 'NN'), ('permit', 'NN')]
Run Code Online (Sandbox Code Playgroud)

请注意,拒绝和许可都显示为现在时动词(VBP)和名词(NN).例如,refUSE是一个动词,意思是"拒绝",而REFuse是一个名词,意思是"垃圾"(即它们不是同音异义词).因此,我们需要知道正在使用哪个单词才能正确发音.(因此,文本到语音系统通常执行POS标记.)