您认为Google日历中的“快速添加”功能如何运作?

时间:2010-06-02 16:07:55

标签: parsing nlp google-calendar-api

考虑一个项目可能会使用类似的功能来解决“快速添加”如何将自然语言解析成可以用某种语义层次理解的东西。我有兴趣更好地理解这一点,并想知道你对如何实现这一点的想法。


如果您不熟悉“快速添加”的内容,请查看Google's KB


6/4/10更新
关于“自然语言分析”(NLP)的其他研究产生的结果比我在“快速添加”之类的实际实现中的结果要广泛得多。鉴于此功能需要特定类型的输入而不是真正的自由格式文本,我认为这是一个更窄的NLP实现。如果有人能够提出我可以研究的更为狭隘的话题,而不是整个NLP的广度,我们将不胜感激。

那就是说,我找到了一个很棒的collection of resources about NLP,包括这个伟大的FAQ

2 个答案:

答案 0 :(得分:3)

我首先要确定一种标准方式来表示我感兴趣的所有信息:事件名称,开始/结束时间(和日期),访客列表,位置。例如,我可能会使用这样的XML表示法:

<event>
    <name>meet Sam</name>
    <starttime>16:30 07/06/2010</starttime>
    <endtime>17:30 07/06/2010</endtime>
</event>

然后我的目标是建立一个关于日期的日记条目语料库,用XML表格注释。我该如何收集数据?好吧,如果我是谷歌,我可能会有各种各样的方式。因为我是我,所以我可能首先写下我能想到的所有方式来表达这种东西,然后手工注释它。如果我可以通过浏览朋友的电子邮件等等来增加这一点,那就更好了。

现在我有一个语料库,它可以作为一组单元测试。我需要编写解析器代码来适应测试。解析器应该将一串自然语言翻译成我的注释的逻辑形式。首先,它应该将字符串拆分为其组成单词。这称为令牌化,并且有可用的现成软件。 (例如,请参阅NLTK。)要解释单词,我会在数据中查找模式:例如,“at”或“in”后面的文本应标记为位置; 'for X minutes'意味着我需要将这个分钟数添加到开始时间以获得结束时间。统计方法在这里可能有点过分 - 最好创建一系列手工编码规则,表达你自己对如何解释这个领域中的单词,短语和结构的知识。

答案 1 :(得分:0)

似乎这个问题确实没有狭隘的方法。我想避免不得不拉动整个NLP来找出解决方案,但我还没有找到任何替代方案。如果我以后找到一个非常好的解决方案,我会更新这个。