The creation and markup of the user test transcriptions from the Danish spoken language dialogue system are described. The experiences on the use of the TEI Guidelines are reported. The TEI Guidelines have been extended with annotation for internal system modules.
keywords: spoken dialogue corpus, system dialogue, markup, TEI
The hyper text links in front of each section header allow navigation between sections:
The navigation between scenarios in the transcription files works in a similar way.
The Danish spoken language dialogue project has produced a demonstrator of an airline ticket reservation system to be used via the telephone [Baekgaard et al. 1995]. A user test of this system has been performed [Dybkjær et al. 1995a]. In the test, users would call the system, a wizard would type in user utterances, and the system would take care of the rest: text recognition, parsing, dialogue handling, database communication, and system phrase generation and replaying. In total, 12 subjects generated 2468 tokens and 168 types using 998 turns and 57 dialogues, cf. Table 1. Each subject solved four task scenarios.
The user sessions were logged: system internal key communication on a file and spoken conversation on tape. Afterwards the data were transformed into formal transcriptions. The present report describes this transformation and the resulting transcriptions.
The transcriptions serve several purposes:
In order to serve these purposes the TEI Guidelines have been used as a basis [Sperberg-McQueen and Burnard 1994]. The Guidelines define a document type definition (dtd) in SGML, thereby providing a formal, machine manipulable structure for text markup. Furthermore, the Guidelines aim at supporting the exchange of electronic texts between people.
Section 2 describes the transcription process. The full transcriptions format is defined and discussed in Section 3. These transcriptions form the basis of all further analysis of the user test material. In Section 4 one such important use is described: the extraction and pretty-print for purposes of qualitative user problem analyses. Finally, Section 5 discusses the transcriptions and the use of the TEI structure. After the references appendices contain a number of code tables (A), a brief survey of software used (B), and a small example of the log files (C).
Table 1 [« | »] Transcriptions survey.
The subjects used scenarios with either graphics representation (group G) or text representation (group T) of time information.
The subject numbers provide links to the transcriptions.*) Subject 1 was one of the designers used for set-up test, and the dialogue was never transcribed.
Subject* group Date Dialogues User
turnsUser
tokensUser
types2 G 1995-1-13 4 90 139 17 3 T 1995-1-13 4 67 160 53 4 G 1995-1-16 4 72 235 59 5 T 1995-1-16 5 85 299 45 6 T 1995-1-16 5 86 261 55 7 G 1995-1-19 5 97 158 32 8 T 1995-1-19 4 68 139 44 9 G 1995-1-19 4 61 107 25 10 G 1995-1-15 4 64 114 30 11 T 1995-2-9 7 139 450 76 12 G 1995-1-25 4 67 109 26 13 T 1995-2-10 7 102 297 67 Total 12 1995 57 998 2468 188**
**) Total types is the union of the individual subject types.
During sessions the conversation and the system module communication were logged, and later-on the logged data were converted into machine manipulable, electronic, structured transcriptions. These transcriptions were then used both for statistical processing and for extractions of various parts for the purpose of more qualitative analyses. This section describes how logged data were transformed into transcriptions. A description of the transcription markup elements is given in Section 3.
Each subject had one session with the system, solving the four task scenarios in one or more telephone calls. During a session a log file was created containing, cf. Appendix C:
The communication with the devices was time stamped although no direct link to the discourse structure can be inferred. The other data (keyed-in phrases and system phrases) would appear in roughly chronological order although in particular the keyed-in phrases appear delayed.
In addition the conversation between the system and the subject was recorded on a tape recorder.
For each session the log file and the tape recording were merged into one transcription following an extension of the TEI markup. The conversion was semi-automated, using emacs-lisp functions in several, iterative phases and with visual inspection of the transcriptions to check correctness and completeness. Overall, the following steps were taken:
The use of the keyed-in phrases as a first approximation of the user utterances saved a lot of time in the transcription process since the transcriber could concentrate on the relative few errors in what the wizard had keyed in.
An illustration of a log file and the corresponding transcription can be found in Appendix C.
This section describes the markup of the corpus. For the transcription markup the TEI Guidelines [Sperberg-McQueen and Burnard 1994, Ide and Véronis 1995] were used as a basis. The Guidelines provide a concrete set of SGML document type definitions (dtds) for the structured markup of any kind of text and contain recommendations on their use. In particular, the Guidelines contain a proposal for the markup of transcriptions of spoken language. Even though extensions have been necessary, the Guidelines provide a standard that may make other uses and others' uses of the material easier, and standard SGML tools can be applied in the manipulation of the transcriptions.
The transcriptions are TEI conformant in the TEI local processing format [Sperberg-McQueen and Burnard 1994, Chapter 28], with the possible exception of additional structure in parse and database transcriptions which have not been of primary interest. The transcriptions are in TEI interchange format with the exception that the common corpus header and the address of Centre for Cognitive Science have been delegated to separate files by means of external entities. The corpus header information is a subset of the information in the teiheader, and the address is highly redundant. Each transcription of a session (one subject) is placed on a separate file mainly due to processing difficulties caused by their size.
Briefly, the transcriptions contain the following elements, not mentioning the enclosing header and body elements. The elements <scenario> and <div> structure the transcriptions into dialogues and subdialogues, respectively. A dialogue contains a sequence of utterances <u>. Related to user utterances are what the user keyed in <keyed>, what was recognised <recognised>, and semantic information which the parser could extract <parse>. In between utterances, requests to the database occur <database>. Finally, within utterances certain lexical and extralinguistic information is recorded <t> <pause> <vocal> <kinesic>.
Each of the primary elements of the transcriptions are described in the subsections below. For each element the purpose, an example, the document type definition (dtd), and some comments are given. The full definitions are in the files dialogue.ent and dialogue.dtd.
Marks a new call to the system or a new task and identifies the task scenario.
example:
<scenario representation=G group=1 scenario=2 variation=a>
This scenario code indicates a graphic
representation (G) of the 1st task set, the 2nd scenario, in date
variation a.
dtd:
<!ENTITY % scenario 'INCLUDE' > <![ %scenario; [ <!ELEMENT %n.scenario; - o EMPTY > <!ATTLIST %n.scenario; representation (G | T) #IMPLIED group NUMBER %INHERITED scenario NUMBER %INHERITED variation CDATA 'a' TEIform CDATA 'scenario' > ]]> <!ENTITY % newbody 'INCLUDE' > <![ %newbody; [ <!ELEMENT %n.body; - O ((%n.div; | %n.scenario;)+) > <!ATTLIST %n.body; %a.global; %a.declaring; TEIform CDATA 'body' > ]]>
comments: The structural place relative to the divisions is not enforced by the the dtd. Moreover, the redeclaration of <body> is the only unclean modification [Sperberg-McQueen and Burnard 1994, Section 29.1] of the TEI dtd. Both defects are insignificant for the current purposes and may be repaired by a more clever contents model for <body>.
Mark overall discourse segments within a dialogue. The divisions are defined relative to the dialogue model structure.
example: <div n="1" type="pre" id="C2-1">
The first division (n="1", -1) of subject two
(C2) is a "pre" segment (pre), i.e. initial greetings
and user modeling.
dtd: This element is unchanged from the TEI Guidelines [Sperberg-McQueen and Burnard 1994, Section 7.1.1]. The attributes have the following restrictions in their use:
Describes what is said, who said it, and what is talked about.
example: <u id="S2-3a" who="S" topic=customer>
<pause dur=1>kundenummer - <t type=cardinal
value="4">4</t></u>
This is the system's
(S) first part (a) of the third turn (3)
during conversation with the second subject (2). The
utterance concerns the customer number (topic=customer).
dtd:
<!ENTITY % newu 'INCLUDE' > <![ %newu; [ <!ELEMENT %n.u; - - ((%phrase | %m.comp.spoken)+) > <!ATTLIST %n.u; %a.global; %a.timed; trans (smooth | latching | overlap | pause) smooth who IDREF %INHERITED topic CDATA %INHERITED TEIform CDATA 'u' > ]]>
This element extends the TEI Guidelines with the topic attribute [Sperberg-McQueen and Burnard 1994, Section 11.2.7]. In the user test transcriptions it can take the values listed in Table 6. The attributes have the following meanings:
format: speaker subject - number part
comments: For the system, turns have been divided into several (sub-) utterances each denoted with a separate <u> element. This is feasible for the highly structured phrases in the current system. In general it may not be possible to separate the turns into utterances with a single, distinct topic, and a more sophisticated markup may become necessary.
User utterances overlapping with system speech.
example: <u who="C-2" trans=overlap> Ni
ti.</u>
The overlap is with the previous phrase, or
just with the current turn. In most cases the user says something
during a long pause in a system turn, but the system does not listen
because it does not expect users to speak during its turn.
dtd: The same as for turns.
comments: Overlapping speech is in principle not different from other utterances, but since turns are defined relative to the system and it is not listening during its turns, overlapping speech is marked as utterances, but not as part of the turns. For this reason there is no reference to the turn it overlaps and it must be placed textually in the right context.
As typed in by the wizard, but after expansion of abbreviations, e.g. "29" abbreviates "niogtyve (twentynine)". The abbreviations are listed in the file P1.abb and were introduced in order to speed up the wizard's typing. The keyed-in is input to the simulated recogniser.
example: <keyed
which="U3-21a">onsdagfo8rstefebruar</keyed>
The
which attribute refers to the immediately preceeding
utterance.
dtd:
<!ENTITY % keyed 'INCLUDE' > <![ %keyed; [ <!ELEMENT %n.keyed; - - ((%phrase | %m.comp.spoken)+) > <!ATTLIST %n.keyed; %a.global; which IDREF %INHERITED TEIform CDATA 'keyed' > ]]>
comments: The id attribute must refer to a user utterance, i.e. a <u> with attribute who="U". The abbreviation scheme performed nicely, but since only the expanded forms are recorded, expansion errors are not marked. E.g. there was a clash between the expansion scheme for numbers and the input format of the simulated recogniser: textrec expected 'æ' 'ø' 'å' to be represented as 'a5' 'o8' 'a6', but typing this would be incorrectly expanded into 'afem' 'ootte' 'aseks' by the number expansion. For this reason e.g. 'lørdag' was typed 'lordag' which would be correctly recognised as 'lo8rdag' with the score of -3.0, a score close to zero which tentatively means the match is good.
The result of the simulated recognition by textrec. This simulated recogniser use the same search algorithms as the real recogniser but with character based textual word models in stead of Markov models. The result is input to the parsing.
example:
<recognised which="U3-21a" grammar="Date" score=-60.000000>fo8rste februar</recognised>
The keyed-in utterance "onsdagfo8rstefebruar" is recognised as "fo8rste februar" with score -60.0 according to the Date grammar. The score -60.0 is neither good nor bad.
dtd:
<!ENTITY % recognised 'INCLUDE' > <![ %recognised; [ <!ELEMENT %n.recognised; - - ((%phrase)+) > <!ATTLIST %n.recognised; %a.global; which IDREF %INHERITED grammar CDATA %INHERITED score CDATA %INHERITED TEIform CDATA 'recognised' > ]]>
comments: The id attribute must refer to a user utterance, i.e. a <u> with attribute who="U". A zero score means perfect match, and the more negative the worse the match. The grammars hopefully have intuitive names, but are defined in the file gram. The textrec ensures that the parser input is within the vocabulary known by teh system and in a form similar to output from the real recogniser. As a positive side effect most typing errors were correctly eliminated.
The semantic parsing result as transferred to the dialogue handling.
example:
<parse which="U3-21a"> | Current parsecontext: grammarset: Command Command Command Yesno Date | semantic objects: | actionso(action ActionSO) [action --NULL--] | yesnoso(choice BooleanSO) [choice --NULL--] | dayso(day_of_week Day_of_weekSO, year BooleanSO, month IntSO, day IntSO) [day_of_week --NULL--, year --NULL--, month [ones [number --NULL--, sign --NULL--], tens [number --NULL--, sign --NULL--], hundreds [number --NULL--, sign --NULL--]], day [ones [number --NULL--, sign --NULL--], tens [number --NULL--, sign --NULL--], hundreds [number --NULL--, sign --NULL--]]] | Resulting Parse Tree # 0 | Subgrammar[ 1 ]: Date | l:[s_1,sem={month={ones={number=2}},day={ones={number=1}}}]:{cat=s}.[ | l:[date_p_7,sem={month={ones={number=2}},day={ones={number=1}}}]:{cat=date_p}.[ | l:[ord_p_2]:{cat=ord_p,scat=date,mth=yes}.[ | l:[fo8rste_1]:{cat=ord,mth=yes,dalu=fo8rste,lex=fo8rste,scat=date,post_comb=no,int=1}.[ | ] | ], | l:[februar_1]:{cat=month,dalu=februar,lex=februar,gend=comm,nb=sing,defs=indef,semtype=time,count=no,mth_nb=2,case=no}.[ | ] | ] | ] | set Slot number "2" | set Slot number "1" </parse>
The semantics of "fo8rste februar" (first february) is taken to be month number 2, day number 1. Note that the semantic object names are not part of the logs and must be inferred from the context. In this case the parse tree results in sem={month={ones={number=2}},day={ones={number=1}}}, and month and day unambiguosly belong to to the semantic object dayso.
dtd:
<!ENTITY % parse 'INCLUDE' > <![ %parse; [ <!ELEMENT %n.parse; - - (#PCDATA) > <!ATTLIST %n.parse; %a.global; which IDREF %INHERITED TEIform CDATA 'parse' > ]]>
comments: The id attribute must refer to a user utterance, i.e. a <u> with attribute who="U". The parse tree has a formal structure that is not marked up in TEI. The semantic slots are used in qualitative analyses and are included in the HTML extract. Thus at least this field should have had a formal TEI markup. The '|' character is purely cosmetic and prevent too smart auto-fill-modes to spoil the indention structure.
The communication with the database is shown with all domain, type and status arguments.
example:
<database type="query" modifier="DAY"> | date: year: VOID | month: 02 | day: 1 | dow: VOID | relday: VOID | sameday: VOID </database> <database type="answer" modifier="DAY"> | status: DB_OK | date: year: 1995 | month: 02 | day: 1 | dow: WED | relday: 19 | sameday: VOID </database>
In the example, the validity of the first day in the second month is checked, and the database answers positively and gives the missing information (completion).
dtd:
<!ENTITY % database 'INCLUDE' > <![ %database; [ <!ELEMENT %n.database; - - (#PCDATA) > <!ATTLIST %n.database; %a.global; type (query | answer) #IMPLIED modifier CDATA %INHERITED TEIform CDATA 'database' > ]]>
comments: Chronologically, the communication takes place at the point of occurrence in the transcriptions. The modifier types and the statuses are listed in tables 2, 3, and 4.
Record the type of certain tokens. All other tokens (words) count as distinct types in themselves.
example: <t type=week-day
value="WED">onsdag</t>
All week-day tokens mandag...søndag count as one type. The other meta-types are listed in the dtd.
dtd:
<!ENTITY % t 'INCLUDE' > <![ %t; [ <!ELEMENT %n.t; - - (#PCDATA) > <!ATTLIST %n.t; %a.global; type (airport | month | week-day | name | cardinal | ordinal | false-start) #IMPLIED value CDATA %INHERITED TEIform CDATA 't' > ]]>
comments: In the transcriptions one word is one token. Since the vocabulary size is important in these human-computer spoken dialogue studies, the domain specific tokens with a known range and a frequency known to be skewed are marked as an abstract token <t>. E.g. all months Januay...December should be in the vocabulary even though only January and February occur in the corpus. All other tokens are implicitly taken to be their own type, e.g. 'rabat' is interpreted as if marked <t type=rabat>rabat</t>.
Pauses, vocal sounds like 'eh' and non-vocal events (kinesic) like keyclicks are recorded and marked.
example:
<pause dur=4>
<kinesic desc="key clicks">
<vocal desc="øh">
dtd: These elements are unchanged from the TEI Guidelines [Sperberg-McQueen and Burnard 1994, Section 11.2.7]. The attributes have the following restrictions in their use:
The signs '?', '!', and '.' have their usual, orthographic meanings, but are not used consistently throughout the transcriptions. Thus no formal markup has been defined for these. They are generated automatically as output from the system.
For the system utterances '-' denotes concatenation of prerecorded phrases. No prerecorded phrase extends over more than one utterance. Thus '-' indicates some of the uneven intonational patterns that easily follows from generating speech through concatenation of prerecorded phrases.
example:
<u id="S3-50a" who="S" topic=outhour>
Udrejse! klokken - <t type=cardinal value="11">11</t> -
<t type=cardinal value="15">15</t></u>
<u id="S3-50b" who="S" topic=outhour>Er det rigtigt?
</u>
Here the '!' after 'Udrejse' is a bit unusual orthograpically, but corresponds to the intonation. After '15' there should have been a '.'. Note how '-' indicates concatenation of prerecorded phrases.
comments: A consistent use of '?', '!', and '.' would have enhanced the readability, which is particularly evident in the HTML version. Currently they seem, however, to have no formal or analytical use.
The use of '-' in system phrases is consistent and could easily be given a TEI conformant markup, e.g.
<!ELEMENT %n.sep - o EMPTY >
The <sep> could be substituted for '-'.
The transcriptions are provided in an HTML version for readability and accessibility. They have been transformed automatically from the original transcriptions written in TEI by use of the program trans. In this section the interpretation of the HTML transcriptions is explained, whereas the full transcriptions and their origination are described in Section 3.
The transcriptions of the conversation with each subject is placed in a separate file, e.g. the dialogue transcriptions of subject number two are placed in the file code-2.html. The header of this file states the subject number and the date and hour for the start of the recordings of the session with this subject. In addition there is a link to the full transcription file, the TEI-file.
After the following example of an HTML transcription the central elements of the HTML transcriptions are described. Each element is described through purpose, format, and an example.
Example:
outhour | U2-17a | Ni ti . | |
| |||
outhour | S2-18a | [..6] klokken 9 10 | |
| |||
reservation | S2-18b | [..5] Der er nu reserveret 2 billetter til idnumre 4 og 2 testMH og testRH fra københavn til karup fredag den 13. i 1. klokken 9 10 Dit referencenummer er 49 Den samlede pris er et tusind og 20 kroner [key clicks] | |
deliver | S2-18c | Billetterne vil ligge til afhentning ved checkinpult nummer 19 i lufthavnen! Billetter skal afhentes senest 20 minutter før afgang! | |
Division 3: post | |||
toptask | S2-18d | Vil du mere? | |
toptask | U2-18a | Nej tak. |
In front of each utterance (bold faced) the topic and a unique identification of the utterance are given.
After the user uttered U2-17a: "Ni ti" ("nine ten") the wizard keyed in "niti" which was recognised by the simulated recogniser as "ni ti" using the Hour grammar and perfectly matched (score 0.0). The parser instantiates the semantic number slots of hours ("9") and minutes ("10"), respectively. Then the database is queried and it answers back that this departure is ok. All this yields a pause of 6 seconds ("..6") before the system makes the feedback S2-18a: "klokken 9 10".
Finally, the database is asked to reserve the ticket which is ok, and the system provides summarising feedback in S2-18b before it states a precomputed value of the deliver topic in S2-18c and at last poses the next question in S2-18d.
Marks a new call to the system or a new task and identifies the task.
format: Scenario form - task set - number - version
Example: Subject 2 has a scenario G-1-2-a which indicates a graphic representation (G) of the 1st task set, the 2nd scenario, in date variation a.
Mark overall discourse segments within a dialogue.
format: Division number: segment
Example: The first division for a subject is Division 1: pre indicating that the first segment is opening of the dialogue.
Describes what is said, who said it, and what is talked about.
format: topic id text
format: speaker subject - number part
Example:
outhour | S2-16b | Vil du have en af disse afgange? |
outhour | U2-16a | Ja. [...] Ni ti . |
This is a question and an answer concerning the outhour item. The transcription is for subject 2 and displays the second part, b, (question: "Would you like one of these departures?") of the system's 16th turn followed by the user's 16th turn (an answer "Yes. [pause about one second] nine ten.").
User utterances overlapping with system speech.
format: (overlap) text
Example:
outhour | S2-17a | Hvilken? |
(overlap) | Ni ti. | |
outhour | U2-17a | Ni ti . |
This is the continuation of the above example. Only "yes" was caught by the system (because the wizard hit return during the pause) and the system asks which (S2-17a: "hvilken?") departure to select. Simultaneously, the user again says "ni ti" (overlap), and afterwards repeats.
As typed in by the wizard, but after expansion of abbreviations, e.g. ".29" for "niogtyve (twentynine)". This ia the input to the simulated recogniser. It relates to the immediately previous user utterance.
format: keyed string
Example (U3-21a): keyed: onsdagfo8rstefebruar
(wednesdayfirstfebruary)
Note how whitespace is not present.
The result of the simulated recognition textrec. This program works like the real recogniser but with character based textual word models in stead of Markov models. output from the simulated recognition is input to the parsing and relates to the immediately preceeding utterance.
format: recognised [grammar/score]: string
Example (U3-21a): recognised [Date/-60.000000]: fo8rste
februar (first February)
The keyed in utterance
"onsdagfo8rstefebruar" is recognised as "fo8rste februar" with score
-60.0 according to the Date grammar.
The semantic parsing result as transferred to the dialogue handling. The result relates to the immediately preceeding utterance.
format: semantics: slots
Example (U3-21a): semantics: number "2" number "1"
The semantics of "fo8rste februar" (first february) is taken to be
month number 2, day number 1. Note that the semantic object names are
not part of the logs and must be inferred from the context.
The communication with the database, abstracted to type and status. Chronologically, the communication takes place at the point of occurrence in the transcriptions.
format: database [QA/item] status
Example (U3-21a): database [answer/DEPARTURES]
DB_OK
A request to the database about the first of February is answered
positively (DB_OK), returning a list of feasible departure times.
The transcriptions from a user test of the Danish spoken language dialogue project have been described. The transcriptions have been succesfully applied in statistical descriptions as well as more qualitative analyses of user problems [Dybkjær 1995, Dybkjær et al. 1995a]. The formal structure derived from SGML has been essential in the automatisation of many of the applied statistics and transformations. Below some more general remarks on the transcription process are given.
The Guidelines are voluminous---1400 pages of technical documentation--- and attempt to target many different aspects. This makes it difficult to find exactly the elements intended for solving precisely the problems at hand.
Of course one may expect to use some time in understanding a large apparatus, and more accessible beginner's guidelines are emerging [Sperberg-McQueen 1995, Burnard and Sperberg-McQueen 1995], but well-chosen examples from a range of applications would be helpful.
We have used psgml/emacs for editing and sgmls for verifying. Both tools are general SGML tools and work nicely. However, the setup of directories of element and character files is not trivial.
Moreover, software for viewing/extracting chosen parts of the transcriptions must be programmed from scratch, as must software for counting phenomena in the dialogues. Even though special projects have special needs, it might be possible to construct general viewing and statistics packages for TEI spoken dialogue transcriptions, much like James Clarke is programming a general parsing package for SGML [Clark 1995].
The transcriptions have annotations of internal modules. Apparently the Guidelines did not foresee this need although they do allow conformant extensions for handling this kind of phenomena. In the current transcriptions they have for simplicity been represented directly in separate elements <keyed> <recognised> <semantics> <database>.
The extra elements all capture a call to or result of a system internal module. This generality might be captured by:
<!ENTITY % process 'INCLUDE' > <![ %process; [ <!ELEMENT %n.process; - - ((%parameter)+) > <!ATTLIST %n.process; %a.global; name IDREF %INHERITED type (call | result) %INHERITED TEIform CDATA 'process' > ]]>
The problem now is to model the parameter elements since these can be expected to vary much in form and function. One might define a general purpose structure:
<!ENTITY % parameter 'INCLUDE' > <![ %parameter; [ <!ELEMENT %n.parameter; - - ((%parameter)+) > <!ATTLIST %n.parameter; %a.global; name CDATA %INHERITED type (%m.partype) %INHERITED TEIform CDATA 'parameter' > ]]> <!ENTITY % x.partype '' > <!ENTITY % m.partype '%x.partype enum | int | real | char | string | list' >
With the list type encompassing records and arrays as well, and with %x.partype to account for user extensions this yields a general model for parameters. However, it does not model pointer structures (graphs) even though this could be remedied by adding a label type and a label attribute, and higher order types have (as usual) no easy textual representation. Worse perhaps, the type structure is not enforced by the SGML structure: this can seemingly only be achieved by splitting the parameter element into distinct elements for each type. First, this forces users/transcribers to declare new specialised parameter elements as they need them, and second, since SGML does not seem to support element type inheritance the commonality between parameters is no longer explicit.
At the low level of the corpus some formal tags have been used without defining a TEI conformant markup, cf. e.g. the use of '-' and the inner structure of <semantics> and <database>. The use and choice of these microtags are somewhat arbitrary and relates solely to the convenient readability of the transcriptions and to what structure was in the looging files. The affected structures were not in the focus of our analyses. Even then, with more advanced extraction and viewing tools it might certainly have been better to encode these phenomena TEI conformantly.
Table 2 [« | »] Database request types.
Name Action [parameters] Return CUSTOMER Check the customer id.
[cust-nr]STATUS ROUTE Check route between from and to.
[from, to]STATUS PERSON Check id-number and return initials.
[cust-nr, id]PERSON DAY Check and complete day of week and date.
[day]DAY PERIOD Check if (outdate,homedate) for given discount.
[outday, homeday, farename]PERIOD HOUR Check if there is a feasible departure.
[route, date, hour, farename, nr-of-persons]DEPARTURES TIMEOFDAY Check if there are feasible departures.
[route, date, time-of-day, farename, nr-of-persons]DEPARTURES HOUR_INTERVAL Check if outhour < homehour if outdate = homedate.
[outhour, homehour, outdate, homedate]STATUS FARE Check parameters and compute a price.
[cust-nr, route, persons, return, farename]FARE RESERVE Check parameters and make a reservation.
[cust-nr, route, persons, outdate, outhour, return, homedate, homehour, farename]RESERVATION DELIVERY Check parameters and set delivery type.
[delivery, cust-nr, reference]STATUS RESERVATION Delete or retrieve a reservation.
[action, cust-nr, reference]RESERVATION
Table 3 [« | »] Database return types.
Name Parameters STATUS Status, see Table 3 PERSON Status, initials DAY Status, day PERIOD Status, outday, homeday DEPARTURES Status, free seats, seats, departures FARE Status, fare RESERVATION Status, days left, cust-nr, reference, from, to, outday, outhour, return, homeday, homehour, persons, fare, farename, delivery
Table 4 [« | »] Database status values.
All requests to the database will return at least a status field.
Status Description DB_ERROR General: error DB_OK General: no errors found DB_SOLD_OUT Departure(s): sold out DB_NONE Departure(s): none such DB_DISCOUNT Departure(s): no red/green departure(s) DB_OUT_BEFORE_HOME Period,hour_interval: don't out before home DB_DAY_OF_MONTH Day: day of month does not fit within month DB_MONTH Day: month not in JAN...DEC DB_YEAR Day: year outside program astronomy DB_DAY_BEFORE_TODAY Day: only queries after now DB_DOW Day: day of week is inconsistent with date DB_REL Day: relative day is inconsistent with dow/date DB_SAMEDAY Day: day not same day as (relative) today DB_OUTSIDE_PERIODS Day: no timetable for this day DB_NO_ROUTE Route: no such route DB_NO_FLIGHTS Flights: no flights at specified date DB_NO_FLIGHT Flight: no flight with given number DB_MIN_TIME Reservation: too few days between out and home DB_MAX_TIME Reservation: too many days between out and home DB_NO_RESERVATION Reservation: none with tried number DB_NO_CUST Customer: none with tried number DB_TWICE Person: Person id chosen for the second time
Table 5 [« | »] Semantic slots.*) Negative minutes denote minutes to an hour, positive minutes after an hour.
Slot Description action correct | repeat | help choice 0 (no) | 1 (yes) from The name of a departure airport to The name of a destination airport airport The name of an airport day_of_week Mandag ... søndag | today | tomorrow | sameday time_of_day morgen | formiddag | middag | eftermiddag | aften | dag | nat number Integer used for minutes*, hours, day of month, month, reference, number of persons, id-number, and customer number (cust-nr). delivery airport | post
Table 6 [« | »] Topics.
The topic usually refers to the current domain item. Exceptions are meta-correct and meta-repeat which refer to the discourse; for domain purposes they may be seen to inherit the previous topic.
Topic name Description of topic toptask Overall greetings and "do you want more?". knows Does the user know the system? customer The number of the customer to pay for the tickets. persons The number of persons to travel. idN Obtaining the identification number of the Nth traveller, N<=9. ids The whole set of travellers. from The departure airport. to The destination airport. return Is it a return travel? outdate The day for starting the travel? outhour The departure time. homedate The day for travelling home. homehour The departure time for the home travel. reservation The whole reservation and its making. deliver Will the traveller receive the tickets via post or pick them up in the airport? meta-correct The user wants to correct a previous item. meta-repeat Please repeat the latest information.
The creation, maintenance and use of the corpus has been supported by a number of software tools. A number of public SGML software tools are presented on WWW. In the current project the following tools have been used:
The software package trans has routines for reading/writing restricted SGML markup documents. Currently the program trans is available:
Transform dialogue/TEI transcript to html. Usage: trans {options} file where options are [default]: -h Help [this table]. -v Version. -e Print extra information. and file is the name of the transcription file.
The extra information provided with option -e is a summary of the internal modules communication, cf. Section 4.5.
The parsing is simple and directed by a definitions file with the format (quoted from the program text):
// Definition ::= - '(' - name WS Def_type - ')' - . // Type ::= s // synthetic: only <name attributes> // t // textual: full but text body only // c // composite: full but markup* body only // g // generic: toplevel // a // auxiliary: comments, declarations, ...where
// WS ::= (space | tab | cr | lf | ff) + . // whitespace() // - ::= [WS] . // skip() // In other words, whitespace conform to C++ isspace predicate. // - is optional whitespace, // WS is required whitespace.
An example is given in trans.defs. The markup is read after the syntax:
// Markup ::= Synthetic | Textual | Composite | Auxiliary | Generic . // Synthetic ::= '<' Name Attribute* '>' . // Textual ::= '<' Name Attribute* '>' Text '<' '/' Name '>' . // Composite ::= '<' Name Attribute* '>' (Text | Markup)* '<' '/' Name '>' . // Generic ::= (Text | Markup)* . // Auxiliary ::= '<' - '!' Text '>' . // Text ::= - ( Char \ {<,>} )* - .
This appendix presents as an example part of a log file from the user test of the running system. An explanation of the transcription and its elements is given in sections 2 and 3. The example corresponds to this part of the transcription as abbreviated in the HTML version:
outhour | U2-17a | Ni ti . | |
|
The corresponding full TEI transcription is given here, bolding the above extracted parts:
<u id="U2-17a" who="C-2" topic=outhour><t type=cardinal value="9">Ni</t> <t type=cardinal value="10">ti</t>.</u> <keyed which="U2-17a">niti</keyed> <recognised which="U2-17a" grammar="Hour" score=0.000000>ni ti</recognised> <parse which="U2-17a"> | Current parsecontext: grammarset: Command Command Command Yesno Yesno Hour Yesno Hour | semantic objects: | actionso(action ActionSO) [action --NULL--] | yesnoso(choice BooleanSO) [choice --NULL--] | time_of_dayso(time_of_day Time_of_daySO) [time_of_day --NULL--] | hourso(hours IntSO, minutes IntSO) [hours [ones [number --NULL--, sign --NULL--], tens [number --NULL--, sign --NULL--], hundreds [number --NULL--, sign --NULL--]], minutes [ones [number --NULL--, sign --NULL--], tens [number --NULL--, sign --NULL--], hundreds [number --NULL--, sign --NULL--]]] | Resulting Parse Tree # 0 | Subgrammar[ 4 ]: Hour | l:[s_2,sem={hours={ones={number=9}},minutes={ones={number=10}}}]:{cat=s}.[ | l:[hour_p_3,sem={hours={ones={number=9}},minutes={ones={number=10}}}]:{cat=hour_p}.[ | l:[cardh_p_3]:{cat=cardh_p,hour_fg1=yes,minut_fg1=no,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg4=yes,minut_fg5=yes}.[ | l:[ni_1]:{cat=card,hour_fg1=yes,minut_fg1=no,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg4=yes,minut_fg5=yes,dalu=ni,lex=ni,scat=no,prae_comb=yes,post_comb=no,hour=no,int=9,tens=0}.[ | ] | ], | l:[cardh_p_3]:{cat=cardh_p,minut_fg1=yes,minut_fg4=no,hour=no,hour_fg1=yes,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg5=yes}.[ | l:[ti_1]:{cat=card,hour_fg1=yes,minut_fg1=yes,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg4=no,minut_fg5=yes,dalu=ti,lex=ti,scat=no,prae_comb=no,post_comb=no,int=10,tens=0}.[ | ] | ] | ] | ] | set Slot number "9" | set Slot number "10" </parse> <database type="query" modifier="HOUR"> | destination: CPH | destination: KAR | date: year: 1995 | month: 01 | day: 13 | dow: FRI | relday: 0 | sameday: VOID | hour: hours: 9 | minutes: 10 | discount: BLUE | travellers: 2 </database> <database type="answer" modifier="DEPARTURES"> | status: DB_OK | free: 1 | total: 1 | ----- departure: | hour: hours: 9 | minutes: 10 | free: 8 | discount: BLUE </database>
The corresponding log is given below. Note how all communication with external modules are timestamped. The information could have been encoded via the use of a timeline, but thishas been omitted. The time stamps have no useful correlation with the spoken dialogue. Instead the time line is implicit in the sequencing of the utterances and in the markup of pauses and overlap. Note however, that elapsed turn and dialogue times are not recorded. Note also how most of the log has been deleted retaining only what is directly relevant to the speech and its processing as part of the discourse. Again, the parts corresponding to the abbreviated HTML transcription have been highlighted in bold. The user phrase "Ni ti", the topic and the user utterance id as well as any lexical information are not present in the log but have been added later to the TEI transcriptions. Added comments are in italics
keyed: Sinput > keyed: Active Grammars: Command Hour Yesno Switched on: Command Switched on: Command Switched on: Command Switched on: Yesno Switched on: Yesno Switched on: Hour Switched on: Yesno Switched on: Hour > 36928 !SET REC1 ICM0 DONE VOID ; > 36929 !STA REC1 ICM0 DONE VOID ; > 36931 !BRK REC1 ICM0 DONE VOID ; > 36931 !SET REC1 ICM0 DONE VOID ; > 36931 !SET REC1 ICM0 DONE VOID ; > 36931 !SET REC1 ICM0 DONE VOID ; > 36931 !STA REC1 ICM0 DONE VOID ; > 36938 !PER PLA0 ICM0 DONE VOID ; 9 10 keyed: Sinput >niti keyed: grammar Hour, score 0.000000 > 37257 EVE REC1 ICM0 RSENT STRING6 "ni ti" ; < 37258 SET ICM0 REC1 GSUB INT4 0 ; Current parsecontext: grammarset: Command Command Command Yesno Yesno Hour Yesno Hour semantic objects: actionso(action ActionSO) [action <<NULL>>] yesnoso(choice BooleanSO) [choice <<NULL>>] time_of_dayso(time_of_day Time_of_daySO) [time_of_day <<NULL>>] hourso(hours IntSO, minutes IntSO) [hours [ones [number <<NULL>>, sign <<NULL>>], tens [number <<NULL>>, sign <<NULL>>], hundreds [number <<NULL>>, sign <<NULL>>]], minutes [ones [number <<NULL>>, sign <<NULL>>], tens [number <<NULL>>, sign <<NULL>>], hundreds [number <<NULL>>, sign <<NULL>>]]] Resulting Parse Tree # 0 Subgrammar[ 4 ]: Hour l:[s_2,sem={hours={ones={number=9}},minutes={ones={number=10}}}]:{cat=s}.[ l:[hour_p_3,sem={hours={ones={number=9}},minutes={ones={number=10}}}]:{cat=hour_p}.[ l:[cardh_p_3]:{cat=cardh_p,hour_fg1=yes,minut_fg1=no,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg4=yes,minut_fg5=yes}.[ l:[ni_1]:{cat=card,hour_fg1=yes,minut_fg1=no,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg4=yes,minut_fg5=yes,dalu=ni,lex=ni,scat=no,prae_comb=yes,post_comb=no,hour=no,int=9,tens=0}.[ ] ], l:[cardh_p_3]:{cat=cardh_p,minut_fg1=yes,minut_fg4=no,hour=no,hour_fg1=yes,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg5=yes}.[ l:[ti_1]:{cat=card,hour_fg1=yes,minut_fg1=yes,nb=plu,hour_fg2=yes,minut_fg2=yes,minut_fg3=yes,minut_fg4=no,minut_fg5=yes,dalu=ti,lex=ti,scat=no,prae_comb=no,post_comb=no,int=10,tens=0}.[ ] ] ] ] set Slot number "9" set Slot number "10" < 37382 SET ICM0 REC1 GSUB INT4 3 ; < 37400 PER ICM0 APP0 APP_P5 (database [query/HOUR]) LIST ( BINARY1 $02 BINARY1 $05 LIST ( LIST ( INT4 1995 BINARY1 $01 INT4 13 ) BINARY1 $04 INT4 0 VOID ) LIST ( INT4 9 INT4 10 ) BINARY1 $02 INT4 2 ) ; < 37434 STA ICM0 REC1 - VOID ; keyed: [0 ni 2][2 ti 4]Resulting string: ni ti keyed: keyed: Active Grammars: Command Switched on: Command Switched on: Command Switched on: Command > 37435 !SET REC1 ICM0 DONE VOID ; > 37436 !SET REC1 ICM0 DONE VOID ; > 37436 !STA REC1 ICM0 DONE VOID ; > 37613 EVE APP0 ICM0 APP_P5 (database [answer/DEPARTURES]) LIST ( BINARY1 $01 (status DB_OK) INT1 1 INT1 1 LIST ( LIST ( LIST ( INT1 9 INT1 10 ) INT1 8 BINARY1 $02 ) VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID VOID ) ) ;
Centre for Cognitive Science
comments to:
webmaster@cog.ruc.dk
© 1995 CCS - Hans Dybkjær
revised: $Date: 1996/09/02 09:18:28 $
url: http://www.cog.ruc.dk/projects/Dialogue/user-95/trans-desc.html