从句子中提取"有用的"信息?

Leg*_*end 8 language-agnostic nlp machine-learning nltk

我目前正在尝试理解这种形式的句子:

The problem was more with the set-top box than the television. Restarting the set-top box solved the problem.

我是自然语言处理的新手,并开始使用Python的NLTK包来弄脏我的手.但是,我想知道是否有人能够概述实现这一目标所涉及的高级步骤.

我要做的是在这种情况下确定问题是什么,set-top box以及在这种情况下所采取的操作是否解决了问题,yes因为重新启动修复了问题.因此,如果所有句子都是这种形式,我的生活会更容易,但因为它是自然语言,句子也可以是以下形式:

I took a look at the car and found nothing wrong with it. However, I suspect there is something wrong with the engine

所以在这种情况下,问题在于car.由于存在这个词,所采取的行动并没有解决问题suspect.潜在的问题可能在于engine.

我不是在寻找一个绝对的答案,因为我怀疑这是非常复杂的.我正在寻找的更多是一个高级概述,它将指引我朝着正确的方向发展.如果有一种更容易/替代的方法来做到这一点,那也是受欢迎的.

Rug*_*man 3

也许,如果句子格式良好,我会尝试依赖项解析(http://nltk.googlecode.com/svn/trunk/doc/api/nltk.parse.malt.MaltParser-class.html#raw_parse)。这将为您提供句子成分的图表,您可以了解词汇项之间的关系。稍后,您可以从依赖解析器的输出中提取短语(http://nltk.googlecode.com/svn/trunk/doc/book/ch08.html#code-cfg2),这可以帮助您提取一个句子,或句子中的动词短语。

如果您只想从句子中获取短语或“块”,您可以尝试块解析器(http://nltk.googlecode.com/svn/trunk/doc/api/nltk.chunk-module.html)。您还可以进行命名实体识别(http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/)。它通常用于提取地点、组织或人名的实例,但它也适用于您的情况。

假设您解决了从句子中提取名词/动词短语的问题,您可能需要将它们过滤掉,以减轻领域专家的工作(太多的短语可能会让法官不知所措)。您可以对短语进行频率分析,删除通常与问题领域不相关的非常频繁的短语,或者编制白名单并保留包含预定义单词集的短语等。