【问题标题】:Identifying verb tenses in python识别python中的动词时态
【发布时间】:2013-11-26 19:06:07
【问题描述】:

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

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

对另一个可以做到这一点的图书馆有什么建议吗?

【问题讨论】:

    标签: python machine-learning nlp nltk text-processing


    【解决方案1】:

    POS 标记 - 它为您提供标签,让您查看动词的时态 - 已经 考虑到句子上下文,因此它解决了您的问题。通过上下文的准确性。事实上,词性标注本身实际上并不能与单词一起正常工作!看看Ch. 5 of the NLTK book 的这个例子,给定句子中的上下文,让 NLTK 在给定同音异义词的情况下区分名词和动词(即给定一个像 permit 这样的词,它可以作为动词和名词):

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

      >>> 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')]
    

    注意,reject 和 permit 都作为现在时动词出现 (VBP) 和名词 (NN)。例如。 refUSE 是动词,意思是“拒绝”,而 REFuse 是一个名词,意思是“垃圾”(即它们不是同音字)。因此, 我们需要知道使用哪个词来发音 文字正确。 (出于这个原因,文本到语音系统通常 执行 POS 标记。)

    【讨论】:

      【解决方案2】:

      自己做这件事不会太难。 This table 应该可以帮助您识别不同的动词时态,处理它们只需解析 nltk.pos_tag(string) 的结果

      我不确定您是否想了解所有不规则动词时态,例如“可能是”等...但如果您只想要现在/过去/未来,这是一个非常简单的解析任务。

      我不知道有哪个图书馆会自己做这件事,我一直想训练一些模型来为我做决定,但一直没有解决。

      会有一定程度的误差,但不会很大。我建议解析所有动词以决定如何处理时态,因为在以下句子中: 我很高兴他会见到她。 时态存在,但有一个将来时从句([that] he will see her )所以这涉及到你的问题的语言学,你没有详细说明,但你明白了。

      【讨论】:

      • 嗨弗兰基。根据这张表,我应该将哪些标签视为将来时?
      • 简单。只需在动词前寻找 'will' (这是一个 'modal' (MD)) Ex from nltk.pos_tag() : [('you', 'PRP'), ('will', 'MD'), ( '去', 'VB')]
      • 约翰,你应该熟悉我们格式化英语将来时的方式,这样你才能正确解析。 see here 一定要查看简单未来、未来连续、未来完美和未来完美连续。如果你注意到了,诸如 not 之类的否定也需要忽略!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多