<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>From Demonstrations and Knowledge Engineering to a DNN Agent in a Modern Open-World Video Game</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Igor Borovikov</string-name>
          <email>iborovikov@ea.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Copyright held by the author(s). In A. Martin, K. Hinkelmann, A.</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ahmad Beirami</string-name>
          <email>abeirami@ea.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>EA Digital Platform - Data &amp; AI</institution>
          ,
          <addr-line>209 Redwood Shores Pkwy, Redwood City, CA 94065</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>EA Digital Platform - Data &amp; AI</institution>
          ,
          <addr-line>209 Redwood Shores Pkwy, Redwood City, CA 94065</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Gerber</institution>
          ,
          <addr-line>D. Lenat, F. van Harmelen, P. Clark (Eds.)</addr-line>
          ,
          <institution>Proceedings of, the AAAI 2019 Spring Symposium on Combining Machine Learning with Knowledge Engineering (AAAI-MAKE 2019). Stanford, University</institution>
          ,
          <addr-line>Palo Alto, California, USA, March 25-27, 2019.</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In video games, there is a high demand for non-player characters (NPCs) whose behavior is believable and human-like. The traditional hand-crafted AI driving NPCs is hard to scale up in modern open-world multiplayer games, and often leads to the uncanny valley of robotic behavior. We discuss a novel approach to solving this problem based on imitation learning. We combine demonstrations, programmed rules, and bootstrapping in the game environment to train a Deep Neural Network (DNN) defining the NPC behavior. Unlike Reinforcement Learning (RL), where the objective is optimal performance, we aim to reproduce a human player style from few demonstrations. We embed the implicit knowledge of the basic gameplay rules which are hard to learn via self-play or infer from a few demonstrations but are straightforward to capture with simple programmed logic. We build a composite model that interacts with the game to bootstrap the human demonstrations to provide sufficient training data for a more complex DNN model capturing stylized gameplay from demonstrations and enhanced with rules. We show that the method is computationally fast and delivers promising results in a game production cycle.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction and Problem Statement</title>
      <p>
        The leading advances in the field of RL in application to
playing computer games, e.g.,
        <xref ref-type="bibr" rid="ref4 ref5 ref7 ref9">(OpenAI Five 2018; Mnih
et al. 2015; Vinyals et al. 2017; Harmer et al. 2018)</xref>
        , strive
to train an optimal artificial agent (“agent” for short)
maximizing clearly defined rewards, and the game itself remains
fixed for a foreseen future. In contrast to that, during the
game development, the objectives and the settings are
entirely different. The agents can play a variety of roles with
the rewards that are hard to define formally, e.g., a goal
of an agent exploring a game level is different from
foraging, defeating all adversaries, or solving a puzzle. Also, the
game environment is frequently changing between the game
builds. In such settings, it is desirable to quickly train agents
that can work as an NPC or as bots for the automated test
and game balancing. Throwing computational resources and
substantial engineering efforts at training agents in such
conditions is not practical and calls for different approaches.
      </p>
      <p>The preferred solution would utilize only a few relatively
short episodes played by the developers. The time allowed
for augmenting these demonstrations by autoplay would be
limited, especially if the game engine doesn’t support a
dramatic speedup. Thus, the solution has to be sample-efficient
and train the agents offline. Using frame buffer for
training is problematic due to frequent changes of the game look
during development. In contrary, the conceptual types of the
game environment rarely change during its production. That
allows for the engineering of a substantial part of the prior
knowledge about the game states into a low dimensional
feature vector replacing the frame buffer. The core gameplay
also rarely changes which allows to describe desired
behavior as a compact model depending on core game features.</p>
      <p>In this position paper, we train a model of an NPC with
stylistics traits provided by demonstrations. We include the
aspects of behavior that are hard to infer from
demonstrations as engineered rules. We use low-dimensional
engineered features to provide similar information that is
available in organic gameplay. Finally, we train a composite DNN
model, which we show to be effective while inexpensive.</p>
    </sec>
    <sec id="sec-2">
      <title>Proposed Approach</title>
      <p>The methodology we explore assumes modest domain
knowledge and an intuitive understanding of the game
mechanics of a First Person Shooter (FPS). Such level of
understanding is usually widely available to the game
designers and software engineers working on the game. We aim at
a high level of abstraction to avoid too elaborate or
gamespecific formalization of that knowledge. With that in mind,
the three components we engineer are:
state space (features),
action space,
rules capturing implicit human knowledge.</p>
      <p>
        We complement the rules with explicit human
demonstrations to build a Markov ensemble, which provides basic
generalization. We use this aggregate model to drive an agent in
the game to automate the generation of additional bootstrap
data. The bootstrapped data set allows to train a
composite DNN model combining the demonstrations and the
engineered rules. As a case study, we explore an FPS game,
which is conceptually similar to the one investigated by
        <xref ref-type="bibr" rid="ref4">(Harmer et al. 2018)</xref>
        . Its core mechanics is generic enough
