【发布时间】:2013-11-26 19:06:07
【问题描述】:
如何使用 Python + NLTK 来识别句子是否指代过去/现在/未来?
我可以只使用 POS 标记来做到这一点吗?这似乎有点不准确,在我看来,我需要考虑句子上下文而不仅仅是单词。
对另一个可以做到这一点的图书馆有什么建议吗?
【问题讨论】:
标签: python machine-learning nlp nltk text-processing
如何使用 Python + NLTK 来识别句子是否指代过去/现在/未来?
我可以只使用 POS 标记来做到这一点吗?这似乎有点不准确,在我看来,我需要考虑句子上下文而不仅仅是单词。
对另一个可以做到这一点的图书馆有什么建议吗?
【问题讨论】:
标签: python machine-learning nlp nltk text-processing
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 标记。)
【讨论】:
自己做这件事不会太难。 This table 应该可以帮助您识别不同的动词时态,处理它们只需解析 nltk.pos_tag(string) 的结果
我不确定您是否想了解所有不规则动词时态,例如“可能是”等...但如果您只想要现在/过去/未来,这是一个非常简单的解析任务。
我不知道有哪个图书馆会自己做这件事,我一直想训练一些模型来为我做决定,但一直没有解决。
会有一定程度的误差,但不会很大。我建议解析所有动词以决定如何处理时态,因为在以下句子中: 我很高兴他会见到她。 时态存在,但有一个将来时从句([that] he will see her )所以这涉及到你的问题的语言学,你没有详细说明,但你明白了。
【讨论】: