What is this?
GameSage is a tool for game discovery that was built using techniques from
natural language
processing. Starting from your description of a game, you'll get an interactive listing of
the existing games that are most related to it. GameSage is not currently optimized for
mobile viewing.
How do I use it?
Click the sage to begin. Once you do this, you'll be taken to a new page, where the
sage will ask you to describe a game. You may use a description of a game you would like to develop
or are developing, a game that already exists (whose title you've forgotten), the type of game you'd like
to play, or any other kind of game description. Feel free to copy and paste text from another website or
from anywhere else. If you can't think of what to write about, click the button that says 'Guide Me'.
Who made it?
What keywords does it look for?
GameSage doesn't look for keywords or text overlap or anything like that.
It uses a much more complex natural language processing technique.
How does it work then?
GameSage is an interface to its companion tool
GameNet, which is is a network
of existing games that are linked according to how related they are to one another.
We built GameNet by submitting Wikipedia articles about games to
a technique from natural language processing called latent semantic analysis (LSA).
LSA works from the premises that words that occur in similar contexts will tend to have
similar meanings and that texts that are composed of similar words will tend to be
topically similar. By the technique, words get attributed computable representations that
are determined by the contexts in which they appear (in our case, the Wikipedia articles) and
the contexts themselves (those Wikipedia articles) likewise get attributed computable representations
according to which words appear in them. The cool thing about LSA is that it may be able to
infer that two words that
do not appear together in any context (perhaps dialectal variants that denote the same thing,
like 'gas' and 'petrol') are in fact highly semantically related. By the same token, it may infer
the semantic relatedness of two contexts that have no terms in common. This ability to learn
global associations from local co-occurrences is the achievement of LSA and what led to it becoming
one of the major natural language processing techniques of the last twenty years. For this project, we extracted 11,829
Wikipedia articles that describe individual games and submitted these to LSA. By taking the computable
representation that LSA gave to the games' Wikipedia articles and using them as a way of representing the
games themselves, we can automatically determine how related any game is to any other game among the
11,829 included in our model. This is how GameNet is able to reason about game relatedness. GameSage works
by exploiting the notion in LSA of 'folding in', whereby a new text that was not used to train the model
gets injected into it. Specifically, GameSage takes a description of a game and processes it by the exact
same method that was used to process the original Wikipedia articles, thereby finding the existing games
that are most related to the description. For more information about GameSage, see
this short paper that accompanied a demo of the tool at a recent academic conference.
Can you say more about LSA and your model?
From a corpus of text, a co-occurrence matrix of its words and documents (the
individual texts that make up the corpus) is built; this matrix specifies
which words occurred in which documents (and thereby which documents words occurred in). The columns and
rows in this matrix can be thought of as vectors that represent the meanings, in an approximate sense,
of the words and documents that they correspond to; this is called a vector space model of semantics.
LSA is an example of such a model, but its hallmark is that it reduces the dimensionality of these vectors
by a matrix-factorization algorithm called singular value decomposition. Remarkably,
doing this allows the model to, as we've said above, infer semantic associations that are not encoded in the full
co-occurrence matrix. Having an LSA model, one can easily calculate how semantically related any of its
documents are by taking the cosine between their LSA vectors. In corpora in which each document pertains
to a specific individual concept, such as a corpus comprising encyclopedia entries, these relatedness scores
can reasonably be utilized as a measure of the relatedness of the concepts themselves. Crucially, we
relied on this notion in training our LSA model on the corpus comprising Wikipedia articles for
11,829 videogames, which we mentioned above. By this model,
we can quantify how related any two of these games are by taking the cosine between their LSA vectors.
If this isn't detailed enough, check out
this conference paper in which we explain our implementation in greater depth.
Feel free to
shoot us an email too.