代码之家  ›  专栏  ›  技术社区  ›  tucaz

NLP需要什么?

  •  1
  • tucaz  · 技术社区  · 14 年前

    假设我对所有的事情都一无所知,并且我今天开始编程,你认为我需要学习什么才能开始使用自然语言处理?

    我一直在努力使用一些字符串解析方法,但到目前为止,它只是让我恼火,让我创建了丑陋的代码。我正在寻找一些关于如何创建一个记住牛奶API的新想法,比如解析用户的输入,以便为快速数据输入提供一个输入表单,而不是基于字段,而是简单的一行短语。

    编辑 :rtm是TODO列表系统。因此,为了输入任务,不需要在每个字段中键入值(任务名称、截止日期、位置等)。您可以简单地输入一个短语,比如“星期一下午2点在何处预约牙医”,它将对其进行解析并为您填充所有字段。

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

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

    非常感谢你给我任何指示!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Akshay Bhat    14 年前

    请看一下NLTK,它是对NLP感兴趣的初学者的一个很好的资源。 http://www.nltk.org/
    它是用Python编写的,这是一种更简单的编程语言。

    现在我了解了你的问题,下面是我的解决方案:

    您可以开发一种受限词汇表,其中所有金额必须以$符号结束,或者任何时间必须以00:00和/或AM/PM结束,关于检测项目,您可以使用本体中的对象列表,如开放cyc。open cyc可以为您提供所有对象的列表,如啤酒、咖啡、面包和牛奶等。这将帮助您在短时间内检测到对象。不过,这将是一个非常模糊的方法。

        2
  •  3
  •   Aaron Novstrup    14 年前

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

    在您的示例中,标记化为您提供“牙医”、“预约”、“星期一”、“时间”、“下午2点”、“地点”、“地点”。您的工具将认识到“星期一”是一周中的一天,“下午2点”是一个时间等。最后,您可以找到[时间]和[地点]这样的模式,并使用这些模式填充字段。

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