Osadzić parser tekstu IF w innej grze?

14

Czy są jakieś istniejące silniki analizujące tekst fabularny, które mogę osadzić w innej grze lub aplikacji?

Chcę użyć czegoś jako biblioteki. Mogę przekazać z własnej strony dostępne obiekty i czasowniki. Przetwarza zdania od użytkownika i zwróci mi jakąś strukturę / AST opisującą to, o co prosił użytkownik. Wtedy mój własny kod może wtedy działać na podstawie tego żądania.

Nie potrzebuję czegoś na poziomie SIRI. Proste zdania i działania obsługiwane przez obecne gry IF są w porządku. Ale nie chcę pisać całego parsera tekst / zdanie.

To nie jest gra If i nie mogę jej napisać w całości w języku fikcji interaktywnej, takim jak inform 7. Niestety nie wydaje mi się, aby znaleźć przykłady osób korzystających z funkcji analizy tekstu tych silników bez napisania całego gra w języku tego silnika.

DragonFax
źródło
Ciekawy pomysł. Nie sądzę, aby osadzenie maszyny Z było niemożliwym zadaniem (co oznacza, że ​​możesz użyć informacji do napisania części if) - tak, port systemu Windows w niektórych maszynach Z miał maszynę Z działającą w innym wątku niż interfejs, więc trochę już robi (części) tego, co chcesz.
Jari Komppa
Wszystko, co powiedział, to całkiem możliwe, że to, co rzeczywiście chcesz zrobić, to łatwiej zrobić bez osadzania całości, jeśli maszynie wirtualnej ..
Jari Komppa
tak, wygląda na to, że będę musiał napisać własny parser.
DragonFax,

Odpowiedzi:

4

To trudne pytanie. Możliwe jest wyodrębnienie funkcji parsowania tekstu z jednego z wielu silników IF napisanych w językach programowania ogólnego przeznaczenia (tj. Nie coś takiego jak Inform). Niektóre możliwości to Pyf , silnik Ciotki i Butlera . Jeśli rozszerzysz swoje wyszukiwanie na błoto, będziesz miał większy wybór wielkości (oto lista błotników typu open source i błotników Python ).

Jednak trudną częścią i z tego, co rozumiesz, jest rozwiązanie parsowania w kontekście świata gry. To jest trudna część, a coś takiego jak OpenNLP niestety cię tam nie doprowadzi. Problem polega na tym, że każdy z silników IF i błota ma na to swój własny sposób i może być trudno pogodzić się ze sposobem zaprojektowania swojego modelu świata.

Na szczęście istnieje wiele zasobów do napisania skutecznego parsera i resolvera. Zamierzam rzucić w ciebie linkami,

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 20 USD $ 20 parser / rec.arts.int-fiction / VpsWZdWRnlA / 2mf5y25xk7MJ

https://groups.google.com/forum/?fromgroups#!searchin/rec.arts.int-fiction/writing 20 USD $ 20 parser / 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
źródło
Tak, napisałem parsery dla języków programowania. Wystarczy wiedzieć, jak radzić sobie z językami naturalnymi, to inna bestia.
DragonFax,
2
Pamiętaj, że to nie tylko parsowanie języka naturalnego, to cały światowy analizator, który zajmie ci cały czas :).
georgek
1

Czy przydałoby się to w twoim projekcie? Uważam, że pytasz o NLP, a IF to tylko konkretny przypadek użycia.

http://opennlp.apache.org/

Cóż, jeśli chcesz sprawdzić, czy w zdaniu znaleziono prawidłową kombinację rzeczownika i czasownika, a nie tyle o strukturze, gramatyce i innych aspektach:

Sugeruję pobranie tego http://wordnet.princeton.edu/wordnet/

Można go użyć do sprawdzenia, czy istnieje synonim zarówno dla czasownika, jak i rzeczownika, którego szukasz w zdaniu, bez konieczności ręcznego wpisywania wszystkich wykonalnych synonimów dla każdego słowa.

Jeśli chcesz zobaczyć tekstowy kod źródłowy gry przygodowej, który został niedawno wydany, możesz znaleźć tutaj kilka gier (wystarczy nacisnąć Ctrl + F) i wpisać tekst

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

Tutaj znajduje się również lista silników gier tekstowych:

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

Jeśli potrzebujesz czegoś więcej, dopracuj.

AturSams
źródło
Właściwe NLP wydawało się nadmiernie zabijać, a także zdawało się koncentrować na rzeczach typu Data Sciencey. Gdzie chcesz ustalić, czy zdania na dużym wysypisku są szczęśliwe czy smutne, czy też wspominają o ludziach i rzeczach. Gdzie-jak chciałem perfekcyjnie parsować jedno zdanie i dojść do „użytkownik mówi do VERB to NOUN”. Nawet jeśli analizuje tylko kilka różnych form.
DragonFax,
Dodałem kilka linków do tekstowych silników gier przygodowych.
AturSams,
Dzięki, czytałem książkę NLTK (python), która jest dobrym tutorialem na temat podstaw korzystania z NLP. Ale parsowanie pojedynczego zdania w „sens” wciąż nie jest trywialne.
DragonFax,