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.
źródło
Odpowiedzi:
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
źródło
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.
źródło