Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文本游戏命令解析?_Python_Nlp - Fatal编程技术网

Python 文本游戏命令解析?

Python 文本游戏命令解析?,python,nlp,Python,Nlp,我对编写一个解析引擎感兴趣,比如Inform中的解析引擎,它非常健壮 我尝试了几种不同的方法: 正则表达式。对于正则表达式,我只能匹配{verb}{noune1 optional-noun2}{optional preposition}{indirect-noune1 optional-indirect-noun2}这不是很好 预定义动词及其匹配的介词和名词列表。这种方法太复杂了,因为必须有大量预定义的数据 拆分成不同的单词,并在字典地图中运行它们。同样,由于“look”或“put(on,ou

我对编写一个解析引擎感兴趣,比如Inform中的解析引擎,它非常健壮

我尝试了几种不同的方法:

  • 正则表达式。对于正则表达式,我只能匹配
    {verb}{noune1 optional-noun2}{optional preposition}{indirect-noune1 optional-indirect-noun2}
    这不是很好
  • 预定义动词及其匹配的介词和名词列表。这种方法太复杂了,因为必须有大量预定义的数据
  • 拆分成不同的单词,并在字典地图中运行它们。同样,由于“look”或“put(on,out)”等特定词语的不明确,这一点过于复杂且不实用
我知道语言处理,但实际上我不知道如何开始,有些东西太复杂了。(没有CS背景,我现在只是在自学。)

我有一些想法:

  • 正如我所说,自然语言处理
  • 设计一个解析类似于SQL的东西的解析器
还有其他想法吗?我将如何着手设计和实现它们


注意,我使用Python作为我的语言。如果你错过了,我不是在设计一种编程语言,我只是在解析用户命令,比如“往北走”或者复杂的东西,比如“用毯子把火扑灭”

除了上面提到的,看起来非常合适(我只使用了一点点),你应该考虑使用它。这是一个自然语言处理工具的大集合,甚至还有一个。

你可能想看看pyparsing模块pyparsing.wikispaces.com我觉得写我自己的解析器会让我受益匪浅,因为我会学到更多。我的全部目的是写pyparsing模块,这样我就可以了解它是如何完成的。我完全支持写作学习,但没有背景,这更像是一个巨大的挑战,阅读pyparsing的源代码然后在那里进行更改有什么错。我明白你的意思,但我完全赞成一个好的挑战。我肯定会接受你的建议,但是阅读别人的代码非常乏味,而且阅读时没有解释代码的设计规范之类的东西,更不用说有些代码可能会被注释,也可能不会被注释。是的,我也看到了:
pyparsing
很不合适,因为它创建了递归下降解析器。当你的语法只有很少的歧义时(任何NL解析器很快就会有这种歧义),它就会停下来;我见过这种情况。改为使用NLTK。