Вставить IF анализатор текста в другую игру?

14

Существуют ли какие-либо интерактивные движки для анализа художественного текста, которые я могу встроить в другую игру или приложение?

Я хочу использовать что-то в качестве библиотеки. Я могу передать ему доступные предметы и глаголы со своей стороны. Он проанализирует предложения пользователя и вернет мне некоторую структуру / AST, описывающую то, что просил пользователь. Тогда мой собственный код может действовать по этому запросу.

Мне не нужно что-то уровень SIRI. Простые предложения и действия, которые поддерживаются в современных играх IF, вполне подойдут. Но я не собираюсь писать весь текст / предложение парсера сам.

Это не игра If, и я не могу написать ее полностью на интерактивном беллетристическом языке, таком как Infor 7. К сожалению, я не могу найти примеров того, как кто-либо использовал возможности этих движков для анализа текста, не написав полностью игра на языке этого движка.

DragonFax
источник
Интересная идея. Я не думаю, что встраивание z-машины было бы невыполнимой задачей (а это значит, что вы могли бы использовать информацию для написания части if) - в действительности, порт windows некоторой z-машины имел z-машину, запущенную в отдельном потоке от пользовательский интерфейс, так что он вроде (части) того, что вы хотите.
Яри ​​Комппа
Все это говорит о том, что вполне возможно, что то, что вы на самом деле хотите сделать, проще сделать без встраивания целой виртуальной машины IF.
Яри ​​Комппа
да, похоже, мне придется написать свой собственный парсер.
DragonFax

Ответы:

4

Это сложный вопрос. Функциональность синтаксического анализа текста можно извлечь из одного из нескольких механизмов IF, написанных на языках программирования общего назначения (то есть не таких как Inform). Некоторые возможности могут быть Pyf , и двигатель тети и Батлера . Если вы расширите свой поиск до грязи, у вас будет на порядок больше вариантов (вот списки илов с открытым исходным кодом и грязей Python специально).

Однако сложная часть, и из вашего вопроса вы понимаете это, заключается в разрешении разбора в контексте игрового мира. Это сложная часть, и что-то вроде OpenNLP, к сожалению, вас туда не доставит. Проблема в том, что каждый из этих двигателей и грязи имеет свой собственный способ сделать это, и может быть трудно примириться с тем, как вы спроектировали свою модель мира.

К счастью, есть много ресурсов для написания эффективного анализатора и распознавателя. Я просто собираюсь бросить некоторые ссылки на вас,

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

georgek
источник
Да, я написал парсеры для языков программирования. Достаточно знать, что изучать естественные языки - это другой зверь.
DragonFax
2
Помните, это не просто анализ естественного языка, это анализатор моделей мира, который займет все ваше время :).
Георгий
1

Будет ли это полезно для вашего проекта? Я полагаю, что вы запрашиваете НЛП, и если это просто конкретный вариант использования.

http://opennlp.apache.org/

Хорошо, если вы хотите проверить, что в предложении была найдена правильная комбинация существительного и глагола, а не столько о структуре, грамматике и других аспектах:

Я предлагаю скачать этот http://wordnet.princeton.edu/wordnet/

Вы можете использовать его, чтобы в основном проверить, существует ли синоним для глагола и существительного, которое вы ищете в предложении, без необходимости вручную вводить все жизнеспособные синонимы для каждого слова.

Если вы хотите увидеть исходный код текстовой приключенческой игры, который был недавно выпущен, вы можете найти здесь несколько игр (просто нажмите Ctrl + F) и набрать текст

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

Здесь также есть список игровых движков Text Adventure:

http://en.wikipedia.org/wiki/Category:Text_adventure_game_engines

Если вам нужно что-то еще, пожалуйста, уточните.

AturSams
источник
Правильный НЛП казался чрезмерным убийством, а также, казалось, фокусировался на вещах типа Data Sciencey. Где вы хотите определить, являются ли предложения в большой свалке счастливыми или грустными, или упоминают людей против вещей. Где-как я хотел разобрать одно предложение в совершенстве, и пришел к выводу, что «пользователь говорит« ГЛАГОЛЬНО ДЕЛАТЬ НОУНУ ». Даже если он только анализирует несколько различных форм.
DragonFax
Я добавил несколько ссылок на движки текстовых приключенческих игр.
AturSams
Спасибо, я читал книгу по NLTK (python), которая является хорошим руководством по основам использования NLP. Но разбор одного предложения в «значение» - все еще нетривиальная вещь.
DragonFax