Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save delboy1978uk/270ffc801c4d8530342e6cbe456ebe22 to your computer and use it in GitHub Desktop.
Save delboy1978uk/270ffc801c4d8530342e6cbe456ebe22 to your computer and use it in GitHub Desktop.
how to implement `tags` properly
22 Apr
Steam Labs Search Experiment 4.1: Query Expansion
Steam Blog - christen
Now We're Thinking with Queries
In this experiment, Query Expansion, we improve Steam Search by treating tags more like a human would: using logic! Take the three tags RTS, Real-Time, and Strategy, for instance. If a game is tagged RTS but not Real-Time and Strategy, a search for Real-Time + Strategy won’t find that game using Steam's existing Search tech. Query Expansion fixes that.
You can experience our new Search Results - including those surfaced thanks to Query Expansion - when you visit Steam Labs Experiment 004.1: Search Query Expansion. Here, many searches which leverage tags will now cast a wider net and display more titles. As always, we’d love your feedback; You can let us know what you think of your new Search Results in the discussions.
Read on to learn about how Query Expansion gives better search results.
Improving Search Results with Query Expansion
The core of Query Expansion is that we don't just consider the tags on a game, but also the tags that these logically imply.
Let’s say you're hankering to play a 3D Platformer, so you select the 3D and Platformer tags in Steam Search. As a result, you see something like this:
However we also have a 3D Platformer tag. If you searched for that instead, you'd get more results, but this is also missing some items from your first search:
Now, when you opt into Steam Labs’ improved Search with Query Expansion you get all of these results, plus more, regardless which set of tags you use to perform the search. Here we can see that this set of results is broader than even the sum of the previous two methods':
In either of our initial cases, results were missed because the existing version of Search treats all tags as unrelated pieces of information. A human can of course discern that 3D Platformer is composed of the elements 3D and Platformer. Search ought to be smart enough to recognize this sort of relationship, too.
Search shouldn’t be too smart, however, because it’s not a recommender—it should return what the user asked for; no more, no less. But before we go too deeply into our solution, let’s get a better look at the problem.
Gaps in Tagging
Some games are tagged more thoroughly than others. We have some longer-term plans to help address that, and Query Expansion is a simple first step.
For example, games tagged RTS might not always have the tags Real-Time + Strategy, and vice versa. Likewise, a game tagged Action-Adventure + JRPG might lack the tags Action, Adventure, and RPG. Unfortunately this will return Search results that vary considerably based on which particular tags the user happens to choose. (See below for details.)
Developers who don’t know about this issue might, for example, tag their game RTS and not realize that it could fail to return in a search for the simpler tag Strategy. And who could fault them?
On the flip side, developers who do know about this issue might load their game up with every possible permutation of their chief tags—indicating RTS in addition to Real-Time + Strategy, RTS, and so on. The downside to this approach is that it fills the game’s tag profile with lots of redundant tags, when we instead need more meaningful tags which help describe or surface the game to users in the Steam store.
Query Expansion fills these gaps without requiring taggers to add synonymous tags to every game on Steam, or requiring players to form complex search queries.
How It Works
Let's look more directly at what Query Expansion does, and just as importantly, what it doesn’t do, so that we can become confident in the quality of the Search Results surfaced by these changes with respect to tags.
First and foremost, we intend for our Query Expansion to err toward being cautionary. For instance, we've told it that:
Action-Adventure strictly implies Action + Adventure and
Strategy RPG strictly implies Strategy + RPG
However we've not taken a leap to suggest synonymous relationships between merely similar or corollary tags. For example:
Dark does not imply Lovecraftian
Fantasy does not imply Magic
Shooter does not imply Action and
Strategy does not imply Turn-Based
Sure, Dark and Lovecraftian often appear together in association with the same games, but this correlation is not equivalence, and therefore these two tags aren't appropriate to associate with one another when implementing Query Expansion.
With that established, we went through our entire list of tags and mapped out relationships that everyone could agree made sense. This includes tags that break down into other tags (FPS → First Person + Shooter) as well as tags that are constructed from other tags (Strategy + RPG → Strategy RPG). Most of these relationships work in both directions, but not all of them.
For instance, a game tagged Looter Shooter clearly deserves the tags Loot and Shooter. However, Looter Shooter is a specific sub-genre with its own conventions. And although it’s not Steam’s place to define those conventions, it does seem prudent to recognize that not every game tagged with Loot and Shooter is necessarily a Looter Shooter. For now, relationships between tags like this require human consideration.
Expanding Tag Queries, Step by Step
Here’s a somewhat simplified example of what goes on under the hood.
Search queries start with the user’s list of tags:
Action +
Adventure +
2D Platformer +
Puzzle
We identify complex tags and break them down into simple tags:
2D Platformer → 2D + Platformer
We see if any simple tags combine to form complex tags:
Action + Adventure → Action Adventure
Puzzle + Platformer → Puzzle Platformer
We add these as synonyms for each of our original tags using OR:
(Action OR Action Adventure) +
(Adventure OR Action Adventure) +
(2D OR 2D Platformer) +
(Platformer OR 2D Platformer) +
(Puzzle OR Puzzle Platformer)
Next, for each tag, we look for complex tags that fully incorporate it:
Action → (Action Adventure OR Action RPG OR Action Roguelike)
Adventure → (Action Adventure)
2D → (2D Platformer OR 2D Fighter)
Platformer → (2D Platformer OR 3D Platformer OR Precision Platformer OR Puzzle Platformer)
Puzzle → (Puzzle Platformer)
We add these as synonyms for each of our original tags, using OR (provided we haven’t added them already in an earlier step:)
(Action OR Action Adventure OR Action RPG OR Action Roguelike) +
(Adventure OR Action Adventure) +
(2D OR 2D Platformer OR 2D Fighter) +
(Platformer OR 2D Platformer OR 3D Platformer OR Precision Platformer OR Puzzle Platformer) +
(Puzzle OR Puzzle Platformer)
Now some of you might be thinking, “Action RPG? 2D Fighter? I thought we were looking for Action+Adventure+2D+Platformer+Puzzle, what’s this other stuff doing in here? Surely this will pollute our Search Results!”
Good question! But don’t worry, those extra terms don’t ruin the results—quite the opposite. The OR logic makes sure the fancier tags are only there to contribute the bit that overlaps with the user’s request—the Action in Action RPG in this example. And keep in mind there are tons of genre hybrids on Steam; so the fancier terms ensure that when you ask for peanut-butter flavored snacks, we don’t forget to include peanut-butter-and-chocolate cookies (but rest assured, we won’t return any chocolate snacks that don’t also have peanut-butter).
This approach allows us to locate more titles than were served by even the sum of results when searching for 3D, Platformer, and 3D Platformer, as in our first example. Now, additional results such as Biped, are served front and center. This title has the tags 3D and Puzzle Platformer associated with it. So you see, now searches for complex tags like 3D Platformer catch titles with alternate though still relevant combinations of tags.
Applications
Query Expansion isn’t the final word in improving our tags system, but it’s a good place to start. For now we’re just leveraging Query Expansion as applied to tags in this Search experiment. We’ll be closely monitoring the results before we decide whether and how to use Query Expansion in other applications such as across more forms of metadata in Search, or in additional Browse views, Recommendations algorithms, Dynamic Collections in the Library, and other areas of Steam.
Try Searching with Expanded Queries Today
You’ll need to opt in to the Steam Labs Search experiment to see the new Search results leveraging Expanded Queries as applied to tags. You can do this by visiting Steam Labs Experiment 4.1: Search with Expanded Tags.
Steam Labs
Today's changes to Search were made as part of Steam Labs, an experimental environment where we try out potential changes and additions to Steam, and gather feedback on their usefulness.
By developing new features in Labs we're able to experiment without impacting everyone who uses and sells games on Steam. At the same time, we can try things out publicly and receive feedback early in the development process. If you would like to help us further design and refine Search or other Steam features, head over to Steam Labs and try out the experiments that catch your interest. We look forward to your feedback!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment