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.


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


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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.