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

时间:2011-06-26 04:33:51

标签: 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

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

2 个答案:

答案 0 :(得分:4)

你真正希望的最好的是Naive Bayesian Classifier,其中有足够大的(可能比你有的)训练集,并且愿意容忍相当多的错误判断。

寻求NLP的圣杯必然会让你有点不满意。

答案 1 :(得分:3)

可能,如果句子格式正确,我会试验dependency parsing(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/)。它通常用于提取地点,组织或人名的实例,但它也适用于您的情况。

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