to make our approach applicable to other games in the same
or similar genre.
      </p>
      <sec id="sec-2-1">
        <title>State Space (Features)</title>
        <p>We instrument the game and expose its current state s to
the agent as a low-dimensional normalized vector s =
(c1; : : : ; cn; d1; : : : ; dm). Its components, c and d, describe
n continuous and m discrete features correspondingly. In an
FPS game, the continuous features could include the
distance to the adversary, the angle between target Line of
Sight (LoS) and the player orientation, velocity components,
ammo, and health. We map all continuous components to the
range jcij 2 [0; 1]. A mapping function for unbound
components like distance could be arctan or any similarly
behaving smooth function. For variables with naturally defined
range, like ammo or health, we use linear normalization. The
discrete components d may include binary values like the
presence of an LoS, sprinting on-off, and one hot coded
values of non-binary values, such as current animation type. By
construction, all di 2 f0; 1g.</p>
        <p>The total number of features for a single adversary in our
proof-of-concept implementation is quite small: n 20 and
m 20, depending on the experiment. In particular, we
explore only on-foot action and remain in the same game
modality, e.g., we exclude getting into and driving vehicles.
The locations and objects of interest like cover spots,
medical packs and ammo clips, can appear in the state vector
in different forms but we leave their detailed description to
future more detailed publications, where we intend to
explore more complex gameplay. Finally, we expose only the
features that are observable in organic gameplay to achieve
human-like gameplay.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Action Space</title>
        <p>
          The agent’s actions naturally map to the game controller
input encoded with a few variables. Actions a1; : : : ; ak
comprise of k continuous and discrete values. There are six
analog inputs from the controller: two sticks normalized to
[ 1; 1] and two triggers normalized to [0; 1] by design. Also
there are a few binary inputs from buttons. While all possible
combinations of the inputs may look intractable for
learning, as stated in
          <xref ref-type="bibr" rid="ref4">(Harmer et al. 2018)</xref>
          , our goal of imitating a
human player doesn’t require to cover all possible
combinations of inputs. Instead, we extract only those combinations
that occur in organic gameplay and encode them as one hot,
which drastically reduces action space complexity. The
resulting dimensionality of the action space in our experiments
turned out to be also in the low two digits k 15, depending
on the experiment.
        </p>
        <p>The proposed approach to the game state-action space
serves the two purposes: keep the action space
dimensionality under control and eliminate actions that humans never
take. Thus, the model we train is “fair” (i.e. is not using more
inputs at the same time than allowed by human anatomy).</p>
      </sec>
      <sec id="sec-2-3">
        <title>Capturing Gameplay Style with Markov</title>
      </sec>
      <sec id="sec-2-4">
        <title>Ensembles</title>
        <p>Learning stylistic elements of a policy is challenging. One of
the main difficulties comes from style evaluation, which is
highly subjective and not easily quantifiable. While inverse
reinforcement learning aims at finding reward functions that
promote a certain style and behavior, we don’t have
sufficient data at hand to solve this ill-posed problem. Instead,
we incorporate style directly from the demonstrations using
imitation learning. Our demonstration data consists of
perframe records of the already described engineered states and
the player actions encoded as the game controller inputs.</p>
        <p>Notice that we inherently deal with a partially observable
Markov decision process (POMDP) as not all the attributes
in the state space are observable (Borovikov and Beirami ).
To support Markov model capturing player style, we include
the history of N recent actions as part of the state space as
well. The depth N of the history affects the expressiveness
of style capture. In our experiments, we limit the depth to
less than a second of gameplay (N &lt; 60), which still
preserves the visual style of a simple reactive policy.</p>
        <p>
          To build the Markov ensemble, we use an approach to
style reproduction inspired by natural language processing
literature (see review
          <xref ref-type="bibr" rid="ref10">(Zhai 2008)</xref>
          ). We encode the
demonstrations as symbolic sequences utilizing a hierarchy of
multi-resolution quantization schemes ranging from detailed
to a complete information loss for the continuous and the
discrete channels. The most detailed quantization and higher
order Markov models can reproduce sequences of human
actions in similar situations with high accuracy, thus
capturing gameplaying style. The coarsest level corresponds to
a Markov agent blindly sampling actions from the
demonstrations. The hierarchical ensemble of Markov models
provides minimal generalization from the demonstration data.
The ensemble of such models is straightforward to build,
and the inference is a lookup process.
        </p>
        <p>
          We intend to provide a complete description of Markov
