Generic User Modeling Systems 1

This chapter reviews research results in the field of Generic User Modeling Systems. It describes the purposes of such systems, their services within user-adaptive systems, and the different design requirements for research prototypes and commercial deployments. It discusses the architectures that have been explored so far, namely shell systems that form part of the application, central server systems that communicate with several applications, and possible future agent-based user modeling systems. Major implemented research prototypes and commercial systems are briefly described. 1 User Modeling Shell Systems 1.1 Historical Development User modeling is usually traced back to the works of Allen, Cohen and Perrault (see, e.g., [1, 17, 76]) and Elaine Rich [81, 82]. Inspired by their seminal research, numerous application systems in various application areas were subsequently developed that collected different information about, and exhibited different kinds of adaptation to, their current users. Several publications from this time [66, 70, 97] offer comprehensive reviews of first-generation user-adaptive applications. In this early work, all user modeling was performed by the application system. In most cases, there was no clear distinction between system components that served user modeling purposes and components that performed other tasks. From the mideighties onwards, such a separation was increasingly made (e.g., in [2, 38, 46, 88]), but no efforts are reported to make the user modeling component reusable for the development of other user-adaptive systems. In 1986, Tim Finin published his “General User Modeling System” GUMS [21, 22]. This software allows programmers of user-adaptive applications the definition of simple stereotype hierarchies (see Chapter MT2 [27]). For each stereotype, one can define the Prolog facts describing stereotype members and the rules prescribing the 1 The preparation of this paper (which is a radically revised and extended version of [50]) was made possible by an Alexander von Humboldt Research Prize. The author would like to thank ? for valuable comments on earlier drafts. system’s reasoning about them. At runtime, GUMS accepts and stores new facts about the user which are provided by the application system, verifies the consistency of a new fact with currently held assumptions, informs the application about recognized inconsistencies, and answers queries of the application concerning the currently held assumptions about the user. Albeit GUMS was never used together with an application system, it set the stage for future generic (i.e., application-independent) user modeling systems. At the same time, GUMS also defined their basic functionality, namely the provisioning of selected user modeling services at runtime that can be configured during development time. When filled by the developer with application-specific user modeling knowledge at the time of development, these systems would serve as a separate user modeling component in an application system at runtime. Early systems usually included a representation system for expressing the contents of the user model (such as some logic formalism, rules, or simple attribute-value pairs) and a reasoning mechanisms for deriving assumptions about the user from existing ones and for detecting inconsistencies in the user model. Kobsa [48] seems to be the first author who used the term “user modeling shell system” for such kinds of software tools. The term “shell system”, or “shell” for short, was thereby borrowed from the field of Expert Systems. There, van Melle and Buchanan [94] as well as Shortliffe [13] had condensed the experiences made with the medical expert system MYCIN [87] into EMYCIN (“Essential” MYCIN), an “empty” expert system that had to be filled with domain-specific rules for deployment as a “real” expert system. Commercial expert system shells like Knowledge Craft [45], KEE [36] and ART [16] became very popular in the late seventies and early eighties. User modeling “shells” had similar purposes as expert system shells, but the general underlying aims, namely software decomposition and abstraction to support modifiability and reusability, is of course much older than expert system shells.