{"id":172,"date":"2017-04-26T01:40:33","date_gmt":"2017-04-26T01:40:33","guid":{"rendered":"https:\/\/www.jasonsblog.place\/?p=172"},"modified":"2017-04-26T01:40:33","modified_gmt":"2017-04-26T01:40:33","slug":"trying-my-hand-at-making-a-system-for-procedurally-generating-stories","status":"publish","type":"post","link":"https:\/\/www.jasonsblog.place\/index.php\/2017\/04\/26\/trying-my-hand-at-making-a-system-for-procedurally-generating-stories\/","title":{"rendered":"Trying My Hand at Making a System for Procedurally Generating Stories"},"content":{"rendered":"<p>Last year, I got the idea of making a game where a group of friends could get together, have a game scenario generated for them, and they could start playing.\u00a0 This is something called procedural generation, wherein game settings, mechanics, assets, and other components are created from an alogorthim, and a bit of randomness.\u00a0 I thought I would just research this, since creating <em>any<\/em> sort of video game takes a lot of time and skill.\u00a0 In this case, I was looking into a system for creating stories.<\/p>\n<p>I&#8217;ve read a few things about procedurally generating stories (for instance, <a href=\"https:\/\/grandtextauto.soe.ucsc.edu\/2006\/09\/13\/the-story-of-meehans-tale-spin\/\">Tail-Spin<\/a> and <a href=\"https:\/\/grandtextauto.soe.ucsc.edu\/2006\/03\/01\/turners-minstrel-part-1\/\">Minstrel<\/a>) and I stumbled upon one that may be in my reach.\u00a0 From a paper titled &#8220;<a href=\"http:\/\/khaledelleithy.org\/Conferences\/Random%20Word%20Retrieval%20for%20Automatic%20Story%20Generation.pdf\">Random Word Retrieval for Automatic Story Generation<\/a>&#8221; I found out about something called <a href=\"http:\/\/conceptnet.io\/\">ConceptNet<\/a>.\u00a0 This is a commonsense knowledge database for finding the relations between concepts via semantics.\u00a0 So you can find one concept (like &#8220;dog&#8221;) and find corresponding concepts for it (such as &#8220;animal&#8221;).\u00a0 The paper talks about the intent of making a system for using ConceptNet to find the relations between words (in a process called &#8220;Concept Correlation&#8221;) and make a story out of it.\u00a0 Sadly, they haven&#8217;t yet implemented the system.\u00a0 So what I&#8217;m trying to do is make something that will, uh, sort of make a story.<\/p>\n<p>In the paper, they talk about how the system requires a Knowledge-Based System.\u00a0 Unfortunately, this system is quite tedious and difficult to create (or so the paper says).\u00a0 So I&#8217;m just trying to find the connections between words and concepts.\u00a0 All that I&#8217;ve been able to do, though, is mess with the Python interface to the ConceptNet website, and maybe find some related terms.\u00a0 Finding the connection between two dis-similar terms is difficult, because the concepts have many branching nodes which connect to other nodes.\u00a0 Finding the right nodes which connect the two concepts would take a while, because the system would have to iterate over the nodes until they find a match.<\/p>\n<p>The examples I&#8217;ve been using have been &#8220;dog&#8221; and &#8220;snow&#8221;.\u00a0 So the system would have to go through each node in the &#8220;dog&#8221; concept until it found a node which connects to &#8220;snow&#8221;.\u00a0 It could be any connection from &#8220;dog&#8221; -&gt; hasA-&gt; &#8220;nose&#8221;\u00a0 -&gt; RelatedTo-&gt; &#8220;wet&#8221; -&gt; PropertyOf -&gt; &#8220;snow&#8221;.\u00a0 Please note that these aren&#8217;t actual connections in ConceptNet, but something like this can be found in the database.<\/p>\n<p>So I don&#8217;t know how I&#8217;m going to tackle this monster, let alone make a story out of it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year, I got the idea of making a game where a group of friends could get together, have a game scenario generated for them, and they could start playing.\u00a0 This is something called procedural generation, wherein game settings, mechanics, assets, and other components are created from an alogorthim, and a bit of randomness.\u00a0 I [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,76,31],"tags":[80,77,79,78,23],"class_list":["post-172","post","type-post","status-publish","format-standard","hentry","category-fun","category-programming","category-video-games","tag-json","tag-procedural-generation","tag-python","tag-story-generator","tag-video-game"],"_links":{"self":[{"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/posts\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":2,"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/posts\/172\/revisions"}],"predecessor-version":[{"id":174,"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/posts\/172\/revisions\/174"}],"wp:attachment":[{"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/media?parent=172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/categories?post=172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jasonsblog.place\/index.php\/wp-json\/wp\/v2\/tags?post=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}