ensemble by publishing a preprint of our internal technical
report
          <xref ref-type="bibr" rid="ref1 ref2">(Borovikov and Harder 2018)</xref>
          .
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>Capturing Implicit Human Knowledge with</title>
      </sec>
      <sec id="sec-2-6">
        <title>Embedded Rules</title>
        <p>The outlined Markov ensemble can formally generalize to
previously unobserved states. However, at the coarsest level
of quantization, blind sampling from the observed actions
easily breaks an illusion of intelligent goal-driven
behavior. To address that issue, we trim the coarser levels of
quantization from the ensemble, leaving some states
unhandled by the resulting incomplete Markov policy. To
handle such states, we augment the Markov ensemble with a
small number of heuristics captured as rules. The rules
provide a reasonable response to the states never observed in
the demonstrations and not covered by simple
generalization with Markov models. To illustrate the possible types of
rules, we briefly examine two of them.</p>
        <p>One type of rules illustrates implicit short-term goal
setting for the model, eliminating Inverse Reinforcement
Learning from the problem formulation. An obvious
toplevel goal in an FPS genre is to find, attack and defeat the
adversary. A human player would not stand still or
wander while receiving damage from the adversary. Such state
would rarely if ever appear in demonstrations. Instead, more
often than not, the player would face the adversary and
engage in combat. The corresponding rule we propose boils to
simple “Turn to and approach the target whenever there is
nothing else to do”, captured with only a couple of lines of
code. The target here can be the adversary, a cover spot or
other objects of interest. The rule eventually transitions the
agent into a state that it can handle from demonstrations.</p>
        <p>For the second type of rules, an example could be as
simple as “Do not run indefinitely in the same direction if
moving in that direction is not possible”. Humans
proactively avoid blocked states, and they may never occur in
organic gameplay. Hence, learning such a rule directly from
the demonstrations is not possible since the data for such
blocked states is not present.</p>
        <p>In both cases, discovering the desired behavior via
exploration would require a substantial amount of time,
computational resources and a hand-crafted reward function. The
costs of such exploration are disproportional to the
simplicity of the decisions the agent needs to learn.</p>
        <p>To summarize, the engineered rules capture simple
human knowledge and complement the ensemble model in the
states unobserved in the demonstrations. When the trimmed
ensemble model fails to produce an action, the script checks
for the conditions like the blocked one to generate a fallback
action using the rules. The proposed combination of Markov
ensemble and the programmed heuristics provides a segway
to the next step which addresses the linear growth of the
ensemble with the number of demonstrations.</p>
      </sec>
      <sec id="sec-2-7">
        <title>DNN Model Trained with Bootstrapped</title>
      </sec>
      <sec id="sec-2-8">
        <title>Demonstrations and Rules</title>
        <p>
          The traditional RL requires thousands of episodes to learn
useful policies. Further, it is hard to engineer reward to
achieve desired style. Instead, we resort to imitation learning
where we treat the demonstrations as a training set for a
supervised learning problem. The model predicts the next
action from a sequence of observed state-action pairs. This
approach has proved to be useful in pre-training of self-driving
cars
          <xref ref-type="bibr" rid="ref6">(Montemerlo et al. 2006)</xref>
          and is the subject of analysis
in more recent literature, e.g.,
          <xref ref-type="bibr" rid="ref8">(Ross and Bagnell 2010)</xref>
          . The
main argument against casting IL as a supervised learning
framework is the inability to learn from new situations and to
recover from mistakes. The rules and feature engineering we
present above intend to address these issues by incorporating
prior human knowledge and bootstrapping demonstrations
to make it part of the supervised learning data. We achieve
it by augmenting our small set of demonstrations with
bootstrap. We construct an agent controlled by a Markov
ensemble enhanced with the rules and let it interact with the game
to generate new episodes. The generated augmented data set
feeds into training a DNN described next.
        </p>
        <p>The trained DNN model predicts action from the already
observed state-action pairs including those previously
handled by the scripts. The low dimensionality of the feature
space results in fast training in a wide range of model
architectures, allowing a quick experimentation loop. We
converged on a simple model with a single “wide” hidden layer
for motion control channels and a DNN model for discrete
channels toggling actions like sprinting, firing, climbing.</p>
        <p>
          While winning is not everything
          <xref ref-type="bibr" rid="ref3">(Borovikov et al. 2019)</xref>
          ,
we would like the agent to perform at a reasonable level of
FPS genre metrics, e.g., demonstrate good kill-death ratio or
defeat the adversary within the allowed limit of health and
ammo. As we observe in our experiments, the kill-death
ratio for the model we train can vary in wide range and is at
best around 10-40% of the teacher’s performance. It remains
an open problem how we can improve performance metrics
of a trained model using a limited amount of additional
training while preserving the style.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Conclusion and Future Work</title>
      <p>We tested our approach on a proprietary open-world
