在另一个游戏中嵌入IF文本解析器?


14

我可以在其他游戏或应用程序中嵌入任何现有的交互式小说文本解析引擎吗?

我希望将某些东西用作库。我可以从自己的角度传递可用的宾语和动词。它将解析用户的句子,并给我返回描述用户要求的某种结构/ AST。然后,我自己的代码可以根据该请求执行操作。

我不需要SIRI等级的东西。当前的IF游戏支持的简单句子和动作很好。但是我不想自己写一个完整的文本/句子解析器。

这不是一个If游戏,我无法完全使用像notify 7这样的交互式小说语言来编写它。不幸的是,我似乎找不到任何使用这些引擎的文本解析功能的人,而没有编写整个游戏的例子。以该引擎的语言进行游戏。


有趣的主意。我认为嵌入z-machine并不是不可能的任务(这意味着您可以使用notify来编写if-part)-公平地,某些z-machine的Windows端口已将z-machine运行在与用户界面,因此它已经完成了您想要的(部分)操作。
贾里·康帕

所有这一切说,这完全有可能是你真正想要做的是更容易做到不嵌入一个整体,如果虚拟机..
杰瑞Komppa

是的,看来我必须编写自己的解析器。
DragonFax 2012年

Answers:


4

这是一个棘手的问题。可以从以通用编程语言(即Inform之类的东西)编写的多个IF引擎之一中提取文本解析功能。可能有Pyf以及姨妈和巴特勒的引擎。如果您将搜索范围扩展到泥浆,那么您将有更多数量级的选择(这里是开源泥浆Python泥浆的列表)。

但是,棘手的部分(从您的问题中可以理解)正在解决游戏世界中的解析问题。这是困难的部分,不幸的是,OpenNLP之类的东西无法帮助您。问题在于这些IF引擎和泥浆各自具有各自的处理方式,可能难以与您设计世界模型的方式保持一致。

幸运的是,有许多资源可以编写有效的解析器和解析器。我只想给你一些链接,

http://www.mudbytes.net/topic-1838

http://www.mudbytes.net/topic-2962

http://www.mudbytes.net/topic-2038

http://www.mud.co.uk/richard/commpars.htm

http://groups.google.com/group/rec.arts.int-fiction/msg/f545963efb72ec7b?dmode=source

http://www.intfiction.org/forum/viewtopic.php?f=38&t=4205#p30260

http://www.tads.org/t3doc/doc/libref/source/parser.t.html

http://www.tads.org/t2doc/doc/prsseq.htm

http://www.dnd.utwente.nl/~krimud/Docs/NMAdmin/Parser/

https://groups.google.com/forum/?fromgroups#!searchin/rec.arts.int-fiction/writing $ 20a $ 20parser / rec.arts.int-fiction / VpsWZdWRnlA / 2mf5y25xk7MJ

https://groups.google.com/forum/?fromgroups#!searchin/rec.arts.int-fiction/writing $ 20a $ 20parser / rec.arts.int-fiction / EfxdLAc5Tmo / Fn5CEQvZCGsJ

http://ifwiki.org/index.php/Past_raif_topics:_Development:_part_2#Parsing

https://groups.google.com/forum/?fromgroups#!topic/rec.arts.int-fiction/HJPrqQ8l9u0

http://www.kotancode.com/2012/02/15/scalamud-scala-java-nlp/

https://groups.google.com/forum/?fromgroups#!topic/rec.arts.int-fiction/to4Ut4r_qCs

http://effbot.org/zone/simple-top-down-parsing.htm

http://www.skotos.net/articles/dawnof09.shtml

http://www.skotos.net/articles/dawnof22.shtml

http://discworld.starturtle.net/lpc/playing/documentation.c?path=/concepts/parser

http://disinterest.org/resource/MUD-Dev/1999q2/010160.html


是的,我已经编写了用于编程语言的解析器。足以应付自然语言是另一回事。
DragonFax 2012年

2
请记住,这不仅是自然语言解析,而且是花费您所有时间的世界模型分析器:)。
georgek,2012年

1

这对您的项目有用吗?我相信您要的是NLP,而IF只是一个特定的用例。

http://opennlp.apache.org/

好吧,如果您希望检查是否在句子中找到了名词和动词的正确组合,而没有太多关于结构,语法和其他方面的信息:

我建议下载此http://wordnet.princeton.edu/wordnet/

您可以使用它来基本上检查句子中要查找的动词和名词是否都存在同义词,而不必手动为每个单词键入所有可行的同义词。

如果您想查看最近发布的文字冒险游戏源代码,可以在这里找到一些游戏(只需按Ctrl + F),然后输入文字

http://en.wikipedia.org/wiki/List_of_open-source_video_games

这里还有文本冒险游戏引擎的列表:

http://zh.wikipedia.org/wiki/类别:Text_adventure_game_engines

如果您还需要更多,请详细说明。


适当的NLP似乎过分杀人,并且似乎还专注于Data Sciencey类型的东西。您想在哪里识别大型转储中的句子是高兴还是悲伤,还是提及人与事。在哪里,我想完美地解析一个句子,然后得出“用户说的是对名词进行VERB”。即使它仅解析几种不同的形式。
DragonFax 2012年

我添加了一些指向文本冒险游戏引擎的链接。
AturSams,2012年

谢谢,我一直在阅读NLTK(python)书,这是有关NLP使用基础知识的很好的教程。但是,将单个句子解析为“含义”仍然不是一件容易的事。
DragonFax 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.