2012-07-03 62 views
0

我正在尝试开发一种解决方案,能够在封闭环境中提取某些操作。使用ANTLR浅解析

例如,在预定电影票的情况下,如果用户说:

“我想去电影院明天晚上,这将是卡萨布兰卡,我想是在最后一排,请”

我设计语法用于获取电影,所需的座位,日期和时间投影的名称等

不过,虽然我已经想过ANTLR开发这类解决方案,我真的不知道它是否具有这样的功能,我的意思是,如果我可以定义几个根符号。

回答

2

ANTLR不是很适合解析语言:他们太暧昧。改为尝试NLP。这里有一个natural language processing toolkits的列表。

+0

谢谢,我会看看这些替代品。 无论如何,是否有任何方法用ANTLR来识别某个句子中的某些动作? – asuka

+0

@adsuar,*“是否有任何方法可以用ANTLR来识别某个句子中的某些动作?”,但是,当然,NLP工具包可以做得更好。这些工具包带有可用于语言的语法的语法:使用ANTLR,您需要编写自己的语法(永远不会可靠地解析各种英语句子!)。 –

+0

就我所见到的软件列表而言,几乎所有软件都通过语料库进行重要的统计工作,而且我现在拥有很大的缺失或语料库。这就是为什么我想知道ANTLR的浅层解析**,因为我可以开发用于捕获某些概念的小文法。 – asuka

3

ANTLR有解决语法歧义的方法。这些方法在ANTLR 4中得到了改进,但是当涉及到处理模糊语言(尤其是人类语言)时,您将面临一个巨大的限制,这将不可避免地使ANTLR不适合执行此任务:

ANTLR最终解决了含糊不清的问题决定多个潜在选项中的一个具体选项是正确的解决方案。由于这个决议发生在ANTLR解析过程的很早阶段,所以在这个决策过程中(而不是涉及单独的语法的逻辑)合并语义逻辑是非常困难的。

编辑:有关ANTLR 4在NLP上下文中特别有趣的一点是,ANTLR 4使用augmented transition network作为其解析器的基础。在那里的某个地方,我知道可以修改它以用于自然语言处理,但迄今为止还没有弄清楚如何使它工作。参考资料:我开发了ANTLR 4运行时的optimized版本,该版本目前略微落后于参考分支,但今年夏天晚些时候我会迎头赶上。