Başka bir oyunda IF metin ayrıştırıcısı yerleştirilsin mi?


14

Başka bir oyuna veya uygulamaya yerleştirebileceğim mevcut etkileşimli kurgu metin ayrıştırma motorları var mı?

Kütüphane olarak bir şey kullanmak istiyorum. Mevcut nesneleri ve fiilleri kendi tarafımdan geçirebilirim. Kullanıcıdan cümleleri ayrıştıracak ve bana kullanıcının ne istediğini açıklayan bir tür yapı / AST verecektir. Sonra kendi kodum bu istek üzerine hareket edebilir.

SIRI seviyesinde bir şeye ihtiyacım yok. Mevcut IF oyunlarının desteklediği basit cümleler ve eylemler iyidir. Ama kendimi tam bir metin / cümle ayrıştırıcısı yazmak istemiyorum.

Bu bir If oyunu değil ve tamamen inform 7 gibi interaktif bir kurgu dilinde yazamıyorum. oyunun motorunun dilinde.


İlginç fikir. Ben bir z-makinesi gömmek imkansız bir görev olacağını düşünmüyorum (yani if-part yazmak için bilgilendirmek kullanabilirsiniz anlamına gelir) - afair, bazı z-makinenin windows port z-makine ayrı bir iş parçacığında çalıştırmak vardı UI, bu yüzden zaten ne istediğinizi (parçaları) yapar.
Jari Komppa

Tüm bunlar söyledi, aslında yapmak istediğiniz şeyin tüm bir IF sanal makinesini
gömmeden

evet, sanırım kendi ayrıştırıcımı yazmam gerekecek.
DragonFax

Yanıtlar:


4

Bu aldatıcı bir soru. Metin ayrıştırma işlevini, genel amaçlı programlama dillerinde yazılmış (yani Inform gibi bir şey değil) bir dizi IF motorundan ayıklamak mümkündür. Bazı olasılıklar Pyf , Teyze ve Butler'ın motoru olabilir . Aramanızı çamurlara genişletirseniz, daha fazla seçenek için bir sıraya sahip olursunuz (özellikle açık kaynak çamurları ve özellikle Python çamurlarının listeleri ).

Ancak zor kısmı ve sorunuzdan bunu anlıyorsunuz, oyun dünyası bağlamında ayrışmayı çözüyor. Bu zor kısmı ve OpenNLP gibi bir şey maalesef oraya gitmeyecek. Sorun şu ki, bu IF motorlarının ve çamurlarının her birinin bunu yapmanın kendi yolları vardır ve dünya modelinizi nasıl tasarladığınızla uzlaştırmak zor olabilir.

Neyse ki etkili bir ayrıştırıcı ve çözümleyici yazmak için birçok kaynak var. Sadece sana bazı linkler vereceğim,

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


Evet, programlama dilleri için ayrıştırıcılar yazdım. Doğal dillerin üstesinden gelmenin farklı bir canavar olduğunu bilmek yeterlidir.
DragonFax

2
Unutmayın, sadece doğal dil ayrıştırması değil, tüm zamanınızı alacak olan dünya model analizörü :).
georgek

1

Bu projeniz için yararlı olur mu? Sorduğunuz şey NLP ve IF sadece belirli bir kullanım örneği olduğuna inanıyorum.

http://opennlp.apache.org/

Peki, bir isim ve fiilin doğru kombinasyonunun cümle içinde bulunduğunu ve yapı, dilbilgisi ve diğer yönlerle ilgili olmadığını kontrol etmek istiyorsanız:

Bu http://wordnet.princeton.edu/wordnet/ indirmenizi öneririm

Temel olarak, bir cümle içinde aradığınız hem fiil hem de isim için bir eşanlamın var olup olmadığını kontrol etmek için, her kelime için tüm uygun eşanlamlıları manuel olarak yazmak zorunda kalmadan kullanabilirsiniz.

Kısa süre önce piyasaya sürülen metin macera oyunu kaynak kodunu görmek istiyorsanız, burada bazı oyunlar bulabilirsiniz (sadece Ctrl + F tuşlarına basın) ve metin yazın

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

Ayrıca burada Metin Macera oyun motorlarının bir listesi var:

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

Daha fazlasına ihtiyacınız varsa, lütfen ayrıntılarını belirtin.


Uygun NLP aşırı öldürücü gibi görünüyordu ve aynı zamanda Data Sciencey tipi şeylere de odaklanıyor gibiydi. Büyük bir çöplükteki bir cümlenin mutlu veya üzgün olup olmadığını belirlemek istediğinizde veya insanlara bir şeylerden bahsedildiğinde. Nerede-gibi mükemmel bir cümle ayrıştırmak ve "kullanıcı NOUN VERB yapmak" diyor gelmesi istedim. Sadece birkaç farklı formu ayrıştırsa bile.
DragonFax

Metin macera oyun motorlarına bazı bağlantılar ekledim.
AturSams

Teşekkürler, NLP kullanımının temelleri hakkında iyi bir öğretici olan NLTK (python) kitabını okuyorum. Ancak tek bir cümleyi "anlam" olarak ayrıştırmak hala önemsiz bir şeydir.
DragonFax
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.