我正在尝试开发一种能够在封闭上下文中提取某些操作的解决方案。
例如,在预订电影票的情况下,如果用户说:
“我想明天晚上去看电影,去卡萨布兰卡,我想坐在最后一排。”
我设计了用于获取电影名称、所需座位、放映日期和时间等的语法。
然而,虽然我考虑过 ANTLR 来开发这样的解决方案,但我真的不知道它是否有这样的功能,我的意思是,如果我可以定义几个根符号。
我正在尝试开发一种能够在封闭上下文中提取某些操作的解决方案。
例如,在预订电影票的情况下,如果用户说:
“我想明天晚上去看电影,去卡萨布兰卡,我想坐在最后一排。”
我设计了用于获取电影名称、所需座位、放映日期和时间等的语法。
然而,虽然我考虑过 ANTLR 来开发这样的解决方案,但我真的不知道它是否有这样的功能,我的意思是,如果我可以定义几个根符号。
ANTLR 有解决语法歧义的方法。这些方法在 ANTLR 4 中得到了改进,但是在处理模棱两可的语言(尤其是人类语言)时,您将面临一个巨大的限制,这将不可避免地使 ANTLR 不适合该任务:
ANTLR 最终通过确定多个潜在选项中的一个特定选项是正确的解决方案来解决歧义。由于此解决方案发生在使用 ANTLR 的解析过程的早期阶段,因此很难将语义逻辑纳入此决策过程(与仅涉及语法的逻辑相反)。
编辑:在 NLP 的上下文中,关于 ANTLR 4 特别有趣的一件事是 ANTLR 4 使用增强的转换网络作为其解析器的基础。我知道在那里的某个地方可以对其进行修改以用于自然语言处理,但迄今为止还没有弄清楚如何使它工作。参考:我开发了ANTLR 4 运行时的优化版本,目前稍微落后于参考分支,但我会在今年夏天晚些时候赶上。