2010-08-09 69 views
1

假设我对一切都一窍不通,而且我正在开始编程今天,为了开始使用自然语言处理,我认为你需要什么来学习?NLP需要什么?

我一直在努力使用一些字符串解析方法,但到目前为止,它只是令人讨厌我,使我创建丑陋的代码。我正在寻找一些关于如何创建Remember The Milk API的新想法,以便解析用户的输入,以便为不基于字段的快速数据输入提供输入表单,而只需简单的一行代码即可。

编辑:RTM是待办事项列表系统。所以为了输入一个任务,你不需要输入每个字段来填充值(任务名称,截止日期,位置等)。你可以简单地输入一个短语,比如“在WhateverPlace下午2点的牙医预约星期一”,它将解析它,并为你填充所有字段。

我没有任何技术限制,因为它将成为一个个人项目,但我更熟悉.NET世界。其实,我不确定这是语言问题,但如果有必要,我更愿意学习一门新语言来完成它。

我的项目与个人理财有关,所以短语更像是“昨晚和我的女友在咖啡上消费了10美元”,它会填充位置,金额$$$,标签和其他东西。

非常感谢您为我提供的任何指导!

+0

我保证我试图帮助,而不是迂腐 - NLP代表“自然语言处理”。 – 2010-08-09 22:10:26

+0

您需要更好地指定您要分析的内容。我不知道RtM解析什么,也不知道你想解析什么,但这不是一个NLP项目,而是一个非常小的NLP子集,可能更简单一些。 – msw 2010-08-09 22:12:01

+0

如果您提供有关您的要求的更多详细信息,它可能会有所帮助。例如,你是否仅限于某些编程语言?您的程序是否需要严格处理松散约束的输入,或者您是否期望它的语法高度受限? – 2010-08-09 22:15:06

回答

1

看看NLTK,它对于对NLP感兴趣的初学者程序员来说是一个很好的资源。 http://www.nltk.org/
它是用python编写的,它是一种更简单的编程语言。

现在,我明白你的问题,这里是我的解决方案:

可以开发出一种受限制的词汇,所有金额必须结束难熬$符号或任何时间必须在00:00和形式/或以AM/PM结尾,关于检测项目,您可以使用本体对象列表,例如Open Cyc。 Open Cyc可以为您提供所有对象的列表,如啤酒,咖啡,面包和牛奶等,这将帮助您在短语中检测对象。它仍然是一个非常模糊的方法。

+0

两个简单的问题。你是否认为我需要一个完整的NLP方法来做类似的事情?此资源是否也适用于非英语语言? – tucaz 2010-08-09 22:02:56

+1

取决于您想实现多少深度解析。解析自由形式的文本,即使是短语也很困难,你需要某种NLP模型。但是,如果你限制用户使用较小的词汇量,比如短语中的数字总是时间或者任何数字后面必须跟着一个$符号,那么我认为你不需要NLP解决方案。这取决于...有NLP模型可用于其他语言,我认为NLTK可能会处理至少所有欧洲语言。 – 2010-08-09 22:59:51

3

这似乎并不需要完整的NLP。简单的基于模式的information extraction可能就足够了。基本思想是标记文本,然后识别/分类某些关键字,最后识别模式/短语。

在你的例子中,标记赋予你“牙医”,“约会”,“星期一”,“at”,“2PM”,“in”,“WhateverPlace”。你的工具会识别出“星期一”是一周中的某一天,“2PM”是一个时间等等。最后,你可以找到[at] [TIME]和[in] [Place]等模式并使用它们来填充田野。

GATE这样的框架可能会有帮助,但即使这可能是一个比你真正需要更大的锤子。