A rule-based task-oriented chatbot for event search in Singapore
Teaching machines to accomplish tasks by conversing naturally with humans is challenging. Currently, developing task-oriented dialogue systems requires creating multiple components and typically this involves either a large amount of handcrafting, or acquiring costly labelled datasets to solve a statistical learning problem for each component. In this work we introduce a neural network-based text-in, text-out end-to-end trainable goal-oriented dialogue system along with a new way of collecting dialogue data based on a novel pipe-lined Wizard-of-Oz framework. This approach allows us to develop dialogue systems easily and without making too many assumptions about the task at hand. The results show that the model can converse with human subjects naturally whilst helping them to accomplish tasks in a restaurant search domain.READ FULL TEXT VIEW PDF
A rule-based task-oriented chatbot for event search in Singapore
Building a task-oriented dialogue system such as a hotel booking or a technical support service is difficult because it is application-specific and there is usually limited availability of training data.
To mitigate this problem, recent machine learning approaches to task-oriented dialogue system design have cast the problem as a partially observable Markov Decision Process (POMDP) with the aim of using reinforcement learning (RL) to train dialogue policies online through interactions with real users modules still rely on supervised learning and therefore need corpora to train on.
Furthermore, to make RL tractable, the state and action space must be carefully designed
Building a task-oriented dialogue system such as a hotel booking or a technical support service is difficult because it is application-specific and there is usually limited availability of training data. To mitigate this problem, recent machine learning approaches to task-oriented dialogue system design have cast the problem as a partially observable Markov Decision Process (POMDP)[Young et al.2013]
with the aim of using reinforcement learning (RL) to train dialogue policies online through interactions with real users[Gašić et al.2013]. However, the language understanding [Henderson et al.2014, Yao et al.2014] and language generation [Wen et al.2015b, Wen et al.2016]
modules still rely on supervised learning and therefore need corpora to train on. Furthermore, to make RL tractable, the state and action space must be carefully designed[Young et al.2013, Young et al.2010], which may restrict the expressive power and learnability of the model. Also, the reward functions needed to train such models are difficult to design and hard to measure at run-time [Su et al.2015, Su et al.2016].
At the other end of the spectrum, sequence to sequence learning [Sutskever et al.2014] has inspired several efforts to build end-to-end trainable, non-task-oriented conversational systems [Vinyals and Le2015, Shang et al.2015, Serban et al.2015b].
This family of approaches treats dialogue as a source to target sequence transduction problem, applying an encoder network [Cho et al.2014] to encode a user query into a distributed vector representing its semantics, which then conditions a decoder network to generate each system response.
These models typically require a large amount of data to train. They allow the creation of effective chatbot type systems but they lack any capability for supporting domain specific tasks, for example, being able to interact with databases
to encode a user query into a distributed vector representing its semantics, which then conditions a decoder network to generate each system response. These models typically require a large amount of data to train. They allow the creation of effective chatbot type systems but they lack any capability for supporting domain specific tasks, for example, being able to interact with databases[Sukhbaatar et al.2015, Yin et al.2015] and aggregate useful information into their responses.
In this work, we propose a neural network-based model for task-oriented dialogue systems by balancing the strengths and the weaknesses of the two research communities:
the model is end-to-end trainable111We define end-to-end trainable as that each system module is trainable from data except for a database operator. but still modularly connected;
it does not directly model the user goal, but nevertheless, it still learns to accomplish the required task by providing relevant and appropriate responses at each turn;
it has an explicit representation of database (DB) attributes (slot-value pairs) which it uses to achieve a high task success rate, but has a distributed representation of user intent (dialogue act) to allow ambiguous inputs; and
it uses delexicalisation to reduce the data required to train the model, but still maintains a high degree of freedom should larger amounts of data become available.
We show that the proposed model performs a given task very competitively across several metrics when trained on only a few hundred dialogues.
responses at each turn; it has an explicit representation of database (DB) attributes (slot-value pairs) which it uses to achieve a high task success rate, but has a distributed representation of user intent (dialogue act) to allow ambiguous inputs; and it uses delexicalisation222Delexicalisation: we replaced slots and values by generic tokens (e.g. keywords like Chinese or Indian are replaced by <v.food> in Figure 1) to allow weight sharing. and a weight tying strategy [Henderson et al.2014]
to reduce the data required to train the model, but still maintains a high degree of freedom should larger amounts of data become available. We show that the proposed model performs a given task very competitively across several metrics when trained on only a few hundred dialogues.
In order to train the model for the target application, we introduce a novel pipe-lined data collection mechanism inspired by the Wizard-of-Oz paradigm [Kelley1984] to collect human-human dialogue corpora via crowd-sourcing. We found that this process is simple and enables fast data collection online with very low development costs.
We treat dialogue as a sequence to sequence mapping problem (modelled by a sequence-to-sequence architecture [Sutskever et al.2014]) augmented with the dialogue history (modelled by a set of belief trackers [Henderson et al.2014]) and the current database search outcome (modelled by a database operator), as shown in Figure 1.
At each turn, the system takes a sequence of tokens2 from the user as input and converts it into two internal representations:
a distributed representation generated by an intent network and a probability distribution
over slot-value pairs called the belief state
from the user as input and converts it into two internal representations: a distributed representation generated by an intent network and a probability distribution over slot-value pairs called the belief state[Young et al.2013] generated by a set of belief trackers. The database operator then selects the most probable values in the belief state to form a query to the DB, and the search result, along with the intent representation and belief state are transformed and combined by a policy network to form a single vector representing the next system action. This system action vector is then used to condition a response generation network [Wen et al.2015a, Wen et al.2015b] which generates the required system output token by token in skeletal form. The final system response is then formed by substituting the actual values of the database entries into the skeletal sentence structure. A more detailed description of each component is given below.
The intent network can be viewed as the encoder in the sequence-to-sequence learning framework [Sutskever et al.2014] whose job is to encode a sequence of input tokens into a distributed vector representation at every turn .
Typically, a Long Short-term Memory (LSTM) network
. Typically, a Long Short-term Memory (LSTM) network[Hochreiter and Schmidhuber1997] is used and the last time step hidden layer is taken as the representation,
and here we investigate both. Since all the slot-value specific information is delexicalised, the encoded vector can be viewed as a distributed intent representation which replaces the hand-coded dialogue act representation [Traum1999] in traditional task-oriented dialogue systems.
Belief tracking (also called Dialogue State tracking) provides the core of a task-oriented spoken dialogue system (SDS) [Henderson2015] .
Current state-of-the-art belief trackers use discriminative models such as recurrent neural networks (RNN)
. Current state-of-the-art belief trackers use discriminative models such as recurrent neural networks (RNN)[Mikolov et al.2010, Wen et al.2013] to directly map ASR hypotheses to belief states [Henderson et al.2014, Mrkšić et al.2016]. Although in this work we focus on text-based dialogue systems, we retain belief tracking at the core of our system because: (1) it enables a sequence of free-form natural language sentences to be mapped into a fixed set of slot-value pairs, which can then be used to query a DB. This can be viewed as a simple version of a semantic parser [Berant et al.2013]; (2) by keeping track of the dialogue state, it avoids learning unnecessarily complicated long-term dependencies from raw inputs; (3) it uses a smart weight tying strategy that can greatly reduce the data required to train the model, and (4) it provides an inherent robustness which simplifies future extension to spoken systems.
Using each user input as new evidence, the task of a belief tracker is to maintain a multinomial distribution over values for each informable slot , and a binary distribution for each requestable slot333Informable slots are slots that users can use to constrain the search, such as food type or price range; Requestable slots are slots that users can ask a value for, such as address..
Each slot in the ontology 444 A small knowledge graph defining the slot-value pairs the system can talk about for a particular task.
A small knowledge graph defining the slot-value pairs the system can talk about for a particular task.has its own specialised tracker, and each tracker is a Jordan-type (recurrence from output to hidden layer) [Jordan1989] RNN555We don’t use the recurrent connection for requestable slots since they don’t need to be tracked. with a CNN feature extractor, as shown in Figure 2. Like Mrksic15, we tie the RNN weights together for each value but vary features when updating each pre-softmax activation . The update equations for a given slot are,
where vector , matrix , bias terms and , and scalar are parameters. is the probability that the user has not mentioned that slot up to turn and can be calculated by substituting for in the numerator of Equation 5. In order to model the discourse context at each turn, the feature vector is the concatenation of two CNN derived features, one from processing the user input at turn and the other from processing the machine response at turn ,
where every token in and is represented by an embedding of size derived from a 1-hot input vector.
In order to make the tracker aware when delexicalisation is applied to a slot or value, the slot-value specialised CNN operator extracts not only the top level sentence representation but also intermediate n-gram-like embeddings determined by the position of the delexicalised token in each utterance.
If multiple matches are observed, the corresponding embeddings are summed.
On the other hand, if there is no match for a particular slot or value, the empty n-gram embeddings are padded with zeros.
In order to keep track of the position of delexicalised tokens, both sides of the sentence are padded with zeros before each convolution operation.
The number of vectors is determined by the filter size at each layer.
The overall process of extracting several layers of position-specific features is visualised in Figure
extracts not only the top level sentence representation but also intermediate n-gram-like embeddings determined by the position of the delexicalised token in each utterance. If multiple matches are observed, the corresponding embeddings are summed. On the other hand, if there is no match for a particular slot or value, the empty n-gram embeddings are padded with zeros. In order to keep track of the position of delexicalised tokens, both sides of the sentence are padded with zeros before each convolution operation. The number of vectors is determined by the filter size at each layer. The overall process of extracting several layers of position-specific features is visualised in Figure2.
The belief tracker described above is based on henderson14 with some modifications: (1) only probabilities over informable and requestable slots and values are output, (2) the recurrent memory block is removed, since it appears to offer no benefit in this task, and (3) the n-gram feature extractor is replaced by the CNN extractor described above. By introducing slot-based belief trackers, we essentially add a set of intermediate labels into the system as compared to training a pure end-to-end system. Later in the paper we will show that these tracker components are critical for achieving task success. We will also show that the additional annotation requirement that they introduce can be successfully mitigated using a novel pipe-lined Wizard-of-Oz data collection framework.
Database Operator Based on the output of the belief trackers, the DB query is formed by,
where is the set of informable slots. This query is then applied to the DB to create a binary truth value vector over DB entities where a 1 indicates that the corresponding entity is consistent with the query (and hence it is consistent with the most likely belief state). In addition, if is not entirely null, an associated entity pointer is maintained which identifies one of the matching entities selected at random. The entity pointer is updated if the current entity no longer matches the search criteria; otherwise it stays the same. The entity referenced by the entity pointer is used to form the final system response as described in Section 2.4.
Policy network The policy network can be viewed as the glue which binds the system modules together. Its output is a single vector representing the system action, and its inputs are comprised of from the intent network, the belief state , and the DB truth value vector . Since the generation network only generates appropriate sentence forms, the individual probabilities of the categorical values in the informable belief state are immaterial and are summed together to form a summary belief vector for each slot represented by three components: the summed value probabilities, the probability that the user said they "don’t care" about this slot and the probability that the slot has not been mentioned. Similarly for the truth value vector , the number of matching entities matters but not their identity. This vector is therefore compressed to a 6-bin 1-hot encoding , which represents different degrees of matching in the DB (no match, 1 match, ... or more than 5 matches). Finally, the policy network output is generated by a three-way matrix transformation,
where matrices , , and are parameters and is a concatenation of all summary belief vectors.
The generation network uses the action vector to condition a language generator [Wen et al.2015b]. This generates template-like sentences token by token based on the language model probabilities,
where is a conditional LSTM operator for one output step , is the last output token (i.e. a word, a delexicalised slot name or a delexicalised slot value), and is the hidden layer. Once the output token sequence has been generated, the generic tokens are replaced by their actual values: (1) replacing delexicalised slots by random sampling from a list of surface forms, e.g. <s.food> to food or type of food, and (2) replacing delexicalised values by the actual attribute values of the entity currently selected by the DB pointer. This is similar in spirit to the Latent Predictor Network [Ling et al.2016] where the token generation process is augmented by a set of pointer networks [Vinyals et al.2015] to transfer entity specific information into the response.
Attentive Generation Network Instead of decoding responses directly from a static action vector , an attention-based mechanism [Bahdanau et al.2014, Hermann et al.2015] can be used to dynamically aggregate source embeddings at each output step . In this work we explore the use of an attention mechanism to combine the tracker belief states, i.e. is computed at each output step by,
where for a given ontology ,
and where the attention weights are calculated by a scoring function,
where matrix , and vector are parameters to learn and is the embedding of token .
Arguably the greatest bottleneck for statistical approaches to dialogue system development is the collection of appropriate training data, and this is especially true for task-oriented dialogue systems.
Serban et al [Serban et al.2015a] have catalogued existing corpora for developing conversational agents. Such corpora may be useful for bootstrapping, but, for
task-oriented dialogue systems, in-domain data is essential
have catalogued existing corpora for developing conversational agents. Such corpora may be useful for bootstrapping, but, for task-oriented dialogue systems, in-domain data is essential666E.g. technical support for Apple computers may differ completely from that for Windows, due to the many differences in software and hardware.. To mitigate this problem, we propose a novel crowdsourcing version of the Wizard-of-Oz (WOZ) paradigm [Kelley1984] for collecting domain-specific corpora.
Based on the given ontology, we designed two webpages on Amazon Mechanical Turk, one for wizards and the other for users (see Figure 4 and 5 for the designs). The users are given a task specifying the characteristics of a particular entity that they must find (e.g. a Chinese restaurant in the north) and asked to type in natural language sentences to fulfil the task. The wizards are given a form to record the information conveyed in the last user turn (e.g. pricerange=Chinese, area=north) and a search table showing all the available matching entities in the database. Note these forms contain all the labels needed to train the slot-based belief trackers. The table is automatically updated every time the wizard submits new information. Based on the updated table, the wizard types an appropriate system response and the dialogue continues.
In order to enable large-scale parallel data collection and avoid the distracting latencies inherent in conventional WOZ scenarios [Bohus and Rudnicky2008], users and wizards are asked to contribute just a single turn to each dialogue. To ensure coherence and consistency, users and wizards must review all previous turns in that dialogue before they contribute their turns. Thus dialogues progress in a pipe-line. Many dialogues can be active in parallel and no worker ever has to wait for a response from the other party in the dialogue. Despite the fact that multiple workers contribute to each dialogue, we observe that dialogues are generally coherent yet diverse. Furthermore, this turn-level data collection strategy seems to encourage workers to learn and correct each other based on previous turns.
In this paper, the system was designed to assist users to find a restaurant in the Cambridge, UK area. There are three informable slots (food, pricerange, area) that users can use to constrain the search and six requestable slots (address, phone, postcode plus the three informable slots) that the user can ask a value for once a restaurant has been offered. There are 99 restaurants in the DB. Based on this domain, we ran 3000 HITs (Human Intelligence Tasks) in total for roughly 3 days and collected 1500 dialogue turns. After cleaning the data, we have approximately 680 dialogues in total (some of them are unfinished). The total cost for collecting the dataset was USD.
Training Training is divided into two phases. Firstly the belief tracker parameters are trained using the cross entropy errors between tracker labels and predictions , . For the full model, we have three informable trackers (food, pricerange, area) and seven requestable trackers (address, phone, postcode, name, plus the three informable slots).
Having fixed the tracker parameters, the remaining parts of the model are trained using the cross entropy errors from the generation network language model,
where and are output token targets and predictions respectively, at turn of output step .
We treated each dialogue as a batch and used stochastic gradient decent with a small regularisation term to train the model.
The collected corpus was partitioned into a training, validation, and testing sets in the ratio 3:1:1.
Early stopping was implemented based on the validation set for regularisation and
gradient clipping was set to 1.
All the hidden layer sizes were set to 50, and all the weights were randomly initialised between -0.3 and 0.3 including word embeddings.
The vocabulary size is around 500 for both input and output, in which rare words and words that can be delexicalised are removed.
We used three convolutional layers for all the CNNs in the work and all the filter sizes were set to 3.
Pooling operations were only applied after the final convolution layer.
regularisation term to train the model. The collected corpus was partitioned into a training, validation, and testing sets in the ratio 3:1:1. Early stopping was implemented based on the validation set for regularisation and gradient clipping was set to 1. All the hidden layer sizes were set to 50, and all the weights were randomly initialised between -0.3 and 0.3 including word embeddings. The vocabulary size is around 500 for both input and output, in which rare words and words that can be delexicalised are removed. We used three convolutional layers for all the CNNs in the work and all the filter sizes were set to 3. Pooling operations were only applied after the final convolution layer.
Decoding In order to decode without length bias, we decoded each system response based on the average log probability of tokens,
where are the model parameters, is the user input, and is the length of the machine response.
As a contrast, we also investigated the MMI criterion [Li et al.2016] to increase diversity and put additional scores on delexicalised tokens to encourage task completion. This weighted decoding strategy has the following objective function,
where and are weights selected on validation set and can be modelled by a standalone LSTM language model.
We used a simple heuristic for the scoring function
can be modelled by a standalone LSTM language model. We used a simple heuristic for the scoring functiondesigned to reward giving appropriate information and penalise spuriously providing unsolicited information777We give an additional reward if a requestable slot (e.g. address) is requested and its corresponding delexicalised slot or value token (e.g. <v.address> and <s.address>) is generated. We give an additional penalty if an informable slot is never mentioned (e.g. food=none) but its corresponding delexicalised value token is generated (e.g. <v.food>). For more details on scoring, please see Table Scoring Table.. We applied beam search with a beamwidth equal to 10, the search stops when an end of sentence token is generated. In order to obtain language variability from the deployed model we ran decoding until we obtained 5 candidates and randomly sampled one as the system response.
Tracker performance Table 1 shows the evaluation of the trackers’ performance. Due to delexicalisation, both CNN type trackers and N-gram type trackers [Henderson et al.2014] achieve high precision, but the N-gram tracker has worse recall. This result suggests that compared to simple N-grams, CNN type trackers can better generalise to sentences with long distance dependencies and more complex syntactic structures.
We evaluated the end-to-end system by first performing a corpus-based evaluation in which the model is used to predict each system response in the held-out test set.
Three evaluation metrics were used: BLEU score (on top-1 and top-5 candidates)
We evaluated the end-to-end system by first performing a corpus-based evaluation in which the model is used to predict each system response in the held-out test set. Three evaluation metrics were used: BLEU score (on top-1 and top-5 candidates)[Papineni et al.2002], entity matching rate and objective task success rate [Su et al.2015]. We calculated the entity matching rate by determining whether the actual selected entity at the end of each dialogue matches the task that was specified to the user. The dialogue is then marked as successful if both (1) the offered entity matches, and (2) the system answered all the associated information requests (e.g. what is the address?) from the user. We computed the BLEU scores on the template-like output sentences before lexicalising with the entity value substitution.
Table 2 shows the result of the corpus-based evaluation averaging over 5 randomly initialised networks. The Baseline block shows two baseline models: the first is a simple turn-level sequence to sequence model [Sutskever et al.2014] while the second one introduces an additional recurrence to model the dependency on the dialogue history following Serban et al [Serban et al.2015b]. As can be seen, incorporation of the recurrence improves the BLEU score. However, baseline task success and matching rates cannot be computed since the models do not make any provision for a database.
The Variant block of Table 2 shows two variants of the proposed end-to-end model. For the first one, no requestable trackers were used, only informable trackers. Hence, the burden of modelling user requests falls on the intent network alone. We found that without explicitly modelling user requests, the model performs very poorly on task completion (%), even though it can offer the correct entity most of the time(%). More data may help here; however, we found that the incorporation of an explicit internal semantic representation in the full model (shown below) is more efficient and extremely effective. For the second variant, the LSTM intent network is replaced by a CNN. This achieves a very competitive BLEU score but task success is still quite poor (% success). We think this is because the CNN encodes the intent by capturing several local features but lacks the global view of the sentence, which may easily result in an unexpected overfit.
The Full model block shows the performance of the proposed model with different decoding strategies.
The first row shows the result of decoding using the average likelihood term (Equation 13) while the second row uses the weighted decoding strategy (Equation 14).
As can be seen, the weighted decoding strategy does not provide a significant improvement in BLEU score but it does greatly improve task success rate (%).
The term contributes the most to this improvement because it injects additional task-specific information during decoding.
Despite this, the most effective and elegant way to improve the performance is to use the attention-based mechanism (+att.) to dynamically aggregate the tracker beliefs (Section 2.4).
It gives a slight improvement in BLEU score () and a big gain on task success (%).
Finally, we can improve further by incorporating weighted decoding with the attention models (
decoding with the attention models (+ att. + weighted).
As an aside, we used t-SNE [der Maaten and Hinton2008] to produce a reduced dimension view of the action embeddings , plotted and labelled by the first three generated output words (full model w/o attention). The figure is shown as Figure 3. We can see clear clusters based on the system intent types, even though we did not explicitly model them using dialogue acts.
Human evaluation In order to assess operational performance, we tested our model using paid subjects recruited via Amazon Mechanical Turk. Each judge was asked to follow a given task and to rate the model’s performance. We assessed the subjective success rate, and the perceived comprehension ability and naturalness of response on a scale of 1 to 5. The full model with attention and weighted decoding was used and the system was tested on a total of 245 dialogues. As can be seen in Table 3, the average subjective success rate was 98%, which means the system was able to complete the majority of tasks. Moreover, the comprehension ability and naturalness scores both averaged more than 4 out of 5. (See Appendix for some sample dialogues in this trial.)
We also ran comparisons between the NN model and a handcrafted, modular baseline system (HDC) consisting of a handcrafted semantic parser, rule-based policy and belief tracker, and a template-based generator. The result can be seen in Table 4. The HDC system achieved % task success rate, which suggests that it is a strong baseline even though most of the components were hand-engineered. Over the 164 dialogues tested, the NN system (NN) was considered better than the handcrafted system (HDC) on all the metrics compared. Although both systems achieved similar success rates, the NN system (NN) was more efficient and provided a more engaging conversation (lower turn number and higher preference). Moreover, the comprehension ability and naturalness of the NN system were also rated higher, which suggests that the learned system was perceived as being more natural than the hand-designed system.
This paper has presented a novel neural network-based framework for task-oriented dialogue systems. The model is end-to-end trainable using two supervision signals and a modest corpus of training data. The paper has also presented a novel crowdsourced data collection framework inspired by the Wizard-of-Oz paradigm. We demonstrated that the pipe-lined parallel organisation of this collection framework enables good quality task-oriented dialogue data to be collected quickly at modest cost.
The experimental assessment of the NN dialogue system showed that the learned model can interact efficiently and naturally with human subjects to complete an application-specific task. To the best of our knowledge, this is the first end-to-end NN-based model that can conduct meaningful dialogues in a task-oriented application.
However, there is still much work left to do. Our current model is a text-based dialogue system, which can not directly handle noisy speech recognition inputs nor can it ask the user for confirmation when it is uncertain. Indeed, the extent to which this type of model can be scaled to much larger and wider domains remains an open question which we hope to pursue in our further work.
|Delexicalised token||Examples||(observed)||(not observed)|
|informable slot token||<s.food>, <s.area>,...||0.0||0.0|
|informable value token||<v.food>, <v.area>,...||+0.05||-0.5|
|requestable slot token||<s.phone>,<s.address>,...||+0.2||0.0|
|requestable value token||<v.phone>,<v.address>,...||+0.2||0.0|
Tsung-Hsien Wen and David Vandyke are supported by Toshiba Research Europe Ltd, Cambridge. The authors would like to thank Ryan Lowe and Lukáš Žilka for their valuable comments.
ICML Deep Learning Workshop, Lille, France.
Semantically conditioned lstm-based natural language generation for spoken dialogue systems.In EMNLP, pages 1711--1721, Lisbon, Portugal, September. ACL.
Human : Restaurant in any area that serves Vietnamese food Machine : thanh binh serves vietnamese food type , is there anything else i can help you with ? Human : What is the phone number and post code Machine : the number is 01223 362456 and the area code is c.b 3, 0 a.f . is there anything else i can do for you ? Human : Good bye Machine : thank you for using the cambridge restaurant system . Human : i am looking for moderately priced halal food Machine : i am sorry , there are no halal restaurants in the moderate price range . would you like something else ? Human : how about european food Machine : galleria serves european food type and is in the moderate price range . Human : address and postcode Machine : the address is 33 bridge street and the area code is c.b 2, 1 u.w . is there anything else i can help you with today ? Human : thanks Machine : galleria is a european restaurant in the moderate price range . would you like their phone ? Human : thank you Machine : thank you for using the cambridge restaurant system . good bye Human : Hi, I’m hungry for some Indonesian food Machine : i am sorry , there are no indonesian restaurants . would you like a different food ? Human : Oh no. How about Indian? Machine : there are 9 restaurants serving indian types of food . do you have a preference on side of town ? Human : East side please Machine : sitar tandoori is a indian restaurant in the east side of town . would you like their information ? Human : Yes, the address and phone number please Machine : sitar tandoori is located at 43 high street cherry hinton cherry hinton and their phone number is 01223 249955 . Human : Okay, thank you Machine : thank you , goodbye . Human : hello Machine : what cuisine would you like ? Human : afghan Machine : i am sorry , there are no afghan restaurants . would you like something else ? Human : korean Machine : little seoul serves korean food , it is located at 108 regent street city centre . Human : is it expensive? Machine : little seoul serves korean food and is in the expensive price range . Human : what area is that Machine : little seoul is located in the centre area of town . would you like their number ? Human : yes Machine : the telephone number is 01223 308681 . is there anything else i can help you with today ? Human : no goodbye Machine : thank you for using the cambridge restaurant system , goodbye . Human : I want to find a restaurant in the east part of town that serves creative food Machine : i am sorry , there are no creative restaurants in the east side of town . would you like a different restaurant ? Human : how about indian food? Machine : curry prince is a indian restaurant in the east of town . would you like their phone number ? Human : yes, may i have the address and phone number? Machine : curry prince is located at 451 newmarket road fen ditton and their phone is 01223 566388 . is there anything else i can help you with today ? Human : no, thank you goodbye Machine : thank you for using the cambridge restaurant system . good bye Machine : what food are you interested ? Human : english Machine : i am sorry , there are no english restaurants . would you like to try a different food type ? Human : chinese Machine : there are 8 restaurants serving chinese type of cuisine . do you have a preference of area ? Human : south part Machine : the good luck chinese food takeaway is a chinese restaurant in the south of town . would you like the phone number ? Human : no. just address and price range Machine : the good luck chinese food takeaway is located at 82 cherry hinton road cherry hinton . is there anything else i can help you with ? Human : what is their price range? Machine : the good luck chinese food takeaway is expensively priced chinese restaurant in the south area . would you like more information ? Human : no goodbye Machine : thank you for using the cambridge restaurant system . good bye . Human : Is there a gastropub anywhere around here? Machine : there are 3 gastropub restaurants . would you like more information ? Human : Is there one on the west side? Machine : i am sorry , there are no gastropub restaurants in the west side of town . would you like something else ? Human : How about east? Machine : royal standard is a gastropub restaurant in the east of town . Human : What’s the address? Machine : the address is 290 mill road city centre . Human : Thanks, bye Machine : thank you for using the cambridge restaurant system . good bye