我想要编写一个解析引擎,类似 Inform 中非常强大的引擎。
我尝试了几种不同的方法:
- 正则表达式。对于正则表达式,我只能匹配
{动词} {名词1 可选-名词2} {可选-介词} {间接名词1 可选-间接名词2}
,但这并不太好用。 - 预定义动词及其匹配的介词和名词列表。这种方法过于复杂,因为必须有很多预定义数据。
- 将其拆分成不同的单词,并通过字典映射运行它们。再次,这太复杂而且不实际,因为某些单词的歧义性如“look”或“put (on, out)”。
我知道语言处理,但我实际上不知道该如何开始,有些东西太复杂了。(没有计算机科学背景,我现在正在自学)。
我的一些想法:
- 如我所说,自然语言处理。
- 设计一个解析器,解析类似 SQL 的内容。
还有其他的想法吗?我应该如何设计和实现它们?
请注意,我使用 Python 作为编程语言。如果你错过了,我不是在设计编程语言,我只是解析用户命令,例如“向北走”或复杂的命令,如“用毯子扑灭火焰”。