Download [incr tsdb()]
Transcript
Aggregate Size (Number of Test Items) Phenomenon S_Types C_Agreement 200 4 6 8 10 String Length (‘i−length’) 12 14 lexical items Ø parser analyses Ø total results # overall coverage % 6.53 28.03 1.86 125 69.4 68 49 108 5.52 20.27 2.97 98 90.7 89 72 7.56 16.83 2.83 24 33.3 C_Diathesis−Passive 35 27 6.19 33.33 3.50 24 88.9 C_Tense−Aspect−Modality 83 79 5.77 23.34 1.89 70 88.6 C_Negation 2 word string Ø 180 179 5.94 17.86 1.45 42 44 5.30 17.45 1.52 40 90.9 79 55 7.96 27.45 3.03 40 72.7 174 121 7.36 25.78 1.77 71 58.7 NP_Agreement 46 37 4.89 18.24 1.24 29 78.4 58 NP_Modification 83 71 7.03 24.87 1.61 57 NP_Coordination 55 28 6.07 14.68 1.32 22 78.6 1184 871 6.48 23.32 2.08 642 73.7 Total Parsing Time 15 85.7 C_Modification C_Coordination 0 positive items # 235 C_Diathesis−Active C_Complementation 100 total items # 80.3 (generated by [incr tsdb(1)] at 14−nov−98 (17:58) − (c) [email protected]−sb.de) gctime firstreading allreadings totalcputime 10 5 0 2 4 6 8 10 12 String Length (‘i−length’) [incr tsdb()] Competence and Performance Laboratory User & Reference Manual Stephan Oepen Computational Linguistics — Saarland University 14 preface | i Preface [...] we view the discovery of parsing strategies as a largely experimental process of incremental optimization. [Erbach (1991)] [...] the study and optimisation of unication-based parsing must rely on empirical data until complexity theory can more accurately predict the practical behaviour of such parsers. [...] It seems likely that implementational decisions and optimisations based on subtle properties of specic grammars can [...] be more important than worst-case complexity. [Carroll (1994)] Contemporary lexicalized constraint-based grammars (e.g. within the hpsg framework) with wide grammatical and lexical coverage exhibit immense conceptual and computational complexity; as the grammatical framework aims to eliminate redundancy and factor out generalizations, the interaction of lexicon and phrase structure apparatus can be subtle and make it hard to predict how even modest changes to the grammar aect system behaviour. Additionally, in a distributed grammar engineering setup (i.e. for a project where several people or even sites contribute to a single grammatical resource) it becomes necessary to assess the impact of individual contributions, regularly evaluate the quality of the overall grammar, and compare it to previous versions. Besides concise coverage (i.e. competence) judgments, in most application scenarios eciency and resource consumption play an increasingly important role; hence, processing components typically provide a (potentially) large inventory of control parameters and preference settings. When tuning the analysis component to improve system performance, grammar writers often rely on introspection, knowledge of the grammar, and personal experience; yet, without systematic proling and performance analysis, processor optimization amounts to guessing parameter settings and constant experimentation. This user manual documents [incr tsdb()], an integrated package for diagnostics, evaluation, and benchmarking in practical grammar and system engineering. The software implements an approach to grammar development and system optimization that builds on precise empirical data and systematic experimentation as suggested by Erbach (1991) and Carroll (1994). [incr tsdb()] has been integrated with several contemporary hpsg development systems; the methodology and tools were designed for sucient exibility and generality to facilitate interfacing and adaption to other platforms. The [incr tsdb()] package is made available to the general public (see section 2.2 for details) in the hope that it may be useful to grammar and system developers and ultimately help in the study and comparison of salient grammar or processor properties across platforms. Developers are strongly encouraged to evaluate the package for connecting it to their systems; section 6.1 outlines various interface and daptation strategies. For advice and support please contact Stephan Oepen Computational Linguistics Saarland University Postfach 151140 66041 Saarbrucken (Germany) [email protected] (+49 681) - 302 41 76 The research and implementation of [incr tsdb()] has been carried out in close collaboration between Saarland University and CSLI Stanford over a period of several years. The (Draft of October 15, 1999) ii | [incr tsdb()] competence and performance laboratory author is greatly indebted to Daniel P. Flickinger (CSLI) for the ever outstanding cooperation, continuous inspiration and support, and the friendship that has evolved from the enterprise. Numerous colleagues at the two institutions and their scientic vicinities have contributed to the approach through invaluable discussions and productive criticism. To name only a few, the feedback provided by Uli Callmeier, John Carroll, Anne Copestake, Marius Groenendijk, Tibor Kiss, Sabine Lehmann, Rob Malouf, John Nerbonne, and Hans Uszkoreit has greatly inuenced the current results. The current [incr tsdb()] distribution contains code developed by Tom Fettig (codeveloper of the tsdb database) and Oliver Plahn (co-developer of the table and graph widgets deployed in the [incr tsdb()] podium); many thanks for these contributions. Part of the research underlying the [incr tsdb()] package was funded by the German National Science Foundation (DFG) within the Special Research Divison 378 (Resource-Adaptive Cognitive Processes ) project B4 (perform), by the Commision of the European Union through the tsnlp project (LRE-62-089), by Anite Systems, Luxembourg (through a subcontract on integration with alep), and by the German Federal Ministry of Education, Science, Research, and Technology (BMB+F) in the framework of the VerbMobil project (FKZ:01IV7024). Additional funding was supplied by CSLI and DFKI Saarbrucken through travel support to the author. (Draft of October 15, 1999) contents | iii Contents 1 Overview 1.1 The Name of the Game: [incr tsdb()] . . . . . . . . . . . . . . . . . . . . . . 1.2 Structure of the Document . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Installation and Startup 2.1 2.2 2.3 2.4 2.5 2.6 Distribution Policy | Copyleft . . . . . . Obtaining [incr tsdb()] . . . . . . . . . . . Installation . . . . . . . . . . . . . . . . . Registration . . . . . . . . . . . . . . . . . Loading and (Re)Starting [incr tsdb()] . . Troubleshooting: Something Went Wrong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Proling Terminology 4 Sample Session 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 First Time Preparation . . . . . . . . . . . . . . . Creating a Test Suite Instance . . . . . . . . . . . Browsing the Data . . . . . . . . . . . . . . . . . . Obtaining a Competence and Performance Prole . Prole Analysis . . . . . . . . . . . . . . . . . . . . Comparison to Earlier Test Runs . . . . . . . . . . Zoom: In-Detail Prole Comparison and Analysis . Some Useful Switches . . . . . . . . . . . . . . . . Recommendations for Future Experimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Reference Manual 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 1 1 3 3 4 4 7 8 8 11 13 13 14 15 17 18 25 29 33 34 35 [incr tsdb()] Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Contents of [incr tsdb()] Proles . . . . . . . . . . . . . . . . . . . . . . . . . 35 Storage and Reconstruction of Derivations . . . The Menu Structure . . . . . . . . . . . . . . . Visualization and Analysis of Proles . . . . . . Comparison among Proles . . . . . . . . . . . Data Selection and Aggregation . . . . . . . . . TSQL syntax . . . . . . . . . . . . . . . . . . . Importing Data . . . . . . . . . . . . . . . . . . Customization: `~/.podiumrc' and `~/.tsdbrc' Known Problems and Caveats . . . . . . . . . . Options and Parameters . . . . . . . . . . . . . [incr tsdb()] Command-Line Interface . . . . . . tsdb Database Format . . . . . . . . . . . . . . 6 Application Program Interface 6.1 6.2 6.3 6.4 6.5 1 Connecting [incr tsdb()] to Another Processor Parallel Virtual Machine . . . . . . . . . . . . ANSI C Clients . . . . . . . . . . . . . . . . . Common-Lisp Clients . . . . . . . . . . . . . Using [incr tsdb()] Distributed Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Draft of October 15, 1999) 35 35 35 35 35 35 35 35 35 36 36 36 37 37 38 40 43 43 iv | [incr tsdb()] competence and performance laboratory 6.6 Debugging [incr tsdb()] Distributed Mode . . . . . . . . . . . . . . . . . . . 44 A Contents of the [incr tsdb()] Distribution References (Draft of October 15, 1999) i iii overview | 1 1 Overview This manual documents [incr tsdb()], an integrated package for diagnostics, evaluation, and benchmarking in practical grammar and system engineering. [incr tsdb()] builds on the following components and modules test and reference data stored with annotations in a structured database; annotations can range from minimal information (unique test item identier, item origin, length et al.) to ne-grained linguistic classications (e.g. regarding grammaticality and linguistic phenomena presented in an item) as represented by the tsnlp test suites (Lehmann et al. (1996)); tools to browse the available data, identify suitable subsets and feed them through the analysis component of a processing system like lkb (Copestake (1992)), page (Uszkoreit et al. (1994)), and others; the ability to gather a multitude of precise and ne-grained system performance measures (like the number of readings obtained per test item, various time and memory usage metrics, ambiguity and non-determinism parameters, and salient properties of the result structures) and store them as a competence and performance prole ; graphical facilities to inspect the resulting proles, analyze system competence (i.e. grammatical coverage and overgeneration) and performance at highly variable granularities, aggregate, correlate, and visualize the data, and compare proles obtained from previous grammar or system versions or other platforms. 1.1 The Name of the Game: [incr tsdb()] As the [incr tsdb()] package has some (partly historic) internal structure (see gure 5.1 for a sketch of the system architecture), so has its name. The data and proles are stored in tsdb, a simple and portable relational database system (Oepen et al. (1997)) that grew out of the tsnlp project; the interfaces to lkb and page and the bulk of the proling and analysis routines are implemented in Common-Lisp: here, tsdb() is the central function call in the interface to the processors; nally, the graphical user interface and visualization components build on the Tk widget library (Ousterhout (1994)) and the Tcl command interpreter where `[incr]' is the Tcl equivalent of the C increment operator `++'. In short, [incr tsdb()] is a hybrid collection of individual bits and pieces, and so is the name of the package; fortunately, there is a unique, simple, and universal pronounciation for it tee ess dee bee plus plus 1 Possibly, some people will nd the name ugly, obscure, unpronounceable, meaningless, or really really geeky ... alas, it is the way it is. We hope they will like the software better. 1.2 Structure of the Document The following sections describe (i) how to obtain, install, and start [incr tsdb()], (ii) present the core functionality by walking trough a sample session, and (iii) detail the facilities of the [incr tsdb()] user interface as a reference manual for experienced users. Many thanks to Rob Malouf of CSLI Stanford for the transliteration and detailed comments on earlier working titles for the [incr tsdb()] package deal. 1 (Draft of October 15, 1999) (Draft of October 15, 1999) installation and startup | 3 2 Installation and Startup The following sections detail the (i) conditions under which [incr tsdb()] is made available, (ii) how to obtain, (iii) install, and (iv) register the package, and (v) the basic loading and start-up commands stand-alone or embedded mode with the lkb or page host platforms. Distribution details are likely to change in the near future when the package and up-to-date information become available for InterNet download. 2.1 Distribution Policy | Copyleft Aiming for a commonly-accepted (pre-standard) diagnostic and evaluation methodology and technology, wide dissemination and assessment of the [incr tsdb()] package is most desirable. Thus, the software (in source code) and data are made available to the general public, free of royalties, for academic or other non-commercial use, including deployment in corporate environments. Though there is no principled obstacle to license commercial use of the package, prior consultation with the author and a written license agreement will be required. All copyright and intellectual property rights remain with the author. To provide feedback on the distribution of the package, [incr tsdb()] users are encouraged to register (see below) and relay comments, bug reports or suggestions for improvement to the contact address given in the section preface above. While unregistered, the package is fully functional but, after several minutes of continuous use, a log message is generated and sent to a central protocol server (at Saarbrucken University). This notication message only contains information about the version of [incr tsdb()] used and the name of the machine on which it is currently running.2 Registering the software will eectively suppress all message generation for all future uses. Users of [incr tsdb()] are welcome to incorporate parts or all of the data and tools into applications or programs of their own and to modify, copy, and further distribute these as long as this license is preserved and included in its original form. It is strongly encouraged to contact the author for notications of changes or extensions to the package and to aim for integration with the standard release and public distribution for any substantial additions made. The author explicitly declines any warranty or liability for [incr tsdb()]. In particular, please note that: Because the program is licensed free of charge, there is no warranty for the program, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the program as is without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Should the program prove defective, you assume the cost of all necessary servicing, repair or correction. In no event, unless required by applicable law or agreed to in writing, will any 2 However, please note that because of the transmission protocol used over the InterNet, additional information becomes available to the registration server, viz. the time of [incr tsdb()] usage (when the message is generated) and the account used (the originator of the protocol message). (Draft of October 15, 1999) 4 | [incr tsdb()] competence and performance laboratory copyright holder, or any other party who may modify and/or redistribute the program as permitted above, be liable to you for damages, including any general, special, incidental, or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other programs), even if such holder or other party has been advised of the possibility of such damages. 2.2 Obtaining [incr tsdb()] As of October 1999, the [incr tsdb()] package is not yet available for public download over the InterNet. However, the entire package (all source code and data) can be made available to interested (and tolerant) users upon request; please visit the [incr tsdb()] web site (under construction) at http://www.coli.uni-sb.de/itsdb/ and contact the [incr tsdb()] author (see the preface section earlier in this document) to request download access. The author will try to supply support and consolation wherever possible. 2.3 Installation As of October 1999, [incr tsdb()] is only available for Franz Allegro Common-Lisp versions 4.3 or 5.0, and will only work on the Solaris (Sparc), Linux (x86), and OSF (DEC Alpha) platforms. The current pre-release version should be compatible with lkb versions 5.1 and 5.2 and the October 1999 incarnation of page.3 Besides, [incr tsdb()] can be congured as a stand-alone application that allows o-line data inspection and interfacing to external processors (see section 6). Depending on the target system (e.g. Solaris vs. Linux) and type of host platform available (e.g. lkb source vs. image distributions) dierent subsets of the available [incr tsdb()] archives need to be obtained and installed. All archive les comprising the [incr tsdb()] distribution are in gzip(1)ed tar(1) format; they contain subdirectories and les in such a way that they must be unpacked into the same target directory. This target directory is often referred to as the directory root for the [incr tsdb()] installation. It should either be created as a new directory prior to unpacking the archive les (for stand-alone [incr tsdb()] installation; see below) or be an existing directory that already serves as the root directory for an installation of the lkb host platform (embedded [incr tsdb()] installation; see below). When unpacking archive les, the target directory should be the current working directory; then, commands like, for example gzip -d -c source.tar.gz | tar xvf - 3 For access to and download instructions for lkb and page see http://www-csli.stanford.edu/~aac/lkb.html and http://www.dfki.de/lt/systems/page/ respectively. (Draft of October 15, 1999) installation and startup | 5 # 1 2 3 4 5 6 7 8 9 archive name archive description documentation.tar.gz libraries.tar.gz data.tar.gz source.tar.gz solaris-binaries.tar.gz linux-binaries.tar.gz osf-binaries.tar.gz fasl.tar.gz standalone.tar.gz draft User Manual and background reading Tcl/Tk libraries; support les; man(1) pages test suite skeletons and sample proles Common-Lisp and Tcl/Tk source les binary and object les for Solaris 2.6 (Sparc) binary and object les for Linux 2.2.x (x86) binary and object les for OSF1 (DEC Alpha) precompiled les for lkb image distribution [incr tsdb()] stand-alone loading environment Figure 1: Summary of archive les comprising the [incr tsdb()] distribution. Suitable subsets have to be chosen according to the target platform (operating system) and type of host platform installation, if any. Note that archive (9) must not be installed on-top of a lkb source installation. can be used to extract the contents of the selected archive les into the target directory. Subdirectories `bin/', `etc/', `lib/', `man/', and `src/' (and maybe others) will be created, if they do not already exist as part of the host platform. All Installations The archives (1) through (4) are required for all types of installation. Additionally, at least one of (5) to (7) is needed for all installations. The same installation can be used on multiple platforms (e.g. in a directory tree that is shared among Solaris and Linux hosts); platform-specic executables and libraries are stored in separate subdirectories of the `bin/' and `lib/' installation directories. lkb Source Distribution If [incr tsdb()] is installed on-top of an existing lkb source distribution, no additional archive les are required. In particular, please note that archive (9) conicts with the lkb source code distributed by CSLI Stanford and may only be used with binary-only lkb distributions or stand-alone [incr tsdb()] installations. After unpacking the [incr tsdb()] archive les, the Common-Lisp source code needs to be compiled into platform-specic object les; this can be achieved by loading the lkb using the regular (site-specic) procedure, and then evaluating the following form from the Lisp prompt: (compile-system "tsdb") The creation of object les is a rst-time only procedure, but has to be executed for each target system for which [incr tsdb()] is installed. Obviously, write-access to the target directory tree is required in this step; once compiled, the [incr tsdb()] installation can be shared among multiple users. lkb Binary Distribution Since the ready-to-run lkb executables distributed from Stanford cannot contain the Allegro compiler, precompiled [incr tsdb()] object les can be obtained as archive le (8). Besides, the lkb executable needs to be instructed about the location of the [incr tsdb()] directory tree, and the loading routines included as part of the (Draft of October 15, 1999) 6 | [incr tsdb()] competence and performance laboratory executable have to be redened for the compiler-less environment (the underlying problem is that the compiler was there at image creation time, such that the procedures dumped into the image assume a dierent conguration from what is ultimately available). Both requirements can be satised using either the lkb source distribution (see above) or the [incr tsdb()] archive le (9) supplied for stand-alone [incr tsdb()] installation. Users who are concerned about disk space may prefer archive (9) over the complete lkb source code, since only a few of the les are required to activate the loadup environment; on the other hand, lkb source code availability may be useful for reference purposes even for sites that only use the ready-to-run binaries. Either way, unpacking the lkb source code or the [incr tsdb()] stand-alone archive le (9) creates, among others, the le `loadup.lisp' in the `src/general/' subdirectory of the [incr tsdb()] root directory. To load [incr tsdb()] into a running lkb image, evaluate the following from the Lisp prompt (assuming that `~/itsdb/' is the directory root): (load "~/itsdb/src/general/loadup") (load "~/itsdb/src/general/defsystem")4 (load-system "tsdb") Loading of [incr tsdb()] into a lkb runtime binary could be automated by putting these three Lisp operations into the user-specic Allegro CL start-up le `~/.clinit.cl' or a separate le that can be loaded by means of the `-L' command-line option. However, automated creation of the [incr tsdb()] podium window (i.e. the last step triggered by the load-system() form) during Allegro CL start-up can only succeed if the Lisp is run from the Allegro CL { emacs(1) interface (see section 5.11 on known [incr tsdb()] problems for details). Before attempting to automate the loading of [incr tsdb()], it is therefore recommend to validate proper installation and loading by executing the interactive procedure described above. Stand-Alone [incr tsdb()] Installation If [incr tsdb()] is installed as a stand-alone package rather than as an add-on module for the lkb or page host platforms, archive le (9) is required to supply the loading environment (that is otherwise provided by the host platform).5 After unpacking all of the necessary archives, Common-Lisp source code has to be compiled for rst-time use, just like with a lkb source distribution (see above). Additionally, the Lisp system has to be informed about the location of the [incr tsdb()] installation directory. Again assuming that `~/itsdb/' is the [incr tsdb()] directory root, the following forms have to be evaluated from the Lisp prompt, preferably in a fresh Common-Lisp universe: (load "~/itsdb/src/general/loadup") (compile-system "tsdb") Reloading the defsystem() facility here is only required because the lkb ready-to-run images already contain a version that assumes availability of the Lisp compiler; since the image records that the defsystem() facility was loaded before, `loadup.lisp' all by itself does not require the (re)load of `defsystem.lisp' as it would normally. 5 For sites that do not have access to a suitable Common-Lisp environment, using the self-contained lkb image distributions for Solaris or Linux (see above) may be an option even if the lkb functionality is not required. Alternatively, a fully functional trial version of Allegro CL for Linux can be downloaded free of charge from `http://www.franz.com/'. 4 (Draft of October 15, 1999) installation and startup | 7 Target directories for the compiled object les (like `src/.fasl/' or `src/.lasl/) should have been created as part of the platform-specic (binaries) archive(s) already; if compilation fails because of missing object le directories, those need to be created manually using mkdir(1). 2.4 Registration As part of the installation or at a later time (e.g. once you found the package to be useful for your purposes), it is recommended that you register with the author. Registration is not intended to restrict distribution or application of the software, to charge users a license fee, or turn a prot from the sale of a large customer database. The main and only purpose of voluntary registration is to provide feedback to the author and to allow (occasional) relaying of information to the actual users; unless otherwise requested, registered users will be added to the [incr tsdb()] maling list. The maling list is used by the author to announce major version upgrades as they become available; it is very low trac. Registration proceeds as follows (i) make yourself known to the author: send email to the contact address containing information about the user name(s) and machine name(s) that you want to register; if you want to register for an entire InterNet domain (i.e. a wildcard machine name) or a group of users (i.e. all accounts for some host or domain), please give an estimate of the expected size of either set; (ii) receive one or multiple [incr tsdb()] license keys for your site by email; (iii) add the license key(s), in exactly the same format as they were received, to the le `Keys' in the `src/tsdb' subdirectory of your installation; e.g. $ ' * stefan uc * * malouf aac & *.coli.uni-sb.de *.dfki.uni-sb.de *.dfki.uni-sb.de eo.stanford.edu eoan.stanford.edu gerund anstac OE1234567890 OE1234567890 OE1234567890 OE1234567890 OE1234567890 OE1234567890 OE1234567890 % alternatively, e.g. if you have no write access to the [incr tsdb()] source tree at your site, the license key can be set from the le `~/.podiumrc' (see section 5.10) in your home directory; e.g. set globals(copyleft,key) OE1234567890; On start-up, the main [incr tsdb()] interaction window will display a copyright message that reects the status of the current copy; it will either display a message like | Registered Copy [OE1234567890] | (Draft of October 15, 1999) 8 | [incr tsdb()] competence and performance laboratory conrming the registration and the license key currently in use, or notify the user about the pending protocol message that will be generated after several minutes of continuous use (see section 2.1 above). 2.5 Loading and (Re)Starting [incr tsdb()] Once [incr tsdb()] has been installed and compiled (where necessary) successfully, requiring the `tsdb' system should be sucient in future sessions. Thus, after loading the host platform or the le `loadup.lisp' (for stand-alone installations; see above), respectively, evaluating the form6 (load-system "tsdb") should result in loading the [incr tsdb()] Common-Lisp code (from the `src/tsdb/lisp/' subdirectory of the source tree) into the current environment; if necessary, the system will suggest to (re)compile some or all of the source les rst and ask for conrmation.7 Once loading has completed, the [incr tsdb()] main interaction window | called the [incr tsdb()] podium (see gure 2 for a screen shot) | will be displayed. From here on continue through the sample session sketched in section 4 below. If, for some reason, loading the system code completes, but fails to create the podium window, or if the podium window has been closed (or destroyed) accidentally, the following Common-Lisp form can be used to request creation of the podium: (tsdb:tsdb :podium) The same command can be used to shutdown a running [incr tsdb()] instance and create a fresh interaction window (e.g. to recover from a system error or a misbehaving [incr tsdb()] status; please remember to submit problem reports where unexpected behaviour occurs). If the system reports an error in creating the podium window, or just fails silently, see section 2.6 below. 2.6 Troubleshooting: Something Went Wrong Many things can go wrong. Following is a list of problems related to [incr tsdb()] installation that have been encountered by other users; please check the list before seeking support from the author. (1) Failure to Create Podium Window If | after loading the [incr tsdb()] code | evaluating the form (tsdb:tsdb :podium) fails to create a new window presenting a view similar to gure 2, there is a problem in creating the external (from the Lisp perspective) Tcl/TK process. First, make sure the `DISPLAY' environment If you nd yourself using the [incr tsdb()] package regularly, you can in fact use the same (single) command to load both the host platform and the [incr tsdb()] code; thus, (load-system "tsdb") will automatically trigger the (load-system "lkb") (or equivalent for page) that is usually required to load the host platform from a source distribution. 7 Should the compilation and loading of the [incr tsdb()] Common-Lisp code fail, this may indicate a problem in the installation of the underlying host platform (i.e. lkb or page); see the appropriate documentation (if available) and check section 2.6 below. 6 (Draft of October 15, 1999) installation and startup | 9 variable is set correctly: the value seen by Lisp can be queried using the Allegrospecic function call (system:getenv "DISPLAY"); in turn, the host running the Lisp process (which will create the Tcl/TK process on the same machine) needs to be authorized to connect to the X server specied by the `DISPLAY' variable (see xauth(1) or xhost(1)). Secondly, verify that the platform-specic binaries have been installed correctly and are compatible to the local operating system and version: once more assuming `~/itsdb/' as the [incr tsdb()] directory root, it must be possible to execute the Tcl/TK interpreter from a shell as, for example: ~/itsdb/bin/solaris/swish++8 which should pop up an empty Tcl/TK window. For the Linux (x86) and OSF (DEC Alpha) platforms use `linux' and `osf' as the last directory component, respectively. 8 (Draft of October 15, 1999) (Draft of October 15, 1999) terminology | 11 3 Proling Terminology This section introduces some basic terminology that will be used throughout the discussion of the [incr tsdb()] approach. Host Platform Earlier versions of [incr tsdb()] were always embedded into Lisp-based grammar development environments (viz. the lkb or page systems); in this setup, the underlying grammar development and processing environment (sharing the same Lisp universe with [incr tsdb()]) is referred to as the host platform. Given the recent addition of a generic C application program interface (see section 6), the [incr tsdb()] package can now be run as a stand-alone application that communicates with client processes through a distributed inter-process communication mechanism (section 6.2). As of May 1999, however, the embedded setup still is the default solution for Lisp-based host platforms. Test Item The basis elements used in testing and diagnosis are called test items ; all [incr tsdb()] test data | classical test suites and corpora extracts alike | are structured as a sequence of test items, typically sentences or other types of phrases. A test item, typically, is composed of a string, used as input to the processor, together with linguistic and non-linguistic information associated with each test item (so-called annotations). The minimal annotations per test item are (i) a unique test item identier, (ii) the item length (in words), and (iii) a grammaticality (or wellformedness) code. Other types of annotations, e.g. in the tsnlp test suites, can include the syntactic categories of test items, the ssociation with one or more syntactic phenomena, and a (sometimes partial) description of tectogrammatical structure. When importing test items from ASCII les (see section 5.9), [incr tsdb()] will automatically generate this minimal level of item annotation. Test Suite Traditionally, the term test suite is used for hand-crafted sets of test data; within the [incr tsdb()] context this notion is generalized somewhat to include both manually-constructed data sets (typically containing systematically chosen grammatical as well as ungrammatical test items and aiming to present distinct phenomena in isolation or controlled interaction) and sequences of test items extracted from actual text corpora (typically excluding negative test items but demonstrating a richer combination of phenomena interaction and ambiguity). [incr tsdb()] makes a (technical) test suite subdivision according to processing state: see the discussion of test suite skeletons vs. instances below. Test Suite Skeleton Analogous to the material vs. data distinction assumed in many experimental paradigms, [incr tsdb()] reserves the term test suite skeleton to refer to pure collections of test material, i.e. sets of test items and associated annotations, that have not (yet) been enriched with processing results (or data, in this respect). Test suite skeletons are stored as partial databases that contain all-empty relations for those parts of the database schema (see section 5.2 for details) that are used for application-specic parameters obtained from a test run (see below). Test suite skeletons are read-only databases that (without profound [incr tsdb()] knowledge) cannot be modied. Test Suite Instance When preparing for a test run (see below), one of the available test suite skeletons is selected and subsequently instantiated to yield a new test suite (Draft of October 15, 1999) 12 | [incr tsdb()] competence and performance laboratory instance. The [incr tsdb()] podium body (see section 4) displays the list of available test suite instances (sometimes called the current working set) together with size and status information. Right after the creation of a new test suite instance, the database contains all information copied from the test suite skeleton that was instantiated and is then available to store new data obtained by processing the test material. To simplify data organization and result analysis, [incr tsdb()] typically assumes a one to one correspondence between test runs and test suite instances; when processing an already existing test suite instance, by default all non-skeleton data will be deleted. Test Run The process of batch processing a set of test items, obtaining competence and performance parameters for the application system used, and storing these results into the active test suite instance is referred to as a test run. Each test run is described in terms of the environment used for processing (like the application system and grammar versions employed, size of grammar and lexicon, current user and machine, start and end time, and others) and can have a descriptive comment associated with it. The completion of a test run lls in the system-specic sections in a test suite instance (i.e. the `run ', `parse ', and `result ' relations). (Compentence & Performance) Prole Complete test suite instances that have been enriched with competence and performance information for a token processing system (and grammar version) are frequently described as competence & performance proles. While, technically, proles are just test suite instances, i.e. databases in the current working set, the specialized term emphasizes the diagnostic nature of the data: within the [incr tsdb()] approach competence & performance proles are the fundamental building blocks for the in-depth, empirical analysis and comparison of various processing systems and strategies. Each [incr tsdb()] prole is a rich, accurate, and structured snapshot of relevant competence and performance properties of a token processor and grammar version. (Draft of October 15, 1999) sample session | 13 Figure 2: Screenshot of [incr tsdb()] podium: (i) the horizontal top area displays contextdependent (balloon-type) help; (ii) the menu structure reects the prototypical proling sequence: browsing the available data, processing and analysis of individual proles, and comparison and in-detail study among proles; (iii) the podium body lists all currently available proles and their key properties; (iv) the progress meter gives an estimate of the remaining work to complete the current task; nally, (v) the lower left minibuer serves for status messages and parameter input; when idle, the progress meter displays a digital clock. 4 Sample Session Following is a detailed, step-by-step discussion of a sample session; [incr tsdb()] is used to (i) create a new test suite instance (see section 3 for some key terminology), (ii) inspect the available test data, (iii) batch process a set of test items, (iv) inspect the resulting prole, and (v) compare it to results obtained from a previous grammar version. The examples assume a running [incr tsdb()] podium (in a state similar to what is displayed in gure 2) and a processor (either lkb or page) with a suitable grammar loaded. The individual steps (in the sequence given) can be taken as a guided tour of the machinery; all data sets used in the presentation are included with the distribution, so that the sample tables and graphs can be reproduced and serve as a basis for individual experimentation. 4.1 First Time Preparation Unless the user running [incr tsdb()] is, at the same time, the owner of the source tree (for the host platform and [incr tsdb()]), the package requires a dedicated directory that is used to store test suite instances and proles. The default installation comes with a central prole repository that contains a few example data sets for common reference; but the central directory will typically not allow write access (i.e. creation of new directories and les) by non-privileged users. Thus, as soon as an [incr tsdb()] user wants to create a new test suite instance and obtain a current prole | as will be demonstrated in this sample session | she has to designate a user-writable directory (a subdirectory `tsdb' in the user home directory, for example) for prole storage. After creation of the directory (e.g. using (Draft of October 15, 1999) 14 | [incr tsdb()] competence and performance laboratory Unx mkdir(1)), [incr tsdb()] has to be informed of the location: the `Options { Database Root' command pops up a directory input dialogue in the podium minibuer, e.g. database root: ~/tsdb/ The minibuer input dialogue provides emacs(1) -style context-sensitive completion | directory completion in this case | using the Tab key: hitting Tab (once) completes the current input as long as there is an unambiguous common prex for the current set of alternatives or displays the list of choices in the podium body; directories are completed including a trailing `/' (see above) to simplify the validation of the value entered. Return completes the directory input and makes [incr tsdb()] search the specied location for existing proles; the status message obtaining tsdb(1) database list ... is displayed in the minibuer while the le system is inspected. Obviously, for a newly created directory the list of available proles will at rst be empty. 4.2 Creating a Test Suite Instance The `File { Create' menu (actually, the menu cascade that pops up when the `Create' entry is selected from the `File' menu) displays the current set of available test suite skeletons, their names and size in test items. Assuming a default installation with English skeletons activated, the list should be something like ' $ & % create: Aged VerbMobil Data (`vm') 96 items CSLI (LinGO) Test Suite (`csli') 1348 items Development Test Suite (`toy') 26 items TSNLP Test Suite (`english') 4612 items VerbMobil 97 (`vm97') 100 items VerbMobil 97 (Partials) (`vm97p') 252 items VerbMobil 98 (`vm98') 347 items Selecting one of the `File { Create' entries, the `CSLI (LinGO) Test Suite' say, pops up an input dialogue in the minibuer lingo/nov-98/csli/98-11-20/page that prompts for the name for the new test suite instance to be created. The name suggested by [incr tsdb()] typically will contain the following path components (section 5.10 shows how to customize the system suggestion) hgrammari hversioni hskeletoni hdatei hprocessor i / / / / (Draft of October 15, 1999) sample session | 15 where hgrammari and hversioni (if applicable) are taken from the value of the (CommonLisp) variable *grammar-version*;9 hskeletoni is the short name of the test suite skeleton used (the name given in parenthesis in the `File { Create' list); and hprocessori identies the current host platform (e.g. lkb or page). The minibuer inputdialogue allows emacs(1)-style editing of the name suggested by [incr tsdb()]: Control-G aborts the current task, Return completes the input and starts the creation of a new test suite instance. After a few seconds, the new name is inserted into the list of available test suite instances in the podium body (sorted by lexicographic order); the status for a fresh test suite instance is `rw' (read-write), the number of items as in the skeleton used (i.e. 1348 for the current example), and the number of parses 0 for an empty prole. The new test suite instance is selected (made active) after creation. The current selection is indicated by highlighting the complete entry in the podium list; there can be at most one active test suite instance at any given time. 4.3 Browsing the Data Before starting a time-consuming test run, it can be desirable to inspect the avaiable test items from the active test suite instance. The `Browse { Vocabulary' command displays a sorted list of vocabulary (i.e. word forms) used in the test items together with the frequencies of occurence. The printed output goes to the window that was used to start the [incr tsdb()] podium (i.e. the lkb or page Lisp listener). The `Browse { Test Items' and `Browse { Phenomena' menus can be used to view (part of) the raw data as a table presenting a selection of database elds (attributes) for all or a subset of the records from the active test suite instance. Since computing the table layout and geometry for larger databases can take substantially more time than it should (i.e. from a few seconds to around one minute on an average cpu), it is in general wise to restrict the selection of the data to what is actually needed. A common way to select subsets of test items is by means of a classication of gross syntactic phenomena. Both the CSLI and tsnlp test suites deploy the classication scheme developed in the tsnlp project (see Lehmann et al. 1996 for details); `Browse { Phenomena' on the CSLI data set yields the display shown in gure 3. The `Browse { Test Items' menu, in turn, allows a selection from all available test items by phenomenon: `Browse { Test Items { C Complementation', for example, displays all test items, their unique identiers, actual input string, wellformedness code (where 1 is grammatical and 0 ungrammatical), and root category as follows: The value of *grammar-version* typically is determined from the matrix load le for a token grammar; for the November 1998 version of the LinGO erg, for example, the les `script' (lkb version) and `english.tdl' (page version) contain the statement 9 (setf *grammar-version* "LinGO (nov-98)") that results in values for hgrammari and hversioni as used in the example. (Draft of October 15, 1999) 16 | [incr tsdb()] competence and performance laboratory Figure 3: Display resulting from the `Browse { Phenomena' command on an instance of the CSLI test suite: the list of core syntactic phenomena | ranging from sentence types over complementation, agreement, and modication phenomena to negation and coordination | is used in classifying test items according to the phenomena they present. (Draft of October 15, 1999) sample session | 17 i-id 1 2 3 4 5 6 7 8 9 10 .. . i-input Abrams works . Abrams hired Browne . Abrams showed the oce to Browne . Abrams showed Browne the oce . Abrams bet Browne ve dollars that Chiang hired Devito . Abrams became competent . Abrams became a manager . Abrams became in the oce . Abrams became working . Abrams is interviewing an applicant . .. . i-wf 1 1 1 1 1 1 1 0 0 1 .. . i-category S S S S S S S S S S .. . Other means to browse the data selectively and identify meaningful subsets are the `Browse { Custom Query' and `Options { TSQL Condition' menues; they will be presented by example in section 4.7 below. From the `Browse { Test Items' table (and all similar tables that contain the i-id and i-input elds) it is possible to feed individual test items to the processor (e.g. to verify the parser well-functioning) by double-clicking any mouse button on the i-input eld. Interactive processing will not disable the trace and result displays or write new data to the currently active prole (see below). 4.4 Obtaining a Competence and Performance Prole While most of the [incr tsdb()] functionality is independent of the underlying platform (and, in fact, can be loaded and used without either lkb or page), processing a set of test items and obtaining a new competence and performance prole, obviously, presupposes that the host platform is congured and fully operational (i.e. can parse sentences interactively and produces the expected result). As for browsing the data (see above), it may seem desirable to save processing time by restricting a test run to a subset of the test items available in a token test suite instance. However, since all proles are stored as a database and made available for future reference, it is typically desirable to obtain complete proles that contain information for parsing all test items. Thus, all instances of the same test suite skeleton will always be mutually comparable to each other. Yet, under certain conditions one may want to restrict the parser to a non-exhaustive search strategy by means of the `Options { Switches { Exhaustive Search' switch. For page at least, non-exhaustive parsing means that the parser stops searching for solutions when the rst reading is found;10 for test data where the grammar assigns at least one reading to most test items (i.e. it achieves a good coverage rate), the non-exhaustive mode will result in a signicant reduction of procesing time. At the same time, again, obtaining a prole through non-exhaustive parsing limits interpretation and comparison of the data (e.g. there is no information on global ambiguity and the overall processing times are skewed); hence, non-exhaustive proles should be marked explicitly, for example by the name chosen for the test suite instance and the descriptive comment associated with the test run. The lkb parser (as of November 1998) uses a mostly breadth-rst parsing strategy that allows no meaningful distinction between exhaustive and non-exhaustive parsing. Hence, in the lkb system the times reported for nding the rst reading and nding all readings should always be the same. 10 (Draft of October 15, 1999) 18 | [incr tsdb()] competence and performance laboratory Assuming the default [incr tsdb()] settings and `lingo/nov-98/csli/98-11-20/page' (from above) as the active test suite instance, the command `Process { All Items' will (i) prompt for a descriptive comment (the purpose of this test run, say, or an unusual aspect of the current setup) in the minibuer; this comment and some additional information about the current condition of the host platform will be stored together with the actual parsing results into the resulting prole; (ii) delete (purge) all existing parses (none for the present example) from the active test suite instance (but see the documentation of `Options { Switches { Overwrite Test Run' in section 5.4); (iii) make the processor load the vocabulary required for parsing the test data (see `Options { Switches { Autoload Vocabulary') and print a lexicographically sorted listing of the number of lexical items retrieved and successful lexical rule applications per input word (see gure 4); (iv) put the processor into batch parsing mode (all graphical display for parsing results is disabled) and install the selected garbage collection strategy (see `Options { Switches { Enable Tenuring' and others); (v) feed the test data, one item at at a time, through the parser, gather a large number of processing metrics from the host platform (see gure 4 and section 5.2 for details), and store the results into the prole database. While processing vocabulary and test items, the progress meter indicates the percentage of work already completed (as shown in gure 2 above); upon completion of the test run, the listing of test suite instances is updated to reect the change in the number of parses in the active prole. The database that now contains both the test data from the test suite skeleton plus the overall test run information and individual processing results for each test item constitutes a new competence and performance prole, a large pool of structured information that is now ready for inspection. Despite all reservations to proles obtained from partial test runs expressed earlier, other commands from the `Process' menu allow a selection of a subset of the available data to be processed (viz. the `Positive Items', `Negative Items', and `TSQL condition' commands, of which the rst two have the obvious eect while the latter prompts for a TSQL condition to be used in constraining the input data; see section 5.8 for the precise syntax used). `Process { Vocabulary', nally, makes the host platform load the necessary vocabulary without triggering an actual test run. 4.5 Prole Analysis The [incr tsdb()] podium oers a number of pre-congured views on a data set. Additional conguration options allow the exible adjustment of the analysis perspective and granularity; additionally, [incr tsdb()] provides tools to visualize processing results on a per-item basis. All analysis commands use the currently active test suite instance (the one highlighted in the podium body) as the base data set; the selection can be changed by (single) clicking the left mouse button on another prole. The most common queries to a prole are implemented through the `Coverage', `Overgeneration', and `Performance' commands in the `Analyze' menu. Either of the three commands will select the neccesary data from the selected test suite instance, compute the (Draft of October 15, 1999) sample session | 19 $ ' retrieve(): found 1348 items. merge-with-output-specifications(): found 0 output specifications. ! ( ) | | | 23 reference(s) | [0 + 0] lexical entrie(s); 6 reference(s) | [0 + 0] lexical entrie(s); 6 reference(s) | [0 + 0] lexical entrie(s); | | | | 28 1 23 2 ... would years you yourselves reference(s) reference(s) reference(s) reference(s) | | | | [1 [1 [1 [1 + + + + 4] 0] 0] 0] lexical lexical lexical lexical entrie(s); entrie(s); entrie(s); entrie(s); largest-run-id(): largest `run-id' is 0. retrieve(): found 1348 items. merge-with-output-specifications(): found 0 output specifications. create-cache(): tsdb(1) write cache in `/tmp/.tsdb.cache.oe.60890'. install-gc-strategy(): disabling tenure; global garbage collection ... done. largest-parse-id(): largest `parse-id' (for `run-id' 1) is 0. (1) `Abrams works .' [0] --- 1 (1.1|0.4:1.0 s) <5:38> (13.8M) [0]. (2) `Abrams hired Browne .' [0] --- 1 (0.8|0.3:0.6 s) <5:63> (6.4M) [0]. (3) `Abrams showed the office to Browne .' [0] --- 1 (5.1:0.5|2.2:3.9 s) <24:218> (45.1M) [0]. (4) `Abrams showed Browne the office .' [0] --- 1 (1.8|0.5:1.4 s) <16:177> (8.3M) [0]. ... (1347) `The person to know is Kim .' [0] --- 5 (2.7|0.8:2.2 s) <18:267> (10.4M) [0]. (1348) `*The person whether to know is Kim .' [0] --- (2.5|2.0 s) <20:202> (9.5M) [0]. flush-cache(): tsdb(1) cache for `lingo/nov-98/csli/98-11-20/pageq' flushed. & % Figure 4: Excerpt of printout produced from the `Process { All Items' command. After loading and expansion of the necessary lexical entries, the parser log format aims to give a compact summary of some of the information gathered; besides the item identier, input string and an upper limit for chart edges (given in square brackets) if available, the information following the triple dash is: the number of readings obtained, the time used to nd the rst reading and overall (exhaustive search) processing time (in parentheses) the number of lexical items involved and total number of edges in the chart (angle brackets), the amount of memory used, and the number of (global) garbage collections while parsing (square brackets). (Draft of October 15, 1999) 20 | [incr tsdb()] competence and performance laboratory Phenomenon S_Types total items # positive items # word string Ø lexical items Ø parser analyses Ø total results # overall coverage % 235 180 6.53 17.92 2.50 126 70.0 68 49 5.94 12.78 1.67 42 85.7 179 108 5.52 14.27 2.27 100 92.6 C_Diathesis−Active 89 72 7.56 17.90 2.72 25 34.7 C_Diathesis−Passive 35 27 6.19 21.11 3.04 23 85.2 C_Tense−Aspect−Modality 83 79 5.77 13.94 2.29 72 91.1 C_Negation 58 44 5.30 9.80 2.10 39 88.6 C_Coordination 79 55 7.96 18.47 3.42 40 72.7 C_Modification 174 121 7.36 16.04 2.82 89 73.6 NP_Agreement 46 37 4.89 10.46 1.62 29 78.4 NP_Modification 83 71 7.03 15.54 2.47 62 87.3 NP_Coordination 55 28 6.07 11.29 3.42 24 85.7 1184 871 6.48 15.55 2.48 671 77.0 C_Agreement C_Complementation Total (generated by [incr tsdb()] at 26−nov−98 (19:03) − (c) [email protected]−sb.de) Figure 5: Coverage Prole for the LinGO erg on an instance of the CSLI test suite. Columns are (from left to right): tsnlp phenomenon name, total number of test items, number of grammatical test items, average test item length, average number of lexical entries per test item, average number of readings per test item, total number of test items successfully parsed, and percentage of grammatical items parsed; comparing columns 4 and 5 provides a measure of lexical ambiguity, while column 6 indicates syntactic ambiguity; for example, passive test items exhibit signicant lexical ambiguity because of multiple lexical entries for the copula and the passive participle; the latter also contributes to the higher measure of syntactic ambiguity for passives. requested information, and present it in a new window. Mostof the [incr tsdb()] analysis windows have several export buttons (e.g. labeled PostScript and LATEX ) that allow the output of the current view into a le of the requested format. The coverage and performance views are presented in gures 5 and 6, as PostScript and LATEX output respectively (see the table captions for a description of the individual columns); the overgeneration view is the mirror image of the coverage summary in that it uses the test items marked as ungrammatical (instead of the grammatical test items) as the base set. In general, a condensed summary of a prole as presented by the `Analyze' menu often already presents salient properties of a token test run and points the developer to further (typically more focused and in-depth) analysis. While the coverage and overgeneration views mostly aim to summarize properties of the grammar used (i.e. competence and ambiguity measures), the performance summary has its focus on system behaviour, viz. on resource consumption and parser eciency. Yet, it may still be desirable for a grammar (Draft of October 15, 1999) sample session | 21 Aggregate 20 i-length < 25 15 i-length < 20 10 i-length < 15 5 i-length < 10 0 i-length < 5 Total `lingo/nov-98/csli/98-11-20/page' items etasks lter edges rst total tcpu ] 3 10 121 853 303 1290 32482 21992 8483 3194 1209 3437 % 60.0 52.5 52.4 57.9 61.0 56.8 2520 1449 591 279 116 284 (s) 7.60 6.60 2.22 0.93 0.30 (s) (s) tgc (s) 24.21 40.40 14.13 14.63 20.29 3.83 5.46 7.06 0.60 2.21 3.04 0.32 0.86 1.41 0.27 space (kb) 97425 64918 24778 11511 5099 0.96 2.34 3.26 0.40 11863 (generated by [incr tsdb(1)] at 26-nov-1998 (19:06 h) { (c) [email protected]) Figure 6: Performance Prole for the LinGO erg on an instance of the CSLI test suite. Columns are (from left to right): the aggregation criterion (e.g. test items with a length of 20 to 25 words for the top row), the number of test items per aggregate, the average number of parser actions executed, the average percentage of potential parser actions ltered (i.e. not executed), the average number of edges built (active plus passive, where applicable), the average times to nd the rst reading and all readings (in seconds), average total cpu time used and share of garbage collection (gc) time, and the average amount of memory allocated (in kbytes) while parsing; the aggregation scheme chosen in the example indicates a strong correlation between the input sentence length and the amount of work done in the parser (e.g. when quantied by the number of tasks executed or the total time and space requirements) | as should be expected. writer to inspect the performance proles regularly, as, for example, an underspecied rule may well create large numbers of spurious edges (local ambiguity) without any noticeable increase in the number of readings obtained (global ambiguity). Similarly, system developers that take a token grammar (and its properties) as given could still use the competence proles to gauge ambiguity in dependency to the average input length, for example, as they are tuning the system to reduce lexical ambiguity (by use of a suitable lter, say). For all three (tabular) `Analyze' summaries, the aggregation scheme can be adjusted dynamically. While aggregation by phenomenon classication (if available) is chosen by default, the `Options { Aggregate By' menu provides a choice of aggregate computation by several relevant properties of the data set, such as, for example, the item grammaticality or string length, the degree of lexical or phrasal ambiguity, parsing complexity metrics, or time or space requirements. In addition, the `Options { Aggregation Parameters' dialogue allows the adjustment of the following parameters: aggregate size the width of each aggregate interval, i.e. the number of units along the current aggregation dimension that fall into a single class (default value is 1); aggregate threshold the minimum number of elements per aggregate: aggregates that have fewer members (sparse data) will be supressed (default 1); lower bound the lower aggregation boundary used: data points with a value (along the current dimension) below this limit will be ignored (default 0); upper bound the upper aggregation boundary used: data points above this limit will be ignored; the upper bound parameter can be left empty (unset) to represent innity (i.e. no upper bound, the default). (Draft of October 15, 1999) 22 | [incr tsdb()] competence and performance laboratory The `Aggregation Parameters' dialogue pops up in the minibuer as follows size 5 threshold 1 lower 0 upper Tab and Shift-Tab move between input elds; the Up and Down arrow keys increment and decrement values, respectively; see the balloon help for additional key bindings. Aggregation by string length with an aggregate size of 5 was used to create the performance prole given in gure 6. Besides the tabular views, the `Analyze' menu also allows the graphical presentation of individual proles. Again, there is a large degree of exibility, controlled by the following switches: `Analyze { Graph By' is a cascaded menu that selects the axis for the graph to be drawn, i.e. the dimension along which data points are plotted; the choice is very similar to the `Options { Aggregation Parameters' seen before and (as of January 1999)11 includes string and lexical length, the numbers of readings, parser tasks, edges et al. | nally, graphing by test item identier yields singleton aggregates that, at least for numerically ordered test sets, give a visual clue on the distribution (and homogenity) of some parameter(s) throughout a test run; `Analyze { Graph Values' is another cascaded menu that selects the value(s) plotted along the axis; the current choice includes four major groups, viz. parser actions, parser times, overall times, and chart edges built; each of the groups contains several attributes (e.g. time for rst vs. all readings) that can be selected or deselected individually; as the `Graph Values' menu (like a few others) often requires several selections at a time, it allows the use of the middle mouse button (instead of the default left mouse button) to (de)activate entries and leave the menu visible; selection of another group or attribute from another group deactivates all incompatible selections; `Analyze { Graph Parameters' nally, pops up an input dialogue similar to the aggregation parameters shown above; the four input elds have the same names and meanings for graph computation as for aggregation and table layout. To see how the graphing component works, the default values for all the switches will initially be sucient; `Analyze { Show Chart' produces the barchart given in gure 7 (top), viz. a distribution of aggregate sizes along the i-length (input string length) dimension. Clearly, the test set (the CSLI test suite in this example) only contains a very small number of test items longer than twelve words, above 15 we nd only occasional data points. Hence, it seems desirable to restrict the graph view to test items below that upper bound: the `Analyze { Graph Parameters' dialogue allows the adjustment of that parameter. Figure 8 shows the output of the `Analyze { Show Graph' command for the (default) `Parsing Times' group: the axis range has been limited and additional attributes (tcpu and tgc from the compatible `Overall Times' group) were added to the list of graph values (see section 5.2 for the precise semantics of the individual elds). Finally, the bottom of gure 7 presents the distribution of parser tasks by item identier (i.e. the substantial x y x 11 In fact, a larger number of attributes from a competence and performance prole could be used as the aggregation or graphing (x axis) dimension. The author explicitly welcomes comments and suggestions for extension. (Draft of October 15, 1999) sample session | 23 Aggregate Size (Number of Test Items) 250 200 150 100 50 0 (generated by [incr tsdb(1)] at 20-nov-1998 (21:17 h) - (c) [email protected]) 1 3 5 7 9 11 13 String Length (`i-length') 15 17 19 Figure 7: Barchart distribution of aggregate size by string length (top) and graphical distribution of parser tasks throughout test run (bottom); the graphs suggest that the test set is very sparsely populated with test items longer than twelve words and that parsing complexity diers immensely across the test set. (Draft of October 15, 1999) 24 | [incr tsdb()] competence and performance laboratory Parsing Time gc time first reading all readings total cpu time 10 5 0 2 4 6 8 10 12 14 String Length (‘i−length’) Parsing Time ? 14 ? 12 10 | rst reading | all readings | total cpu time | gc time ? 8 2 0 ? 6 4 ? ? ? 1 ? ? 3 ? ? 5 ? ? ? ? ? (generated by [incr tsdb(1)] at 20-nov-1998 (21:20 h) - (c) [email protected]) 7 9 String Length (`i-length') 11 13 15 Figure 8: Graphical view of various parsing time metrics in [incr tsdb()] (encapsulated) PostScript (top) and PICTEX (bottom) formats; both formats are fully scalable in size; as of January 1999, only the PostScript output mode allows logarithmic scaling of axes, though. (Draft of October 15, 1999) sample session | 25 variation of parsing complexity throughout the test run) obtained from changes to both `Graph By' and `Graph Values'; additionally, note that any upper limit imposed on axis values (15 for string length in the above examples) has to be reset in `Graph Parameters'. x 4.6 Comparison to Earlier Test Runs As errors are diagnosed and corrected, or as the grammar is modied to extend coverage to additional phenomena, it is often necessary to see how the current version of the grammar or system compares to a previous instance. This evaluation of progress in grammar and system development is facilitated by the commands from the `Compare' menu, allowing developers to construct summary reports that concisely contrast salient characteristics for two test suite instances. To obtain a contrastive summary, the two test suite instances to be compared have to be selected out of the current working set. In addition to the active prole (selection with left mouse button), the (second) prole that will be used as the source (or base) for comparison (i.e. the one that is compared to) can be selected either (i) by means of the `Compare { Source Database' menu or (ii) by clicking the middle mouse button on an entry in the podium body. As a metaphor for progress evaluation (e.g. while working towards an improved version of the grammar or system), the source data set is often referred to as the `(g)old standard' reference to which the current (new) results are compared; accordingly, the source for comparison is highlighted in gold in the podium body. Once developers commit themselves to a new grammar or system version (instance), the newer data can then serve as a gold standard for future experimentation. One such view of progress, given in Figure 9, shows how grammatical competence (of the LinGO erg) changed over the course of about one year: as before aggregated according to (coarse-grained) linguistic phenomena, the competence progress prole shows where the analysis of a particular phenomenon has improved and where not. The grammatical coverage has increased signicantly for many phenomena; where coverage has dropped slightly, overgeneration and the number of analyses generated were reduced at the same time. In general, the comparison reassures the grammar engineer that the work on constraining the grammar more rigidly towards the intended analyses (since the same grammar is recently deployed for generation purposes) is going the right direction (as should be expected). Oepen and Flickinger (1998) present a more detailed discussion of the interpretation of individual and constrastive proles and the use of multiple test sets. For grammars that can be processed on multiple platforms12 the comparison of competence can serve an additional purpose. When comparing platforms (or debugging), it is essential to obtain a precise account of how the same (version of a) grammar behaves on either system; such comparison typically greatly helps in the understanding of (formal or practical) dierences between platforms. The complementary comparison of performance proles tyically proofs useful in system optimization (i.e. tuning it to improved run-time behaviour) and, again, contrastive comparison between platforms. While it remains to be seen whether and which insights can be obtained from comparing across grammar and systems simultaneously, clearly the comparative table in gure 10 (top) | contrasting salient performance characteristics of lkb As of January 1999, the LinGO erg loads into both lkb and page; at least two other systems, viz. the abstract machines developed at Tokyo University and DFKI Saarbrucken, are expected to use it in the near future 12 (Draft of October 15, 1999) 26 | [incr tsdb()] competence and performance laboratory `lingo/oct-97/csli/97-11-26/page' vs. `lingo/nov-98/csli/98-11-20/page' October 1997 November 1998 Phenomenon lexical parser in out lexical parser in out S Types C Agreement C Complementation C Diathesis-Active C Diathesis-Passive C Tense-Aspect-Modality C Negation C Coordination C Modication NP Agreement NP Modication NP Coordination Total 3.57 2.73 3.05 3.12 4.21 3.19 2.93 2.87 2.98 3.47 2.78 2.17 3.12 2.53 1.76 2.76 2.70 3.64 3.38 2.63 3.36 2.69 2.44 2.33 3.42 2.75 % 68.3 81.6 91.7 34.7 88.9 82.3 93.2 78.2 66.1 81.1 80.3 89.3 % 16.4 57.9 25.4 47.1 50.0 100.0 0.0 29.2 35.8 44.4 8.3 66.7 74.9 32.9 2.74 2.12 2.55 2.35 3.31 2.42 1.79 2.32 2.16 2.15 2.17 1.90 2.38 2.49 1.57 2.33 2.67 2.96 2.25 2.10 3.34 2.74 1.61 2.44 4.17 2.50 % 70.0 85.7 92.6 34.7 85.2 91.1 88.6 72.7 73.6 78.4 87.3 85.7 % 18.2 57.9 31.0 47.1 37.5 100.0 0.0 29.2 43.4 44.4 8.3 40.7 77.0 33.2 (generated by [incr tsdb()] at 28-jan-1999 (15:46 h) { (c) [email protected]) Figure 9: Competence Progress Prole comparing the October 1997 and November 1998 versions of the LinGO erg: the columns repeat salient properties from the individual competence proles, viz. the lexical and syntactic ambiguity measures and the overall coverage (`in ') and overgeneration (`out ') percentages. and page on the same grammar | points to several relevant similarities and dierences between the two systems: both systems indicate a strong mutual dependency between the number of parser tasks executed (i.e. calls to the unier) and the time and space consumption; thus, overall system performance crucially depends on unier throughput (as should be expected); analysing wellformed input and enumerating all readings is signicantly more costintensive than rejecting ungrammatical input; for both systems, all three parsing complexity measures given uniformly show that processing illformed test items requires about two thirds (67 { 71%) of the resources used when dealing with grammatical input; in total, lkb processes sentences somewhat faster; while executing almost the same number of parser tasks (only about 5% less than page) it requires close to 30% less processing time and less than half of the space. However, when comparing the additional information in the bottom of gure 10, viz. the total results from the individual performance proles, more striking dierences manifest themselves because (in exhaustive search mode, at least) lkb uses a breadth-rst parser, the time to nd a rst reading is essentially the same as the overall processing time; though it may seem puzzling that the rst value is actually higher than the total time, this is due to the fact that timing information for individual readings is only available for items that were successfully analyzed; thus, the average is computed (Draft of October 15, 1999) sample session | 27 `lingo/nov-98/csli/98-11-20/page' vs. `lingo/nov-98/csli/99-01-29/lkb' PAGE LKB reduction Aggregate tasks time space tasks time space tasks time space i-wf = 1 i-wf = 0 Total 3758 2655 (s) 3.58 2.47 3437 3.26 etasks Platform items ] PAGE 1290 3437 LKB 1293 3249 (kb) 13043 8983 3587 2421 (s) 2.56 1.73 (kb) 5863 4054 % 4.6 8.8 (s) (s) 11863 3249 2.32 5338 5.5 lter edges rst total tcpu % 56.8 87.9 284 200 (s) 0.96 2.34 2.47 2.15 % 28.5 30.1 % 55.0 54.9 (s) (kb) 28.9 55.0 tgc space 3.26 0.40 11863 2.32 0.17 4653 (generated by [incr tsdb()] at 30-jan-1999 (15:06 h) { (c) [email protected]) Figure 10: Performance comparison between lkb and page on the November 1998 version of the LinGO erg and the CSLI test suite; here, the contrastive summary (top) is aggregated according to item grammaticality (wellformedness) as annotated in the input data (where `i-wf = 0 ' means grammatical) to highlight the corresponding dierence in parsing complexity; again the individual columns repeat salient properties from the individual performance proles and (in the rightmost block) indicate how they relate to each other (the space reduction of 55%, for example, means that lkb on average requires less than half of the memory allocated in page | a reduction of 90% would correspond to a factor of 10, i.e. one order of magnitude); the bottom table repeats the total numbers from the individual proles (compare to gure 6) to further illuminate the cross-platform comparison. (Draft of October 15, 1999) 28 | [incr tsdb()] competence and performance laboratory over a subset of the test items and should be compared to the value for `i-wf = 1 ' in the table above (2 56 seconds);13 as page uses an active chart parser while the lkb parser is purely passive, the number of edges recorded cannot be compared straightforwardly (280 for page is the sum of active and passive edges); since on average about 40% of the total edges are active, this suggests, that page actually builds signicantly fewer (passive) edges; the observation on edges is supported from a comparison of the substantially dierent lter rates obtained in the parser:14 for page the 3437 tasks that were eectively executed manifest about 43% of the total number of parser actions created (i.e. the inverse of the lter eciency rate), while in lkb the very similar number of executed tasks (3249) presents a much smaller fraction of the overall number of tasks created in the parser (viz. only about 12%); hence, lkb has postulated more than three times as many parser actions as has page; while part of the projected dierence in postulated tasks can be explained by the passive nature of the lkb parser | it has to recompute rule applications that in page would be represented as an active edge (at the cost of creating edges that may never yield a passive edge because successive daughters cannot be instantiated) | the vast mismatch in the numbers and the larger inventory of passive edges created (as noted above) point to another dierence in parsing strategy: in contrast to the lkb parser, page deploys a bidirectional head-driven parsing strategy; since about half of the grammar rules have fairly unrestricted leftmost (or rightmost) daughters that are only constrained once another daughter (often but not always the linguistic head) has been instantiated, the unidirectional lkb parser executes those rules many more times and thus gives rise to the observed proliferation of parser actions; summing up, the in total superior performance of lkb is most likely an eect of better unier throughput (especially noticeable in the 55% dierence in memory consumption) that overcompensates a less ecient parsing strategy; as there is no principled obstacle to combining the two approaches (or even modules), the performance proling suggests there is room for a signicant improvement in processing eciency. From this very detailed (and maybe sometimes longish) example of performance prole analysis and comparison, at least two conclusions should become clear: (i) the in-depth study and correlation of several parameters can greatly help in the identication of relevant system properties and guide developers to ways of tuning a system; and (ii) the contrastive : Strictly speaking, the grammaticality annotation does not necessarily imply that an item can actually be parsed. An aggregate on the basis of `readings 1 ' (at least one analysis was obtained) would therefore be the correct reference set; see section 4.7 below on how to restrict the data set accordingly. 14 Both systems deploy a mechanism to avoid parser actions (i.e. expensive unication) that can be predicted to fail: while (in the November 1998 version ) lkb maintains vectors of feature values embedded at paths that are known to have the highests failure potential, and validates compatibility of those vectors before doing the actual unication, page uses a table of rule incompatibility information compiled (oline) from the input grammar; the average lter rate quoted in the performance prole is the percentage of parser tasks that were postulated but ltered prior to execution. The lkb on-line quick check achieves signicantly better lter rates at slightly higher cost (restricted type unication vs. table lookup); recently (January 1999), the two systems have been synchronized to both use a pipeline of table lookup plus subsequent quick check and now obtain almost identical lter rates. 13 (Draft of October 15, 1999) sample session | 29 view of two performance proles given in the top of gure 10 reveals relevant information but cannot substitute for the more detailed individual prole summaries | both have their virtues in their own right. 4.7 Zoom: In-Detail Prole Comparison and Analysis Although all discussion of prole analysis and comparison so far was based on summaries of aggregated data (exploring some of the available variety in aggregation schemes), the underlying database concept allows the inspection of results at a ner degree of granularity. The `Detail' and `Options' menus (the latter when used in conjunction with other commands) provide several ways to zoom in and obtain in-depth views on the data, of which the following paragraphs present three by example. Firstly, the commands in the `Detail' menu implement the comparison between two proles on a per-item basis. The approach is in many respects similar to the Unx text utility diff(1) but scaled up for structured data sets; the following set of switches allows the customization to user needs: `Source Database' is the same as in the `Compare' menu; allows the selection of the source data set to which the active prole will be compared; alternatively, use the middle mouse button in podium body; `Phenomena' can be used to restrict the comparison to a subset of the linguistic phenomena (assuming phenomena information is available in the proles); the menu allows multiple selections (use the middle mouse button to toggle individual entries and keep the menu on display) that will be interpreted as a disjunctive condition when selecting data (see example below); the default is to use the full data set (i.e. all phenomena); `Decoration' allows to choose properties of test items (i.e. attributes from the annotations in the test suite skeleton) that will be presented in the display as decoration for the actual prole data; while the item identier is always included, the choice of additional attributes (as of January 1999) is limited to the actual item string (i-input ), the grammaticality code (i-wf ), and the root category for the item (i-category ); i-input is enabled by default (again, `Decoration' is a multi-selection menu); `Intersection' nally, is the central parameter in per-item comparison: this (multiselection) menu requires that at least one attribute from the prole data (i.e. information specic to individual test suite instances) is selected to be used for comparison; only items that dier15 in the attribute(s) chosen are included in the display and show the conicting values from both proles; items that are only included in of the data sets or dier in one of the decorating elds are printed separately with empty intersection values for one prole; Figure 11 presents an example that goes back to the competence comparison done earlier for two versions of the LinGO erg (see gure 9). As the `C Diathesis-Passive' As of January 1999, the comparison on values is by equality check only; therefore, the choice of intersection attributes is comparatively small (there is little point in comparing time or space metrics, as even the very same conguration of system and grammar may result in minor dierences for these elds; let alone semantic formulae). Again, it is expected to enlarge the range of comparison functions in the near future; thus, comments on user requirements are especially welcome. 15 (Draft of October 15, 1999) 30 | [incr tsdb()] competence and performance laboratory `lingo/oct-97/csli/97-11-26/page' vs. `lingo/nov-98/csli/98-11-20/page' (g)old new i-id i-wf i-input readings readings 232 234 258 259 260 261 262 263 267 268 .. . 1 1 1 1 1 1 1 1 1 0 .. . Abrams knew it to be true that Browne hired Chiang . Abrams made Browne hire Chiang . Abrams was known to be interviewing Browne . Abrams was known by Chiang to be interviewing Browne . Abrams was known to be interviewing Browne . There was known to be a bookcase in Browne's oce . It was known to be time for an interview . It was known to be true that Abrams hired Browne . Abrams was made to interview Browne . Abrams was made interview Browne . .. . 2 1 8 17 8 6 20 3 2 1 .. . 1 0 6 12 6 1 10 1 4 0 .. . Figure 11: Prole comparison on a per-item basis (for the `C Diathesis-Passive' phenomenon that exhibits a mild loss of coverage, signicant reduction in overgeneration, and overall elimination of ambiguity in gure 9); only items that conict in at least one of the elds selected for comparison are included in this view; items # 234 and 268 present reduced coverage and overgeneration, respectively; the overall number of readings obtained has decreased for most of the examples. phenomenon shows interesting dierences at the aggregate level, the conguration in this sample view includes the i-wf eld in the decoration, restricts the data to the phenomenon in question, and intersects on the number of readings obtained for the two versions. Double-clicking (the left mouse button) on the i-input eld in the detailed comparison table, as usual, makes the host platform process the test item interactively, i.e. with all debugging output enabled according to the current system conguration. Interactive processing is often useful, for example, to see what the actual analyses obtained from the system are. This, obviously, presupposes that the host platform has been loaded with the suitable grammar and is operational. Secondly, the tools introduced already for browsing and analyzing the data can be used in combination with suitable restrictions on the data to select and visualize relevant subsets. Again on the granularity level of individual test items, for example, a grammar engineer is most likely to request a listing of input that constitutes inadequacies in grammatical competence (as observed on the aggregate level of linguistic phenomena, say). Assuming that the test suite was at least annotated with judgements on grammaticality, the following paraphrased queries to the database correspond to lack of coverage and overgeneration, respectively: lack of coverage list test items (plus relevant properties) that are annotated as grammatical but failed to parse; overgeneration list test items (plus relevant properties) that are tagged ill-formed but accepted by the parser (i.e. were assigned at least one analysis). Although a demonstration of the [incr tsdb()] query language is included towards the end of this sample session, luckily, the user interface provides a few common selectional conditions as hard-wired choices in the `Options' menu. To realize the overgeneration query, (Draft of October 15, 1999) sample session | 31 for example, select `Illformed' plus `Analyzed' from the `Options { TSQL Condition' menu (e.g. using the middle mouse button in activating entries to take advantage of the multiselection feature) and execute any one command from `Browse { Test Items' or `Browse { Parses' to display the subset of items from the current prole that satisfy the condition. Note that, in contrast to the selection of phenomena seen before (e.g. in the `Detail' menu), the set of TSQL conditions chosen is applied conjunctively, i.e. only test items that meet all active conditions are selected.16 Once more, double-clicking on the i-input eld triggers interactive processing to ease debugging. Arbitrary TSQL conditions (going beyond the hard-wired choices in the user interface) can be composed by means of the `Options { New Condition' command, are then dynamiclly added to the `TSQL Condition' list, and can be applied conjunctively with other conditions. Yet, the composition of custom TSQL conditions presupposes a detailed knowledge of the underlying database organization (see `Browse { Database Schema', the examples below, and section 5.2) as only experienced [incr tsdb()] users command it; to ease experimentation, the condition input dialogue that pops in the minibuer supplies context-sensitive up completion of attribute names (pressing Tab once completes unambiguous prexes, twice displays the list of available completions) and a query history that can be traversed using the Up and Down arrow keys. [incr tsdb()] windows created while a selectional condition is in eect show the TSQL representation of the condition used as part of the window title (in square brackets); always remember that summary views on a prole may vary substantially for dierent subsets of the data. Finally, the `Browse { Custom Query' command allows the input of full TSQL clauses consisting of (i) a selection of attributes from the data set to project and display (`select' clause), (ii) (optionally) one or more relations to use in the selection (`from'),17 and (iii) (optionally) a | possibly complex | condition imposed on the selection (`where'). To complete the guided tour of the [incr tsdb()] package, the query concept is introduced by example presently but not discussed in any formal detail. Selecting `Custom Query' from the `Browse' menu pops up three consecutive input dialogues corresponding to the query clauses (i) { (iii); optional clauses (i.e. `from ' and `where') can be left empty and skipped using the Return key; again, Tab provides context-sensitive completion (on attribute names or relations, as appropriate) and Up and Down navigate in the history of prior input. To give a simple example, the following query is equivalent to the `Browse { Phenomena' command (listing the identiers, names, authors, and dates of construction of all phenomena encoded in the data set) and (on our sample instance of the CSLI test suite) yields the display shown in gure 3 above: This conjunction includes the choice made by phenomenon, if any, in the `Browse' submenus; therefore, the browse commands `All Test Items' or `All Parses', respectively, now display all entries that match the specied condition. 17 Since the tsdb query processor | simplifying greatly in contrast to regular SQL | can infer the set of relations required to satisfy a query from the set of attributes used, it is usually not necessary to specify the `from' clause. Only where attributes are shared between relations and the corresponding values (potentially) dier, the specication of the relation(s) requested will be desirable; besides, in some cases (complex join operations) the `from' clause can be used to optimize the query processing. 16 (Draft of October 15, 1999) 32 | [incr tsdb()] competence and performance laboratory select p-id p-name p-author p-date18 As a second (slightly more rewarding) sample query, let us return to gure 8 (correlating input length and parsing time): in the segment up to a sentence length of, say, ten words (where aggregate sizes should be large enough and not sparse), the graph exhibits noticeable peaks for i-length values of three and nine words. To see which individual test items in these two aggregates require overproportional processing times, the query select where i-length i-input i-id tcpu tgc (i-length = 3 && tcpu >= 100) || (i-length = 9 && tcpu >= 200) can be executed to extract the following table (reproduced partially): i-length 3 3 3 .. . 9 9 .. . i-id 86 795 366 .. . 452 394 .. . i-input There is programmers . Browne merely doesn't work . Does there be a bookcase in Browne's oce ? .. . Abrams does not know who was hired by Browne . Does Abrams work for Browne or work for Chiang ? .. . tcpu tgc 187 87 420 188 487 0 .. .. . . 1034 180 1206 173 .. .. . . Again, only the aggregated view in combination with the inspection of data at a nergrained level of granularity reveals properties of the data set that would very likely be missed otherwise,19 viz. that the i-length values for several test items are incorrect (in the test suite skeleton already); apparently apostrophes in the i-input eld break the word counting during test data import into [incr tsdb()]; and that test items of nine word length are ideosyncratically rich in their use of auxiliaries and coordination, two phenomena that largely contribute to lexical and global ambiguity and, accordingly, parsing complexity; similar ideosyncracies are typical for smaller collections of systematically constructed test data (test suites in the traditional sense) and can often be avoided when aggregating by lexical ambiguity (i.e. the words eld) rather than string length. The last example demonstrates how the [incr tsdb()] approach can be used in tuning a system for a particular application (and domain): in the VerbMobil project20 the page Remember that, to execute the query, the optional `from' and `where' clauses have to be skipped; thus, input the attribute names into the `select' window (experiment with the completion facility) and then press Return three times. 19 This argumentation has strong empirical support: the erroneous i-length annotations in the CSLI test suite skeleton slipped through unnoticed for more than a year, while the data set was in heavy use and frequently inspected at other levels of granularity. Obviously, this nding of the presentation will be corrected in the data distributed with [incr tsdb()] such that it shall not be reproducable in releases starting February 1999. 20 VerbMobil is a German research and development project working on a machine translation prototype for spoken (face-to-face) dialogues in the domain of appointment scheduling. 18 (Draft of October 15, 1999) sample session | 33 platform is adapted for linguistic analysis of speech recogniser output. As the analysis component in this application can only be granted a limited time slice to compute (at least) one analysis, an upper limit on the number of parser actions that can be executed is imposed (as of November 1998, the limit chosen is 4000 tasks). By means of the following [incr tsdb()] query, typically applied to a prole obtained from processing test data from the target domain (with no limit imposed): select where i-id i-input r-etasks time tcpu result-id = 0 && r-etasks > 4000 developers can inspect the set of test items (from the training set) that require more than 4000 tasks for the rst reading (`result-id = 0 ') already and, hence, will be lost when imposing the specied limit. 4.8 Some Useful Switches Besides the `Database Root' command from the `Options' menu (used in section 4.1 above to adjust the prole repository) the following facilities may be useful at some point in individual experimentation with the machinery: `Skeleton Root' prompts for a new directory containing test suite skeletons and the updates the choice in the `File { Create' menu; while the default [incr tsdb()] distribution ships with English skeletons enabled, this command can be used to activate the German or French tsnlp test suites, some German VerbMobil corpus data, and additional German material (made available by Stefan Muller of DFKI Saarbrucken) that all are included with the distribution; skeletons are organized into language-specic groups, such that by choosing, say, `src/tsdb/skeletons/deutsch' (relative to the root directory of the [incr tsdb()] source tree at your site) German data becomes available; `Update' reinitializes part or all of the [incr tsdb()] podium state; while relevant changes (e.g. to the database root) usually cause an automatic update, the `Update { Skeleton List' or `Update { Database List' commands can be used to force reloading the necessary information and adjustment of podium status; `Switches { Exhaustive Search' toggles the exhaustive search switch of the lkb and page processors (on by default); deactivating exhaustive search makes the parser return when a rst analysis was found which can speed up processing a test run signicantly; however, remember that non-exhaustive proles only contain partial information and should not be compared to complete data sets; `Switches { Overwrite Test Run' makes [incr tsdb()] overwrite existing test run information (if any) in the current prole or preserve it and append to the prole; when enabled (the default), [incr tsdb()] performs the equivalent of the `File { Purge' operation before the start of a new test run; cumulative proles are rarely useful, since they require the use of TSQL conditions to distinguish between the various test runs represented in the data set; (Draft of October 15, 1999) 34 | [incr tsdb()] competence and performance laboratory `Switches { Autoload Vocabulary' nally, toggles the autoloading of vocabulary prior to starting a new test run (on by default); disabling this switch can save time when the necessary vocabulary is known to be loaded (e.g. from a previous test run) or when it is desirable to include lexical access time in the accounting. 4.9 Recommendations for Future Experimentation (Draft of October 15, 1999) reference manual | 35 5 Reference Manual 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 Architecture Contents of [incr tsdb()] Proles Storage and Reconstruction of Derivations The Menu Structure Visualization and Analysis of Proles Comparison among Proles Data Selection and Aggregation TSQL syntax Importing Data Customization: `~/.podiumrc' and `~/.tsdbrc' Known Problems and Caveats [incr tsdb()] Following is a list of known [incr tsdb()] problems that | for various reasons | have not been solved; where appropriate instructions on how to avoid or handle a specic problem are supplied: (1) Allegro CL { [incr tsdb()] communication: once in a while the [incr tsdb()] podium may freeze, usually while processing a user request and displaying the busy cursor (small wristwatch); here, frozen really means that over some unusual period of time nothing (except, maybe, the display of the current date and time) changes in the podium window. Another symptom is that the [incr tsdb()] Lisp process claims to be idle (e.g. as part of the minibuer status line) at the same time. The problem in this situation seems to be that the Lisp process fails to notice an event (a request to perform some task) that was generated by the [incr tsdb()] podium. Typing something (e.g. a single Return key) into the Lisp interpreter usually seems to be sucient to wake up the Lisp process and make it process pending events. (2) Tcl/Tk background errors: under rare circumstances the Tcl/Tk interpreter (the process displaying the [incr tsdb()] podium window(s)) may fail to handle asynchronous events properly. Asynchronous events are generated, for example, whenever the [incr tsdb()] Lisp process enters a garbage collection and requests that the podium cursor be changed into the gc cursor (skull and bones). It seems that Tcl/TK internal state is sometimes corrupted, if an external event is delivered while the Tcl/Tk already has a substantial event queue to process; the problem may result in a pop-up dialogue window reporting some spurious Tcl/Tk background error. Itseems safe to acknowledge and ignore these background errors by clicking the OK button on the left of the pop-up dialogue; typically, the podium can then resume normal operation. (3) Start-up problems: running Allegro CL from a shell (rather than through the far more comfortable emacs(1) interface) and using the user-specic start-up le `~/.clinit.cl' or the `-L' or `-e' command line arguments to load and start [incr tsdb()], can freeze the Tcl/TK process running the [incr tsdb()] podium. Apparently, the Allegro CL (Draft of October 15, 1999) 36 | [incr tsdb()] competence and performance laboratory standard io system is not completely initialized during command-line processing such that the environment inherited from the shell (from which the Lisp is started) interacts very badly with the creation of the podium process during Allegro CL start-up. Until the problem can be resolved, it can be avoided by (a) using the Allegro CL { emacs(1) interface or (b) loading and starting [incr tsdb()] interactively after the Lisp start-up has completed (see section 2.5). Typically, this problem will only affect users of the lkb image distribution that want to take advantage of the short-cut procedure described in section 2.5. 5.12 Options and Parameters 5.13 [incr tsdb()] Command-Line Interface 5.14 tsdb Database Format (Draft of October 15, 1999) application program interface | 37 6 Application Program Interface Initially, the [incr tsdb()] package was developed as an extension to grammar development platforms (viz. the page and lkb systems) implemented in Common-Lisp; therefore, earlier versions of the proler were loaded into the same Lisp universe as the grammar development system (called the host platform; see section 3). This setup | sometimes referred to as integrated or embedded mode | allows [incr tsdb()] to call a set of Lisp functions to interact with the host platform directly. Though [incr tsdb()] embedded mode still is the default setup for lkb and page, it is not suited to connect the proler to non-Lisp systems like CHiC and LiLFeS (both implemented in ANSI C). To simplify integration with additional platforms, the [incr tsdb()] distributed mode was devised: building on a clean (and simple) ANSI C application program interface, processing systems run as clients to a a stand-alone [incr tsdb()] server process and communicate by means of a general interprocess protocol. The Parallel Virtual Machine (pvm) model (see below) was chosen for interprocess communication in distributed mode; this not only allows users to run [incr tsdb()] on one host while the processing system itself can reside on a dierent machine (i.e. distribution across a local network or the InterNet), at the same time it facilitates parallelization of test runs: a single [incr tsdb()] instance can communicate with multiple processors (typically on multiple machines) and distribute processing among the clients. To deal with typical robustness issues in distribution (e.g. network or host failure), the [incr tsdb()] distributed mode monitors client status and reschedules tasks when clients become unavailable. Parallelization of test run processing in lkb and page (or potentially other Lispbased systems) is achieved by virtue of a Lisp binding for the [incr tsdb()] application program interface. Hence, arbitrary processing systems can connect to the [incr tsdb()] distributed mode as long as they provide a functional interface that obeys the C calling conventions (possibly on the basis of foreign function facilities in Lisp or Prolog systems). The following sections summarize the steps required in adapting a new processing system to [incr tsdb()] distributed mode. The application program interface continues to evolve with the integration of additional processors; developers are therefore encouraged to seek assistance and feedback from the [incr tsdb()] contact address (see the preface section above) | especially if their site is based in a sunny, dry, and urban part of this planet (or has direct beach access). 6.1 Connecting [incr tsdb()] to Another Processor Integrating the [incr tsdb()] proler with a new processor (typically a grammar-based parsing system) requires two basic steps: interface setup a set of interface functions as specied in the [incr tsdb()] application program interface (see below) has to be provided; then, the processor can be linked with the [incr tsdb()] side of the interface (called the client library) and, on request, go into client mode; this mode blocks the client application until a processing request is received from the [incr tsdb()] controller: the application program interface then executes the corresponding client function and relays the result returned by the processor to [incr tsdb()]; parameter identication and adaption though the [incr tsdb()] data model aims to record system competence and performance in generalized (non-system-specic) (Draft of October 15, 1999) 38 | [incr tsdb()] competence and performance laboratory terms, typically not all parameters foreseen in [incr tsdb()] proles (see section 5.2) will be applicable (or available) for all processors; likewise, applications may want to record additional system-specic information (or request application-specic formats). It can sometimes require more eort to extract the relevant information from the processor (say, if the system did not record processing statistics already) than to establish the interface proper. From previous integration experience (viz. with the lkb and CHiC systems) it seems most practical to aim for stepwise and iterative integration and adaptation. Since only very few of the competence and performance parameters (the prole contents) are strictly required for basic [incr tsdb()] functionality,21 it is recommended to set up and validate the basic interface functionality before lling in the bulk of system parameters. Abstractly, the [incr tsdb()] application program interface is comprised of four functions that correspond to the following tasks on the client side: test run initialization obtain information about the current processing environment (i.e. parameters in the `run ' relation; see section 5.2 and the examples below); additionally, where appropriate, the client can be initialized and prepared for batch processing; test item processing given a single test item at each call, process the item and return system parameters (mostly stored in the `parse ' and `result ' relations) obtained while processing; test run completion complementary to initialization; (may) reset client to regular processing mode or complete client-side accounting; as of June 1999, no additional information is returned to [incr tsdb()]; tree reconstruction given a derivation tree (see section 5.3), attempt to reconstruct the corresponding phrase structure tree (i.e. replay the derivation) and return information about (the nature of) unication failure when applicable.22 The sections on ANSI C and Common-Lisp clients below (6.3 and 6.4, respectively) detail the language-specic instantiations of the interface functions. 6.2 Parallel Virtual Machine As noted above, the Parallel Virtual Machine (Geist et al. 1994) message-passing model is used for interprocess communication. pvm establishes a virtual machine (a set of cpus) from a collection of networked computers; a user-level pvm daemon on each physical node (e.g. a workstation or compute server) establishes a transparent message-passing layer that provides pvm applications with a uniform view of the virtual machine. Using pvm primitives, [incr tsdb()] can create client processes (i.e. [incr tsdb()]-aware application systems) on arbitray nodes in the virtual machine (or let pvm take the distribution decisions), transmit processing requests to available clients, and collect processing results (competence and performance parameters). Although, naturally, prole analysis and comparison may be severely restricted on partial data. Assuming a processor that does not ll in any of the system-specic parameters, test run processing will still be possible; however, the bulk of [incr tsdb()] analysis functionality will be non-functional. 22 As of June 1999, however, reconstruction mode is not fully implemented on the [incr tsdb()] side of the application program interface; while integrating with the LiLFeS application, this is expected to change really soontm , though. 21 (Draft of October 15, 1999) application program interface | 39 The [incr tsdb()] distribution includes pvm binaries for common platforms; these binaries were (mildly) customized, mostly to simplify pvm startup. There should be no principled obstacle, however, to using existing pvm installations where available. That the pvm daemons run as user-level processes means that no system-level installation or conguration support is required; at the same time, it obliges all users who want to deploy [incr tsdb()] in distributed mode to establish their personal pvm environment. Fortunately, setting things up is very simple and mostly a once-only task; the virtual machine, once established, is fully independent from [incr tsdb()] and, typically, remains available until explicitly (by user request) or implicitly (system reboot(8)) terminated. The following paragraphs summarize the necessary user action to make the pvm environment operational; for background information see the pvm man(1) pages distributed with [incr tsdb()] and Geist et al. 1994). User-Level Conguration A pvm virtual machine is composed of one or more physical hosts connected to a common network.23 Typically, individual users will have a set of machines available to them; the user-level pvm conguration le `~/.pvm_hosts' can be used to describe a group of hosts accesible to pvm that shall be joined into a virtual machine: ' $ & % # # list machines accessible to PVM; option fields are (see pvmd(8)) # # - dx: path to `pvmd3' executable (on remote host); # - ep: colon-separated PATH used by pvmd(8) to locate executables; # - wd: working directory for remote pvmd(8); # - ip: alternate (or normalized) name to use in host lookup; # &teej.is.s.u-tokyo.ac.jp dx=/home/users/oe/src/itsdb/bin/osf/pvmd3 wd=/tmp &eo.stanford.edu dx=/user/oe/src/itsdb/bin/solaris/pvmd3 wd=/tmp &eoan.stanford.edu dx=/user/oe/src/itsdb/bin/solaris/pvmd3 wd=/tmp top.coli.uni-sb.de dx=/proj/perform/itsdb/bin/solaris/pvmd3 wd=/tmp cpio.coli.uni-sb.de dx=/proj/perform/itsdb/bin/linux/pvmd3 wd=/tmp perl.coli.uni-sb.de dx=/proj/perform/itsdb/bin/linux/pvmd3 wd=/tmp limit.dfki.uni-sb.de dx=/proj/perform/itsdb/bin/solaris/pvmd3 wd=/tmp let.dfki.uni-sb.de dx=/proj/perform/itsdb/bin/solaris/pvmd3 wd=/tmp The `.pvm_hosts' le contains one host per line together with optional information about the location of the pvmd(8) executable on the target host, the working directory and search `PATH' environment variable to be used, and other conguration options (see the example le and the pvm documentation). A leading `&' character can be used to indicate that a particular machine is not to be activated by default; still, the `.pvm_hosts' entry makes conguration data for that host available to pvm such that it can be added dynamically on user request. The amount of data transferred between [incr tsdb()] server and clients is modest but can be nontrivial; hence, (assuming a high-performance client) network throughput in non-local networks (or a highly congested ethernet) may become an issue. Still, [incr tsdb()] distributed mode can make it feasible to utilize remote cpus, typically in addition to local resources; even successful test runs across the Atlantic Ocean have already been reported. 23 (Draft of October 15, 1999) 40 | [incr tsdb()] competence and performance laboratory Starting and Stopping Once the user-level pvm conguration has been completed, the virtual machine is created by starting the pvmd(8) daemon on one (arbitrary) node of the conguration. On startup, pvmd(8) will consult the `.pvm_hosts' le and attempt to start pvm daemons on all remote nodes automatically. Since remote pvmd(8) startup is achieved using the rsh(1) protocol, users have to make sure that the host used to start pvm has rsh(1) access to all nodes in the virtual machine (e.g. using the system-wide hosts.equiv(5) or the user-specic rhosts(5) mechanisms).24 The pvm daemon writes protocol messages into the le `/tmp/.pvmd.debug.user ' (where `user ' obviously is the active account name) that should be consulted in case of problems. Status information on pvm can be obtained using the pvm(1) shell that connects to an existing virtual machine and supplies a set of user commands to query pvm status (especially the pvm(1) `conf' and `ps' commands). The pvm(1) command `halt' can be used to shutdown the virtual machine (on all active nodes).25 However, it is often more convenient to leave an existing virtual machine alive even when it is not in active use; pvm daemons on the individual nodes can continue to run for weeks or months without user interaction. Only after explicit (`halt' or `kill' in pvm(1)) or implicit (node failure) daemon termination users should have to restart the virtual machine. 6.3 ANSI C Clients The [incr tsdb()] distribution contains a function library `libitsdb.a' or `libitsdb.so' (precompiled libraries are available for common [incr tsdb()] platforms; see appendix A for the exact content of the current distribution and the location of the library les) that clients should use to connect to the ANSI C application program interface. Prototypes for the functions used by the application to establish an [incr tsdb()] (client-side) binding are supplied in the header le `itsdb.h'. In [incr tsdb()] mode, basically, a client has to: (i) supply the four interface functions (according to the function prototypes given below) such that they can be called following the C calling conventions (thus, the functions need not be implemented in C as long as they obey the argument passing and return value specication); (ii) register these functions with the [incr tsdb()] side of the application program interface (i.e. make the entry points to the client-side functions known as function pointers) and notify the [incr tsdb()] server of the availability of the new client; (iii) go into client mode: call the slave() function (supplied in `itsdb.a') that blocks the application until a task request is received, executes the requested task (i.e. calls back into the client using one of the interface functions), and relays the information returned to the [incr tsdb()] server. The slave() function runs in an innite loop and only returns to the client when the server requests client termination (which is caused implicitly when the server becomes To validate that these conditions for pvm startup are met, it may be helpful to verify that a command like `rsh perl.coli.uni-sb.de date' (substituting the name of an actual remote node, naturally) can be completed successfully. For improved system security it may be desirable to designate a single (trusted) machine in the network as the host that is used to start pvm; then, other nodes in the virtual machine only have to allow rsh(1) access to this one machine. 25 Please note that the [incr tsdb()] process becomes part of the virtual machine the rst time the application program interface is used; thus, killing o all pvm processes may terminate the [incr tsdb()] session, too. 24 (Draft of October 15, 1999) application program interface | 41 unavailable) or an error in pvm communcation is encountered; the client should then terminate gracefully. Typically, a command-line option should be used to turn the processor into [incr tsdb()] client mode (which will then be supplied by the [incr tsdb()] server in process creation) that, in turn, makes the client execute a code fragment like: ' #include "itsdb.h" $ [...] if(!capi_register(create_run, process_item, (int (*)(char *))NULL, complete_test_run)) { slave(); } /* if */ exit(0); & % The interface functions supplied by the client are instantiated as follows in the ANSI C application program interface:26 int create run(char *data, int run id, char *comment, int interactivep, char *custom); with parameters:27 ! data name of the test suite instance to be processed; ! run id identier for this test run; ! comment descriptive comment supplied by the user; ! interactivep ag indicating whether the test run is to be processed in batch mode (regular [incr tsdb()] mode) or interactively (see below); ! custom an application-specic string that was (optionally) supplied in the client denition; when supplied, the client may take an appropriate action on this parameter (e.g. (re)load a script le or similar); since the interface functions need to return more information to [incr tsdb()] than just a simple function return value, while executing the client side of the interface (e.g. the create run() function) the standard output stream28 is redirected to the [incr tsdb()] server: the client is expected to write system parameters in a Lisp-like syntax (i.e. as bracketed pairs consisting of the parameter name and the corresponding Since client functions are registered by entry point (i.e. as function pointers), names for the interface functions can be assigned arbitrarily in the ANSI C application program interface. The function names used in the startup example above and the prototypes below are just one candidate choice of a consistent naming scheme. 27 The interface functions often have more parameters than would be strictly required to process the requested task; the additional information is supplied to the client to facilitate client-side accounting or the display of status messages, where available. Obviously, these surplus parameters can be safely ignored. 28 To avoid misinterpretation of output generated by the client, it is essential that | while executing a function from the [incr tsdb()] application program interface | nothing except system parameters is written to standard output. Developers preparing a client for [incr tsdb()] adaptation should make sure that additional (e.g. status or debugging output) is printed to the standard error stream instead: this stream is captured at the pvm layer, relayed to the server, and written to a protocol le without further interpretation. 26 (Draft of October 15, 1999) 42 | [incr tsdb()] competence and performance laboratory value) to this stream;29 following is an example of output generated by a recent lkb version when run in [incr tsdb()] distributed mode: (:platform . "Allegro CL (5.0.beta [Linux/X86] (1/1/90 0:56))") (:application . "LKB (version `$Date: 1999/05/14 04:10:18 $')") (:grammar . "LinGO (may-99)") (:avms . 3144) (:sorts . 0) (:templates . 11) (:lexicon . 588) (:lrules . 27) (:rules . 36) int process item(int i id, char *i input, int parse id, int edges, int exhaustivep, int derivationp, int interactivep); with parameters: ! i id identier for this test item; ! i input actual string for this item; ! parse id identier for this process request; ! edges upper limit for the number of edges (successful rule applications) to be built by the parser (`-1' for no limit); ! exhaustivep ag requesting exhaustive (complete) search: `1' by default; negative numbers encode an upper limit on the number of analyses to compute where `0' is interpreted equivalent to `-1'; ! derivationp ag asking the client to return not only the derivations for the analyses that were found but to append the complete list of all passive edges built to the `:results' eld (see section 5.3 and the example output below); ! interactivep similar to `interactivep' parameter in create run(): [incr tsdb()] users can request interactive processing of individual items (e.g. by doubleclicking on the i-input eld in most analysis tables; see section 4); while processing in interactive mode the client should activate all available debugging tools, like chart and result structure displays, for example; again, sample output produced by the lkb: (:others . 367136) (:symbols . 0) (:conses . 158480) (:first . 60) (:total . 60) (:treal . 93) (:tcpu . 90) (:tgc . 0) (:words . 5) (:l-stasks . 2) (:p-ftasks . 825) (:p-etasks . 55) (:p-stasks . 31) (:pedges . 14) (:rpedges . 4) 29 Though this mode of communication enables the client to relay processing results to the [incr tsdb()] server without much eort (i.e. using the regular printing routines available in all programming environments), it is, at the same time, not especially robust: since the client output is forwarded to the [incr tsdb()] server without further verication or format validation, failure to obey the surface format required in the interface can easily break the server-side of the interface (often, resulting in mysterious system malfunctioning). Therefore, it is expected to add an alternative mode of return parameter passing (using structured C objects) in the near future. (Draft of October 15, 1999) application program interface | 43 (:readings . 1) (:results ((:result-id . 0) (:time . 60) (:r-redges . 4) (:size . 147) (:derivation . "(\"root_cl\" 0 2 (\"subjh\" 0 2 (\"no-affix_infl_rule\" 0 1 (\"abrams\" 0 1 (\"abrams\" 0 1))) (\"third_sg_fin_verb_infl_rule\" 1 2 (\"work_v1\" 1 2 (\"work\" 1 2)))))"))) (:error . "") int complete run(int run id, char *custom); with parameters: ! run id name of the test suite instance to be processed; ! custom similar to `custom' parameter in create run(): an optional piece of system-specic information supplied in the client denition; as of June 1999, complete run() does not return any information to [incr tsdb()]. 6.4 Common-Lisp Clients 6.5 Using [incr tsdb()] Distributed Mode As of June 1999, there is no explicit support for [incr tsdb()] distributed mode in the graphical user interface; although the regular test run functionally will transparently work on top of a set of client processors connected in distributed mode, the conguration and creation of client processes still has to be achived manually (i.e. on the Common-Lisp side). The discussion of user interaction with [incr tsdb()] will build on the following concepts: cpu the term cpu is used to refer to the specication of client processors: each cpu is usually described in terms of a host (node in the pvm virtual machine that is used to run the client), the command to start the client (i.e. a binary executed on the remote machine), optional startup options, and one or more class identier(s) used to refer to individual cpus or cpu groups; [incr tsdb()] cpu descriptions can include additional information like the `custom' data passed to the client on test run creation and completion (see above); client a new [incr tsdb()] client (or client task) is created each time a cpu is activated (or initialized); activating a cpu here means to request (from the pvm daemon responsible for the node in question) that the command associated with the cpu be executed; after process creation the client itself is responsible for registration with the [incr tsdb()] server (typically through execution of the `slave()' function presented in sections 6.3 and 6.4 above) a client process on some node in the virtual machine that the [incr tsdb()] can communicate with by virtue of the application program interface (Draft of October 15, 1999) 44 | [incr tsdb()] competence and performance laboratory ' $ (setf *pvm-cpus* (list (make-cpu :host "let.dfki.uni-sb.de" :class '(:chic :chic@let) :spawn "/project/cl/chic/bin/chic" :options '("-tsdb")) (make-cpu :host "let.dfki.uni-sb.de" :class '(:chic :chic@let) :spawn "/project/cl/chic/bin/chic" :options '("-tsdb")) (make-cpu :host "limit.dfki.uni-sb.de" :class '(:chic :chic@limit) :spawn "/project/cl/chic/bin/chic" :options '("-tsdb")) (make-cpu :host "top.coli.uni-sb.de" :class '(:chic :chic@coli) :spawn "/project/cl/chic/bin/chic" :options '("-tsdb")) (make-cpu :host "top.coli.uni-sb.de" :class :lkb :spawn "/proj/perform/nacl/bin/acl" :options '("-L" "/proj/perform/lkb/startup") :create "/proj/perform/lingo/jun-99/lkb/script"))) & % Figure 12: Sample denition of [incr tsdb()] cpus (taken from a user `.tsdbrc' le): the class names chosen | at least in some cases | reect the client type as well as the node used to run the client. Usually, users will have a set of [incr tsdb()] cpus to choose from; when preparing for a test run, a selection from the set of available cpus is made to create clients as needed. The per-user conguration le `~/.tsdbrc' (see section 5.10) can be used to enumerate a list of cpus (similar to the pvm node listing in the `~/.pvm_hosts' le). 6.6 Debugging [incr tsdb()] Distributed Mode (Draft of October 15, 1999) appendix | i A Contents of the [incr tsdb()] Distribution (Draft of October 15, 1999) (Draft of October 15, 1999) bibliography | iii References Carroll, John. 1994. Relating Complexity to Practical Performance in Parsing with Wide-Coverage Unication Grammars. In Proceedings of the 31st Meeting of the ACL, 287 { 294. Las Cruces, New Mexico. Copestake, Ann. 1992. The ACQUILEX LKB. Representation Issues in Semi-Automatic Acquisition of Large Lexicons. In Proceedings of ANLP 1992, 88 { 96. Trento, Italy. Erbach, Karl Gregor. 1991. An Environment for Experimenting with Parsing Strategies. In Proceedings of IJCAI 1991, ed. John Mylopoulos and Ray Reiter, 931 { 937. San Mateo, California. Morgan Kaufmann Publishers. Geist, Al, Adam Bequelin, Jack Dongarra, Weicheng Jiang Robert Manchek, and Vaidy Sunderam (ed.). 1994. PVM | Parallel Virtual Machine. A Users' Guide and Tutorial for Networked Parallel Computing. Scientic and Engineering Computation. Cambridge, Massachusetts: The MIT Press. Lehmann, Sabine, Stephan Oepen, Sylvie Regnier-Prost, Klaus Netter, Veronika Lux, Judith Klein, Kirsten Falkedal, Frederik Fouvry, Dominique Estival, Eva Dauphin, Herve Compagnion, Judith Baur, Lorna Balkan, and Doug Arnold. 1996. tsnlp | Test Suites for Natural Language Processing. In Proceedings of COLING 1996, 711 { 716. Kopenhagen, Danemark. Oepen, Stephan, and Daniel P. Flickinger. 1998. Towards Systematic Grammar Proling. Test Suite Technology Ten Years After. Journal of Computer Speech and Language 12 # 4 (Special Issue on Evaluation):411 { 436. Oepen, Stephan, Klaus Netter, and Judith Klein. 1997. tsnlp | Test Suites for Natural Language Processing. In Linguistic Databases, ed. John Nerbonne. CSLI Lecture Notes. Center for the Study of Language and Information. Ousterhout, John K. 1994. Tcl and the Tk Toolkit. Reading, MA: Addison-Wesley Publishing Company. Uszkoreit, Hans, Rolf Backofen, Stephan Busemann, Abdel Kader Diagne, Elizabeth A. Hinkelman, Walter Kasper, Bernd Kiefer, Hans-Ulrich Krieger, Klaus Netter, Gunter Neumann, Stephan Oepen, and Stephen P. Spackman. 1994. DISCO | An HPSG-based NLP System and its Application for Appointment Scheduling. In Proceedings COLING 1994. Kyoto. (Draft of October 15, 1999)