如何确定主语,宾语等词?

时间:2009-08-23 10:03:23

标签: artificial-intelligence nlp

我正在尝试通过将句子分成更小的部分来实现可以确定句子含义的应用程序。因此,我需要知道哪些单词是主题,对象等,以便我的程序可以知道如何处理这句话。

5 个答案:

答案 0 :(得分:11)

这是一个开放的研究问题。您可以在维基百科上查看概述http://en.wikipedia.org/wiki/Natural_language_processing。考虑像“时间过得像箭一样,果蝇像香蕉”这样的短语 - 毫不含糊地分类单词并不容易。

答案 1 :(得分:9)

你应该看看Natural Language Toolkit,这正是这类事情。

请参阅本手册的这一部分:Categorizing and Tagging Words - 这是一个摘录:

>>> text = nltk.word_tokenize("And now for something completely different")
>>> nltk.pos_tag(text)
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),
('completely', 'RB'), ('different', 'JJ')]

“我们在这里看到是CC,一个协调连词; 现在完全是RB或副词; < strong> for 是IN,介词; 某事是NN,名词; 不同是JJ,一个形容词。“

答案 2 :(得分:2)

我想没有“简单”的方法来做到这一点。你必须建立一个语言分析器(这是非常可能的),然而,一种语言作为许多例外情况。这就是使语言分析器难以实施的原因。

答案 3 :(得分:2)

您提到的具体问题,主题的标识和条款的对象,由syntactic parsing完成。通过使用斯坦福大学开发的this demo解析软件,您可以很好地了解解析的工作原理。

但是,句法分析并不能确定句子的含义,只能确定句子的结构。一般来说,确定意义(语义)是一个非常难的问题,并且没有任何技术能够以与人类相同的方式真正“理解”句子。虽然没有通用解决方案,但您可以在非常有限的主题领域中执行某些操作。例如,您想要分析一个狭窄主题的数据是否与人们谈论的“事物”有关?

答案 4 :(得分:2)

StompChicken已经给出了这个问题的正确答案,但我想补充一点,主语和宾语的概念被称为语法关系,而布里斯科和卡罗尔的RASP是一个可以解决问题的解析器。从解析中推断出关系列表的额外步骤。

以下是demo page的一些示例输出。它是一个句子输出的摘录,开头“我们描述了一个强大的,准确的,与领域无关的方法......”:

(| ncsubj | | describe:2_VV0 | | We:1_PPIS2 | _)
(| dobj | | describe:2_VV0 | | approach:7_NN1 |)