文本游戏命令解析?
我想写一个解析引擎,类似于Inform里的那种,功能非常强大。
我尝试过几种不同的方法:
- 正则表达式(regex)。用正则表达式,我只能匹配
{动词} {名词1 可选名词2} {可选介词} {间接名词1 可选间接名词2}
,这个效果不是很好。 - 预定义的动词列表以及它们对应的介词和名词。这个方法太复杂了,因为需要预定义很多数据。
- 把句子拆分成不同的单词,然后通过字典进行匹配。这个方法同样太复杂,而且不实用,因为某些词的意思模糊,比如“look”或“put (on, out)”。
我对语言处理有一些了解,但其实不知道从哪里开始,有些东西太复杂了。(我没有计算机科学背景,现在只是自学。)
我想到的一些点子:
- 正如我所说的,自然语言处理。
- 设计一个解析器,解析类似SQL的内容。
还有其他的想法吗?我该如何设计和实现这些想法呢?
顺便提一下,我使用的是Python作为编程语言。如果你没注意到,我并不是在设计一种编程语言,我只是想解析用户的命令,比如“向北走”或者更复杂的指令,比如“用毯子把火扑灭”。