Patent Publication Number: US-2004044515-A1

Title: Automated natural language inference system

Description:
FIELD OF THE INVENTION  
       [0001] The present invention is related to knowledge-based systems and, more particularly, to an automated natural language inference system that interprets KEYWORDS within a natural language stream to carry out a particular action inferred from such stream and, if necessary, queries the user for more KEYWORDS or natural language CONFIRMATION via a natural language dialog until an inferred action can be fired.  
       BACKGROUND OF THE INVENTION  
       [0002] Presently, automated interactive speech system are grammar based. In grammar-based systems, each context has a predetermined set of grammar or phrases that the user must say in order to interact with the system. For example, if the user wants to retrieve their email messages, they may be required to say the phrase “get email.” The behavior of grammar-based automatic speech recognizers (ASRs) is repeatable since the same predetermined set of phrases is required to produce an action within the system. As can be readily seen, such grammar-based ASRs require a very large phrase or grammar dictionary of most every phrase the user population may speak in order to automate the system. Accordingly, grammar-based systems are not very flexible.  
       [0003] In view of the foregoing, there is a continuing need for a knowledge-based system that can infer meaning from the natural language in order to produce an action.  
       [0004] As will be seen more fully below, the present invention is substantially different in structure, methodology and approach from that of the prior automated attendant system systems and methods.  
       SUMMARY OF THE INVENTION  
       [0005] The present invention contemplates an automated natural language inference system that includes a plurality of rules, each rule having an associated TEMPLATE. Each template has “slots” into which KEYWORDS of recognized speech of a particular length is inserted. If a filled template matches an associated rule, then such associated rule is fired to execute a predetermined action embedded in the rule.  
       [0006] The present invention further contemplates a template that has weighted slots wherein a weighting factor of a slot is used to determine which rule of the plurality of rules takes preference if more than one populated TEMPLATE has a rule match.  
       [0007] The present invention further contemplates an automated natural language inference system that includes an interaction procedure that queries the user for more KEYWORDS or natural language CONFIRMATION based on the populated TEMPLATES wherein a series of queries may be required until the action is executed.  
       [0008] The above and other objects of the present invention will become apparent from the drawings, the description given herein and the appended claims.  
     
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
     [0009]FIG. 1 illustrates a general block diagram of the automated natural language inference system in accordance of the present invention.  
     [0010]FIG. 2 illustrates the flowchart of the overall natural language inference process in accordance with the present invention.  
     [0011]FIG. 3 illustrates a flowchart of the process for populating TEMPLATES in accordance with the present invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION  
     [0012] Referring now to the drawings and in particular FIG. 1, the automated natural language inference system  10  includes KEYWORDS  15  from the ASR unit  20  that are derived from the user&#39;s spoken words or user&#39;s input  5 . The system  10  further includes a RULE SET  30  and an inference engine  40  that contains the reasoning logic to process the RULE SET  30  and the recognized speech to derive the KEYWORDS  15 . Moreover, the system  10  includes an interactive speech synthesizer unit (ISS)  50  to carryout automated interactive sessions with the user in order to prompt the user for more information to fire an inferred action, as will be described in more detail below.  
     [0013] The inference engine  40  is an inference knowledge-based system. Thereby, people can query system  10  in a more natural way, e.g. use natural language to interact with system  10 . In other words, the system  10  employs natural language understanding in the ASR&#39;s dialogue flow control.  
     [0014] Referring now to the KEYWORDS, KEYWORDS are derived by the ASR unit  20  in response to user input  5  to create recognized speech. The ASR unit  20  converts the user&#39;s speech (input  5 ) to text, which forms the recognized speech, in order to derive such KEYWORDS  15  wherein each KEYWORD has a word SIZE. The word SIZE is directly proportional to the number of characters in a KEYWORD. These words are communicated, to the inference engine  40 , by the ASR unit  20  not as phrases but as KEYWORDS  15  flagged in the grammar interspersed with “GARBAGE MODELS”, i.e. constructs interpreted by the ASR unit  20  as speech as opposed to noise but not associated with words in phrases that the ASR unit  20  uses to calculate recognition scores. The KEYWORDS  15  are then used by the inference engine  40  to fill slots in TEMPLATES of the RULE SET  30 .  
     [0015] An example of KEYWORDS  15  in grammar phrases, from the natural language stream of the user, may be expressed as:  
     &lt;GrammarRule&gt;=check . . . new messages|check . . . +new messages  (1)  
     [0016] wherein “check,” “new” and “messages” are KEYWORDS  15  and are used to populate TEMPLATE slots; and, “. . . ” is a GARBAGE MODEL. The inference engine  40  interprets such GARBAGE MODEL as speech filler, not as noise.  
     [0017] In the exemplary embodiment, the RULE SET  30  is a set of IF-THEN rules or other conditional statements. The reasoning logic of the inference engine  40  includes such RULE SET  30  and known facts. An IF-THEN rule is expressed as:  
     IF [condition] THEN [action].  (2)  
     [0018] Each rule has a condition part (IF) and an action part (THEN). If the left-hand side (the IF part), also called premise, is satisfied, the rule becomes applicable and subject to is fired or executed by the inference engine  40 . Each IF-THEN rule is expressed in terms of a TEMPLATE having slots adapted to be populated with the derived KEYWORDS  15 . Each slot of the TEMPLATE has a slot SIZE of a predetermined number of characters and a slot VALUE or WEIGHTING FACTOR. For example, with regard to the KEYWORDS  15  of the above exemplary embodiment, a TEMPLATE for a RULE is expressed as:  
     IF [slot1] for [slot2] [slot3]  (3)  
     [0019] THEN return and play [slot2] voicemail messages.  
     [0020] When the TEMPLATE of expression (3) is populated with KEYWORDS  15 , the TEMPLATE would be expressed as:  
     IF [check] for [new] [messages]  (4)  
     [0021] THEN return and play [new] voicemail messages  
     [0022] wherein the words populated within the brackets are KEYWORDS  15 . However, the KEYWORDS in the THEN part of the expression (3) are derived from the KEYWORDS inserted into the IF part of expression (3).  
     [0023] Examples of other TEMPLATES as expressed in expressions (5) and (6) which include the following:  
     IF [check] for [old] [messages]  (5)  
     [0024] THEN return and play [old] voicemail messages  
     IF [check] for [deleted] [messages]  (6)  
     [0025] THEN return and play [deleted] voicemail messages.  
     [0026] wherein the words populated within the brackets are KEYWORDS.  
     [0027] As can be appreciated, the number and construction of TEMPLATES are enumerable. Accordingly, to describe such TEMPLATES for different industrial applications is prohibitive. EXAMPLE 2 described below provides an exemplary set of TEMPLATES, rules and QUESTIONS.  
     [0028] In operation, all TEMPLATES within the rule template database  42 , or a subset within the database  42 , are populated with the KEYWORDS  15  in all possible permutations (constrained by word size and slot size). In the exemplary embodiment, the KEYWORD “check” has five (5) letters and fits into a 5-character slot; the KEYWORD “new” has three (3) letters and fits into a 3-character slot; the KEYWORD “messages” has eight (8) letters and fits into a 8-character slot. If a populated TEMPLATE matches a rule, the rule is fired.  
     [0029] While the exemplary embodiment employs IF-THEN rules for retrieving voicemail or email messages, other conditional statements can be used. Examples of other rules or conditional statements can be expressed as:  
     IF [precondition] THEN [conclusion]  ( 7 )  
     IF [situation] THEN [action]  (8)  
     IF [conditions C1 and C2] hold  (9)  
     [0030] THEN [condition C3 does not hold] 
     [0031] wherein C1, C2 and C3 are arbitrary variables. The IF-THEN rules or conditional statements form chains that go from left to right. The elements on the left-hand side of these chains are input information, while those on the right-hand side are derived information.  
     [0032] In view of the forgoing, the IF-THEN rules or conditional statements with forward chains of inference that can connect various types of information, such as without limitation, data to goals; evidence to hypotheses; findings to explanations; observations to diagnoses; and manifestations to causes or diagnoses. Hence, IF-THEN rules are generally a natural form of expressing knowledge.  
     [0033] The IF-THEN rule or other conditional statement preferably would have the following properties: modularability such that, each rule defines a small, relatively independent piece of knowledge; incrementability such that new rules can be added to the knowledge base relatively independently of other rules; modifiability (as a consequence of modularity) such that old rules can be changed relatively independent of other rules; and, supports system&#39;s transparency.  
     [0034] The inference engine  40  includes a control program  48  that is essentially an interpreter program to control the order in which the rules of the RULE SET  30  are formed by populating slots of rule TEMPLATES, resolve conflicts if more than one rule is applicable, and finally decide which rules to fire if such rules become TRUE. The control program  48  repeatedly applies rules to the current set of slots of the rule TEMPLATE until all permutations have been evaluated to find all TRUE rules. The control program  48  then selects the best rule or the rule with the highest ranking or preference to fire if more than one rule becomes TRUE.  
     [0035] In operation, as the permutations of populating the slots with the KEYWORDS  15  are created, the control program  48  determines “BAD VARIABLE SLOT ASSOCIATION.” Thereby, the control program  48  determines which permutations, of the populated TEMPLETE do not match the rule or do not make sense against the rule.  
     [0036] Additionally, the control program  48  determines a “CONFUSION SET.” A “CONFUSION SET” is a set of partially filled TEMPLATES. A CONFUSION SET is created when the number of KEYWORDS is less than the number of slots. If more that one TEMPLATE matches an associated rule, the control program  48  will fire the rule that has the greatest total slot VALUE. The VALUES or WEIGHTING FACTORS for each slot is a function of KEYWORD relevance. The higher the relevance of the KEYWORD, the higher the VALUE or WEIGHTING FACTOR of the slot. Thus, ordering of the active rules (rules that make sense) in the CONFUSION SET is given by the sum of the slot VALUES for completed TEMPLATES.  
     [0037] Furthermore, each rule has an associated TEMPLATE with slot variable data stored in a slot variables database  44 . Slot variables include the number of slots of a TEMPLATE; slot VALUES; dialogue context; optional words indicated by “( )” parentheses; and, equivalent occurrences indicated by “/” slashes. Examples of a dialogue context includes the different industrial applications such as email and voicemail.  
     [0038] The reasoning logic of the control program  48  is a forward chain data-driven reasoning process where a set of rules is used to derive new facts from an initial set of data. The rule interpreter of the control program  48  applies production rules in the appropriate order to accomplish the task of putting relevant characteristics of the knowledge-based system in working memory and arriving at the best estimated result.  
     [0039] For the “email context,” an exemplary TEMPLATE populated with KEYWORDS is expressed as:  
     IF [get] (all) [messages/emails] from [NAME]  (10)  
     [0040] since (for) past [NUMBER] of days  
     [0041] THEN query email store for messages from NAME since date  
     [0042] wherein the “date” is calculated from the KEYWORD “NUMBER;” and the “NAME” is derived information from the KEYWORDS and is entered in the action part of the IF-THEN rule. The words between “( )” are optional and found in the slot variables database  44 .  
     [0043] The TEMPLATE in expression (10) has four (4) slots whose values are given between the square brackets is expressed as (the derived information from the KEYWORDS in the THEN action part does not generally have values):  
     IF [8] (all) [2] from [10]  (11)  
     [0044] since (for) past [10] of days  
     [0045] THEN query email store for messages from NAME since date.  
     [0046] wherein the first slot has a VALUE of 8, the second slot has a VALUE of 2 and the third slot has a VALUE of 10.  
     [0047] Values associated with action part of the rule (or the “Then” clause) do not, generally, lend information to the rule weight. The values that appear in the “Then” clause are generally carried over from the conditional “If” clause with their values double counting the rule weight. Rule weights must be properly normalized (relative weights lie on the same scale) in order to properly reflect their application.  
     [0048] Referring now to FIG. 2, the flowchart of the overall natural language inference process  100  begins at Step  102  where the ASR unit  20  listens and recognizes the speech  5  from the natural language stream from the user. In the exemplary embodiment, speech recognition includes converting the speech to text. Step  102  is followed by Step  104  where the ASR unit  20  extracts KEYWORDS  15  from the recognized speech. KEYWORDS  15  are a function of the industrial application. Examples 1 and 2 set forth below illustrate exemplary sets of KEYWORDS for retrieving messages or emails and banking applications, respectively. Step  104  is followed by Step  106 , a determination step, to determine whether any of the extracted KEYWORDS match clause variables. Accordingly, if whatever KEYWORDS currently extracted from the voice stream do not match clause (or rule) variables of a TEMPLATE no new information is added and the system informs the caller that it did not understand the last utterance. The system can respond by re-asking the last question or by asking the caller to repeat themselves, depending on how complete the most competitive rule is.  
     [0049] If the determination is “NO,” then Step  106  is followed by Step  108  where the user is notified that the recognition speech is not recognized. Step  108  returns to the beginning of Step  102 , described above.  
     [0050] However, if the determination at Step  106  is “YES,” Step  106  is followed by Step  110  where the ASR unit  20  populates the extracted KEYWORDS into all rule TEMPLATES stored in the rule template database  42 . Step  110  is followed by Step  112  where the populated TEMPLATES are ordered in accordance with readiness to fire based on the total slot VALUE of a TEMPLATE. In other words, those TEMPLATES that have the most slots filled have the highest total slot VALUE. Step  112  is followed by Step  114  where a determination is made whether any of the TEMPLATES can be executed. If the determination is “YES,” Step  114  is followed by Step  116  where the system  10  executes the action associated with the TEMPLATE. Step  116  is followed by Step  118  where the current TEMPLATE list is cleared.  
     [0051] However, if there is not a TEMPLATE ready to fire at Step  114  and the determination is “NO,” the Step  114  is followed by Step  120 . At Step  120 , the system indexes QUESTIONS in the questions template database  46 , to the highest priority TEMPLATE. Step  120  is followed by Step  122  where the system  10  plays the QUESTION using a natural language dialog via ISS  50 . Step  122  returns back to Step  102  where the process is repeated. In other words, the system  10  repeats various QUESTIONS to query the user for predetermined information so that a valid inferred action can be fired.  
     [0052] As can be appreciated, the natural language dialog conveyed by the QUESTIONS queries the user for missing and necessary KEYWORDS not previously provided or natural language CONFIRMATION to complete the inference determination to fire an action.  
     [0053] Referring now to FIG. 3, the flowchart of the process  150  for populating TEMPLATES (Step  110  of FIG. 2) begins at Step  152  where KEYWORDS are matched to slot variables. Step  152  receives input from the KEYWORD deriving process Step  151  (Steps  102 - 106  of FIG. 2), accesses TEMPLATES in rule template database  42  and slot variables database  44 . Step  152  is followed by Step  154  where the variables are filled into the slots according to the number of slots in rules in all permutations for variables with correct size. In other words, the KEYWORDS are populated into the slots based on SIZE. Step  154  is followed by Step  156  where a determination is made whether any permutations of the TEMPLATES are complete. If the determination is “YES” at Step  156 , then Step  156  is followed by Step  158  where the completed TEMPLATE(s) are matched to the associated RULE SET  30 . Step  158  is followed by Step  160  where a determination is made whether there is a rule match. IF there is a rule match at Step  160 , then Step  160  is followed by Step  162  where the rule is fired and the associated action executed. Step  162  is followed by Step  164  where the process  150  is terminated. It should be noted, that Steps  158 ,  160  and  162  map to Steps  112 ,  114  and  116  of FIG. 2.  
     [0054] However, if the determination is “NO” at Step  160 , the Step  160  is followed by Step  166  where the control program  48  determines the BAD VARIABLE SLOT ASSOCIATION. Step  166  is followed by Step  168  where the next full TEMPLATE is retrieved and evaluated such that Step  168  returns to Step  158 .  
     [0055] Referring again to Step  156 , if the determination at Step  156  is “NO” then Step  156  is followed by Step  170 . At Step  170  there is a determination whether there are any partial rule matches. If the determination is “YES” at Step  170 , then Step  170  is followed by Step  172  where the CONFUSION SET is filled. Step  172  is followed by Step  174  where the CONFUSION SET is ordered in terms of completeness and total slot VALUE. This is where the slot values are used to determine the firing order.  
     [0056] Step  174  is followed by Step  178  where the next partial TEMPLATE is obtained and evaluated. Step  178  is followed by Step  180 , where a determination is made whether there are more variables in the partially filled TEMPLATE. If the determination at Step  180  is “YES,” Step  180  returns to Step  154 , described above. However, if the determination is “NO,” Step  180  is followed by Step  182  where a QUESTION is asked. Step  182  is related to Steps  120  and  122  of FIG. 2.  
     [0057] Referring again to Step  170 , if the determination at Step  170  is “NO,” then Step  170  is followed by Step  176  where a BAD SLOT ASSOCIATION is determined. Step  176  is followed by Step  178 , previously described.  
     [0058] In summary, process  150  includes placing KEYWORDS in slots of rule TEMPLATES in various permutations wherein the placement is constrained by the number of slots in a particular TEMPLATE and the number of available KEYWORDS (Steps  152  and  154 ). Thereafter, the process  150  includes scanning production rules for TEMPLATE matches (Steps  156  and  158 ); and, rejecting rules with too few slots, to retain only TEMPLATES with complete or partial correct rule matches.  
     [0059] The process  150  further includes scanning the production rules for those active or applicable, i.e. those whose IF condition evaluates to TRUE. This step generates a list of active rules (which might be null list). (SEE Steps  168  and  178 )  
     [0060] Referring also to FIG. 2, if no rules can be made active, the inference engine  40  determines closest probable rules (those with largest percentage of filled slots over some minimum cut off) and ask appropriate leading QUESTIONS in an attempt to satisfy a rule (Steps  120 - 122 ). The number of leading QUESTIONS is a variable set. If no rule can be made active in some number of attempts, the system  10  is queued to indicate a miss-recognition (Step  108 ).  
     [0061] However, if more than one rule becomes active, then the inference engine  40  deactivate those rules with less valuable information. For example, a date in an “email context” is more valuable than the KEYWORD “email” or “message.” This prevents mistakes due to badly formed requests.  
     [0062] Next, the inference engine  40  fires the first active production rule or the complete rule with the most valuable information. If there are no applicable rules, the process is exited and the user is notified of a miss-recognition.  
     EXAMPLE 1  
     Email Message Retrieval  
     [0063] Below is TABLE 1 illustrating the natural language stream a user may input. The KEYWORDS  15  are derived from the input and the natural language dialog via QUESTIONS from the questions template database  46  or other inferred action.  
                           TABLE 1                               SYSTEM           CONTEXT   USER   (KEYWORDS)   ACTION                  Main Menu   Check my emails.   Check, emails   Fire Rule1           What emails do I have.   Emails   Question: do you           How many emails do I have.   Emails   want to check or read           I want my email(s).   Emails   your email           .   .   Question: do you           .   .   want to check or read           .   .   your email           Get my email please   Get, email   Fire Rule2           (please) read my email   Read, email   Fire Rule2           Email   Email   Question: do you           I want my email   Email   want to check or read           .   .   your email           .   .           .   .       Email Context   Go to last/first email/message.   Go, last/first,   Fire Rule1       (complete info)       email/message           Go to next/last email/message.   Go, next/last,   Fire Rule2               email/message           Get (all) messages/emails from   Get, messages/email,   Fire Rule3           NAME.   NAME           Get (all) messages/emails from   Get, messages/email,   Fire Rule4           NAME since (for) past NUMBER   NAME, NUMBER           of days.       Email Context   Go to last/first email/message.   Go, email/message   Question: which       (incomplete           email/message would       info)   Go to next/last email/message.       you like to go to?           Get (all) messages/emails from   Get, email/message   Question: from whom           NAME.       would you like to get                   messages?           Get (all) messages/emails from   Get, email/message,           NAME since (for) past NUMBER   NUMBER           of days       Email Context   Get (all) messages between start   Get, between, start, end   Fire Rule5       (complete info)   date end date           Get (all) messages before date   Get, before, date   Fire Rule6           Get (all) messages after date   Get, after, date   Fire Rule7       Email Context   Get (all) messages between start   Get, start, end   Fire Rule5       (incomplete   date end date       info)           Get (all) messages before date   Get, date   Question: do you           Get (all) messages after date       want messages from                   before or after this                   date                  
 
     [0064] The column titled “USER” illustrates exemplary natural language streams that may be received by the system  10 . The column titled “SYSTEM KEYWORDS” illustrates exemplary KEYWORDS that would be recognized by the ASR unit  20 . The column titled “ACTION” illustrates various actions that would be inferred by the system  10 . When the KEYWORDS do not fill a respective TEMPLATE and permutations thereof, the action would include querying the user via a natural language dialog to get more KEYWORDS or CONFIRMATION of inference.  
     EXAMPLE 2  
     Natural Language Banking Application  
     Glossary  
     [0065] &lt; &gt;=indicates Grammar rule  
     [0066] |=indicates alternate word  
     [0067] { }=indicates optional word  
     [0068] ( )=indicates grouped words  
     [0069] [ ]=indicates variable slot for KEYWORD  
     [0070] [num1,num2]=indicates slot weight, slot question index  
     Embedded Grammar  
     [0071] Amountmoney= 
     [0072] &lt;Amount&gt;dollar,  
     [0073] &lt;Amount&gt;dollar and &lt;tydigit&gt; cents,  
     [0074] &lt;Amount&gt;dollar and &lt;teendigit&gt; cents,  
     [0075] &lt;Amount&gt;dollar and &lt;digit&gt; cents,  
     [0076] &lt;tydigit&gt; cents,  
     [0077] &lt;teendigit&gt; cents,  
     [0078] &lt;digit&gt; cents,  
     [0079] Amount= 
     [0080] &lt;digit&gt;, &lt;tydigit&gt;, &lt;teendigit&gt;,  
     [0081] &lt;digit&gt; thousand, &lt;digit&gt; hundred,  
     [0082] &lt;digit&gt; thousand and &lt;digit&gt; hundred,  
     [0083] &lt;digit&gt; hundred and &lt;tydigit&gt;,  
     [0084] &lt;digit&gt; hundred and &lt;teendigit&gt;,  
     [0085] &lt;digit&gt; hundred and &lt;digit&gt;,  
     [0086] &lt;digit&gt;=1, 2, 3, . . . 0;  
     [0087] &lt;tydigit&gt;=10, 20, . . . , 90;  
     [0088] &lt;teendigit&gt;=11, 12, . . . , 19;  
     [0089] &lt;bill&gt;=phone bill|electricity bill|etc;  
     [0090] &lt;sourceDestination&gt;=checking account|savings account|etc;  
     Persistent Variables  
     [0091] These variables are not cleared when an action is taken and includes Current account and Amountmoney.  
     [0092] Below is TABLE 2 of a set of Rules and TEMPLATE association for the banking application. The TABLE 2 is exemplary and not to be considered exhaustive.  
                   TABLE 2                           TEMPLATE       RULE   [variable weight, question index]                  1) IF [go] to [account] THEN make account   IF [8,1] to [8,2] THEN make account current       current and report balance, make   and report balance, make Amountmoney in       Amountmoney in account current   account current       2) IF [check | report | ] (tell me) {my} [account]   IF [8,1] {my} [8,2] {balance} THEN query       {balance} THEN query account and report,   account and report, make account current,       make account current, make Amountmoney in   make Amountmoney in account current       account current       3) IF [check | report | ] (tell me) [all] (my)   IF [8,1] [5,2] {my} {account} balances THEN       {account} balances THEN query account and   query all accounts and report       report       4) IF {transfer} [Amountmoney] [from]   IF {[8]} [8,1] [10,2] [8,3] THEN transfer       [sourceDestination] THEN transfer   Amountmoney from source to current account       Amountmoney from source to current account       5) IF {transfer} [Amountmoney] [to]   IF {[8]} [8,1] [10,2] [8,3] THEN transfer       [sourceDestination] THEN transfer   Amountmoney to destination from current       Amountmoney to destination from current   account       account       6) IF {transfer} [Amountmoney] [from]   IF {[8]} [10,1] [8,2] [8,3] [8,4] [8,5] THEN       [account1] [to] [account2] THEN transfer   transfer Amountmoney from account1 to       Amountmoney from account1 to account2,   account2 make account1 current, make       make account1 current, make Amountmoney   Amountmoney in account1 current       in account1 current       7) IF {transfer} [Amountmoney] [from]   IF {[8]} [8,1] [8,2] [8,3] THEN transfer       [account] THEN transfer {Amountmoney}   Amountmoney from account to current       from account to current account   account       8) IF {transfer} [Amountmoney] [to] [account]   IF {[8]} [8,1] [8,2] [8,3] THEN transfer       THEN transfer Amountmoney to account from   Amountmoney to account from current       current account   account       9) IF [pay] {the} [bill] THEN pay the bill with   IF [8,1] [8,2] THEN pay the bill with bill ID =       bill ID = bill from current account   bill from current account                  
 
     [0093] The column titled “Rule” identifies TRUE TEMPLATES with the KEYWORDS identified in “[ ]”. The column titled “TEMPLATES” illustrates templates, with the WEIGHTING FACTOR and index number of the QUESTION in the template question database  46 . The QUESTION and index are set forth below in TABLE 3.  
     [0094] Below is TABLE 3 and exemplary listing of QUESTIONS to carry out the natural language dialog to retrieve more KEYWORDS or CONFIRMATION. The numbered pairs in the “QUESTION” column indicate (rule, variable). For example, (4,3) means the 3 rd  variable in the 4 th  rule which is “[sourceDestination]”. Thus, for the question “How much do you wish to transfer from (4,3)”, the (4,3) would map to [sourceDestination]. The slot index number is the order of the slots as it appears in the TEMPLATE.  
                   TABLE 3                       RULE, SLOT INDEX   QUESTION (Rule, Variable)                  1,   If you want to go to account, say go to account.       1,2   Which account do you want to go to?       2,1   If you want to check account, say check           account.       2,2   Which account do you want to check?       3,1   If you want to check all accounts, say check all           accounts.       3,2   If you want to check all accounts, say check all           accounts.       4,1   How much do you wish to transfer from (4,3)?       4,2   If you wish to transfer money from (4,3), say           transfer ((4,1) | money) from (4,3).       4,3   From where do you want to transfer ((4,1) |           money)?       5,1   How much do you wish to transfer to (5,3)?       5,2   If you wish to transfer money to (5,3), say           transfer ((5,1) | money) to (5,3).       5,3   To where do you want to transfer ((5,1) |           money)?       6,1   How much do you wish to transfer from           ((6,3) | the source account) to ((6,5) | the           destination account)?       6,2   If you wish to transfer money from (6,3), say       6,3   transfer ((6,1) | money) to (6,3).       6,4   If you wish to transfer money to (6,5), say       6,5   transfer ((6,1) | money) to (6,5).       7,1   How much do you wish to transfer from (7,1)?       7,2   If you wish to transfer money from (7,3), say           transfer ((7,1) | money) from (7,3).       7,3   From where do you want to transfer ((7,1) |           money)?       8,1   How much do you wish to transfer from (8,1)?       8,2   If you wish to transfer money to (8,3), say           transfer ((8,1) | money) to (8,3).       8,3   To where do you want to transfer ((8,1) |           money)?       9,1   If you wish to pay ((9,2) | (a bill), say pay           ((9,2) | (the bill).       9,2   Which bill do you wish to pay?                  
 
     [0095] Numerous modifications to and alternative embodiments of the present invention will be apparent to those skilled in the art in view of the foregoing description. Accordingly, this description is to be construed as illustrative only and is for the purpose of teaching those skilled in the art the best mode of carrying out the invention. Details of the embodiment may be varied without departing from the spirit of the invention, and the exclusive use of all modifications which come within the scope of the appended claims is reserved.