Вбудувати IF аналізатор тексту в іншій грі?


14

Чи існують інтерактивні двигуни для розбору тексту художньої літератури, які я можу вставити в іншій грі чи програмі?

Я хочу використовувати щось як бібліотеку. Я можу передавати йому наявні предмети та дієслова з власної сторони. Він розбере пропозиції від користувача та поверне мені якусь структуру / AST, описуючи те, що запитував користувач. Тоді мій власний код може діяти на цей запит.

Мені не потрібен щось рівень SIRI. Прості пропозиції та дії, які підтримують поточні ігри ІФ, чудово. Але я не хочу самостійно написати цілий текст / розбір пропозицій.

Це не гра If, і я не можу писати її повністю інтерактивно-фантастичною мовою, як, наприклад, inform 7. На жаль, я не можу знайти прикладів того, хто використовує можливості аналізу тексту цих двигунів, не записуючи цілий гра на мові цього двигуна.


Цікава ідея. Я не думаю, що вставлення z-машини було б неможливим завданням (це означає, що ти можеш використовувати інформувати для написання if-частини) - afair, порт порту Windows на деякій z-машині мав би z-machine працювати окремим потоком від користувальницький інтерфейс, таким чином він вже робить (частини) того, що ви хочете.
Jari Komppa

Все, що було сказано, цілком можливо, що те, що ви насправді хочете зробити, простіше зробити, не вставляючи цілу віртуальну машину.
Jari Komppa

так, схоже, мені доведеться написати власний парсер.
DragonFax

Відповіді:


4

Це складне питання. Можна витягнути функціональний аналіз тексту з одного з ряду двигунів IF, написаних мовами програмування загального призначення (тобто не чимось на зразок Inform). Деякі можливості можуть бути і Піфом , і двигуном тітки та Батлера . Якщо ви розширите свій пошук до грязей, ви отримаєте на порядок більше варіантів (ось списки грязей з відкритим кодом та конкретно грязей 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


Так, я написав аналізатори для мов програмування. Досить знати, як боротися з природними мовами - це інший звір.
DragonFax

2
Пам'ятайте, що це не просто природний мовний аналіз, це світовий модельний аналізатор, який займе весь ваш час :).
georgek

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

Якщо вам потрібно щось більше, уточнюйте.


Належний NLP здавався надмірним вбивством, а також, здається, зосередився на матеріалах типу Data Sciencey. Там, де ви хочете визначити, чи щасливі чи сумні пропозиції на великому смітнику, чи згадує людей проти речей. Де б я хотів ідеально проаналізувати одне речення, і дійти до "користувач говорить:" ВЕРБ НА НОУН ". Навіть якщо вона розбирає лише кілька різних форм.
DragonFax

Я додав декілька посилань на двигуни текстових пригод.
AturSams

Дякую, я читав книгу NLTK (python), яка є хорошим підручником з основ використання NLP. Але розбір одного речення на "значення" - це все-таки нетривіальна річ.
DragonFax
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.