A method of using a spoken language understanding system for a virtual agent to respond to a request from a user, comprising: receiving from the user a word sequence, including a first word (X 1) and a second word (X 2) provided in a forward direction in which the first word (X 1) comes before the second word (X 2); processing the word sequence through a bidirectional recurrent neural network, RNN, to generate a bidirectional RNN output, including a forward hidden state representation and a backward hidden state representation for each word of the word sequence; applying a context vector to the bidirectional RNN output to generate a weighted bidirectional RNN output; processing the weighted bidirectional RNN output through a forward RNN to generate forward RNN output; using the forward RNN output to generate actual slot information, including slot names and slot values related to the word sequence; processing the forward RNN output through a first softmax classifier to determine an actual intent related to the word sequence; processing the forward RNN output through a second softmax classifier to determine an actual dialogue act category related to the word sequence; training the spoken language understanding system by: providing annotated training corpora to the bidirectional RNN, wherein the annotated training corpora provides an expected output including at least one of expected slot information, an expected intent, and an expected dialogue act category; calculating an error based on the difference between the expected output and an actual output, wherein the actual output includes the actual slot information, the actual intent, and the actual dialogue act category; and using the error to update a value of the context vector; inputting the output from the second softmax classifier and/or first softmax classifier into the forward RNN; and wherein generating the actual slot information occurs jointly with processing the forward RNN output through both the first softmax classifier and the second softmax classifier. receiving from the user a word sequence, including a first word (X 1) and a second word (X 2) provided in a forward direction in which the first word (X 1) comes before the second word (X 2); processing the word sequence through a bidirectional recurrent neural network, RNN, to generate a bidirectional RNN output, including a forward hidden state representation and a backward hidden state representation for each word of the word sequence; applying a context vector to the bidirectional RNN output to generate a weighted bidirectional RNN output; processing the weighted bidirectional RNN output through a forward RNN to generate forward RNN output; using the forward RNN output to generate actual slot information, including slot names and slot values related to the word sequence; processing the forward RNN output through a first softmax classifier to determine an actual intent related to the word sequence; processing the forward RNN output through a second softmax classifier to determine an actual dialogue act category related to the word sequence; training the spoken language understanding system by: providing annotated training corpora to the bidirectional RNN, wherein the annotated training corpora provides an expected output including at least one of expected slot information, an expected intent, and an expected dialogue act category; calculating an error based on the difference between the expected output and an actual output, wherein the actual output includes the actual slot information, the actual intent, and the actual dialogue act category; and using the error to update a value of the context vector; providing annotated training corpora to the bidirectional RNN, wherein the annotated training corpora provides an expected output including at least one of expected slot information, an expected intent, and an expected dialogue act category; calculating an error based on the difference between the expected output and an actual output, wherein the actual output includes the actual slot information, the actual intent, and the actual dialogue act category; and using the error to update a value of the context vector; inputting the output from the second softmax classifier and/or first softmax classifier into the forward RNN; and wherein generating the actual slot information occurs jointly with processing the forward RNN output through both the first softmax classifier and the second softmax classifier.