firstperson shooter game, which resulted in an agent behaving
similarly to a human player with minimal training costs.
Table 1 illustrates significant computational advantages gained
from adding engineered knowledge to the training process of
practically useful agents. However, when comparing our
approach to the mainstream RL, we need to emphasize the
difference between the training objectives, which makes such a
comparison only illustrative.</p>
      <p>The focus of our research is the practical cost-efficient
development of human-like behavior in games. Keeping the
performance of the model within certain limits is our
future secondary objective. Obtaining theoretical guarantees
for the style and performance of the trained agents would
require substantial additional work. Applying our approach
to multi-agent policies and covering multi-modal gameplay
is a logical next step. We plan to extend the encouraging
results shown here to other games in development.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Borovikov</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Beirami</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Imitation learning via bootstrapped demonstrations in an open-world video game</article-title>
          .
          <source>NeurIPS 2018 Workshop on Reinforcement Learning under Partial Observability.</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Borovikov</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Harder</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2018</year>
          .
          <article-title>Learning models to imitate personal behavior style with applications in video gaming</article-title>
          .
          <source>Technical report, Electronic Arts, Digital Platforms Data and AI</source>
          .
          <article-title>To be published as a preprint.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Borovikov</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Beirami</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Harder</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kolen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Pestrak</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Pinto</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Pourabolghasem,
          <string-name>
            <surname>R.</surname>
          </string-name>
          ; Chaput,
          <string-name>
            <surname>H.</surname>
          </string-name>
          ; Sardari,
          <string-name>
            <given-names>M.</given-names>
            ;
            <surname>Lin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ;
            <surname>Aghdaie</surname>
          </string-name>
          , N.; and
          <string-name>
            <surname>Zaman</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <year>2019</year>
          .
          <article-title>Winning Isn't Everything: Training Agents to Playtest Modern Games</article-title>
          .
          <source>In AAAI Workshop on Reinforcement Learning in Games.</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Harmer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Gisslen</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>del Val</surname>
            , J.; Holst,
            <given-names>H.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Bergdahl</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Olsson,
          <string-name>
            <given-names>T.</given-names>
            ;
            <surname>Sjoo</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          ; and Nordin,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <year>2018</year>
          .
          <article-title>Imitation learning with concurrent actions in 3d games</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Mnih</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Kavukcuoglu</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Silver</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Rusu</surname>
            ,
            <given-names>A. A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Veness</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Bellemare,
          <string-name>
            <given-names>M. G.</given-names>
            ;
            <surname>Graves</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ;
            <surname>Riedmiller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ;
            <surname>Fidjeland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. K.</given-names>
            ;
            <surname>Ostrovski</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          ; et al.
          <year>2015</year>
          .
          <article-title>Humanlevel control through deep reinforcement learning</article-title>
          .
          <source>Nature</source>
          <volume>518</volume>
          (
          <issue>7540</issue>
          ):
          <fpage>529</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Montemerlo</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Thrun</surname>
          </string-name>
          , S.; Dahlkamp, H.; and
          <string-name>
            <surname>Stavens</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <year>2006</year>
          .
          <article-title>Winning the darpa grand challenge with an ai robot</article-title>
          .
          <source>In In Proceedings of the AAAI National Conference on Artificial Intelligence</source>
          ,
          <fpage>17</fpage>
          -
          <lpage>20</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>OpenAI</given-names>
            <surname>Five</surname>
          </string-name>
          .
          <year>2018</year>
          . [Online, June 2018] https:// openai.com/five.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Ross</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Bagnell</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <year>2010</year>
          .
          <article-title>Efficient reductions for imitation learning</article-title>
          .
          <source>In Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics</source>
          , AISTATS
          <year>2010</year>
          , Sardinia, Italy, May
          <year>2010</year>
          ,
          <fpage>661</fpage>
          -
          <lpage>668</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Vinyals</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Ewalds</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Bartunov</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ; Georgiev,
          <string-name>
            <given-names>P.</given-names>
            ;
            <surname>Vezhnevets</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. S.</surname>
          </string-name>
          ; Yeo,
          <string-name>
            <given-names>M.</given-names>
            ;
            <surname>Makhzani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ; Ku¨ttler, H.;
            <surname>Agapiou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ;
            <surname>Schrittwieser</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ; et al.
          <year>2017</year>
          .
          <article-title>StarCraft II: A new challenge for reinforcement learning</article-title>
          .
          <source>arXiv preprint arXiv:1708</source>
          .
          <fpage>04782</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Zhai</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2008</year>
          .
          <article-title>Statistical language models for information retrieval a critical review</article-title>
          .
          <source>Foundations and Trends in Information Retrieval</source>
          <volume>2</volume>
          (
          <issue>3</issue>
          ):
          <fpage>137</fpage>
          -
          <lpage>213</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>