ssigned P[Q].
Where PT is the probability that an utterance is a token, T, which corresponds to node Q (8-24) and n is the number of nodes pointed to by the token T. The probability PT could be determined during pattern matching (1-8).
If there are no additional keyword candidates to process (7-2) a procedure Determine_paths, to identify paths is executed (7-14) and which is shown in FIG. 8. Identified paths are assigned a probability value to the path. The probability value assigned to a completed path represents the likelihood of the path being correct. The higher the probability value, denoted by variable PR (8-36), the more likely that the path corresponds to the correct meaning of the user's utterance. Upon the return of Determine_paths, the paths are sorted (7-16) based upon the probability values assigned by Determine_paths in descending order. After the paths are sorted, program control returns to the procedure shown in FIG. 6 (6-6).
An input token (keyword) is tested as it is accumulated (7-4) to determine if it is within the dictionary of recognizable keywords (7-4). A token (keyword) not within the dictionary is rejected (7-6). A token (keyword) that is within the dictionary is tested to determine the total number of nodes of the tree graph of FIG. 3 (70) that it can be mapped to (7-8). The nodes of the tree graph (70) that a keyword can be mapped to form a set of nodes that comprise a union (7-10) in the aforementioned array Node_Set. Additional instances of the token (keyword) in the input (7-2) do not accumulate in Node_Set. Probability values are assigned to nodes for detected keywords for subsequent processing (7-12) to determine the most likely meaning of the user's input and paths through the tree graph of FIG. 3 are determined (7-14) as shown in FIG. 8.
FIG. 8 depicts the processing for path determination.
A counter, M, is initialized (8-16) to zero to count the number of possible complete paths as determined by the process steps shown in FIG. 8.
For each node, R, (8-20) in Node_Set if the node is a leaf and if the node was marked NEW (7-12) as set forth in FIG. 7, a variable L is set equal to R and a probability value of X is set equal to one (8-24). If L is in Node Set a probability value X is calculated by multiplying X by 1-P[L] (8-30). If L is not in Node_Set, L is set equal to PARENT[L].
By way of example and with reference to FIG. 3, if L was node “10” and was therefore a leaf and in Node_Set, the parent array 5-1 of node “10” is “20”. If “20” is not in Node_Set its probability is not calculated (8-30).
For each marked node in Node-Set (8-26) the probability is calculated (8-30) and the parent node is identified (8-28) and the process steps 8-28 and 8-30 until the root node is reached, where L is equal to zero (8-32). The value 1-X is the probability value assigned to the completed path corresponding to leaf R (8-34). If the value 1-X exceeds some threshold value, which is a design choice, the path is accepted as possible complete path. The path is accepted and the value M, which is the path counter, is incremented by 1 (8-36). PATH[M] is assigned the value of R, which is the leaf value for the path. The probability for the path, PR[M], is assigned the value 1-X. PR[M] is given by:
as calculated at reference numeral 8-30, where the product Π is taken over all marked nodes L on the path form the leaf R to the root and P[L] is determined in reference 7-12.
The variable NEW[R] prevents the system from querying the user about the same leaf more than once if the user has not uttered the keyword more than once.
The number Npaths is assigned the value of M (8-40) and control is returned to the procedure shown in FIG. 7 (7-14).
As set forth above, recognized keywords of a spoken utterance can be mapped to the nodes of the tree graph (70), the system thereafter tests to determine if the keywords are mapped to nodes that can be “linked” by intermediate edges (shown as the line segments between nodes). If a path can be established by nodes linking edges between the root node (0) and a leaf node (3, 4, 5, 6