| /*---------------------------------------------------------------------------* |
| * SR_SemanticGraph.h * |
| * * |
| * Copyright 2007, 2008 Nuance Communciations, Inc. * |
| * * |
| * Licensed under the Apache License, Version 2.0 (the 'License'); * |
| * you may not use this file except in compliance with the License. * |
| * * |
| * You may obtain a copy of the License at * |
| * http://www.apache.org/licenses/LICENSE-2.0 * |
| * * |
| * Unless required by applicable law or agreed to in writing, software * |
| * distributed under the License is distributed on an 'AS IS' BASIS, * |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * |
| * See the License for the specific language governing permissions and * |
| * limitations under the License. * |
| * * |
| *---------------------------------------------------------------------------*/ |
| |
| #ifndef __SR_SEMANTICGRAPH_H |
| #define __SR_SEMANTICGRAPH_H |
| |
| |
| |
| #include "SR_SemprocPrefix.h" |
| #include "pstdio.h" |
| #include "ptypes.h" |
| #include "srec_context.h" /* for wordmap */ |
| #include "ESR_ReturnCode.h" |
| |
| |
| /** |
| * A Semantic Graph is a data structure representing acceptable phrases and their associated |
| * meaning. A graph is made up of nodes and arcs. Arcs are associated with input symbols and |
| * output symbols. Input symbols are words that may be spoken, and output symbols are symbols |
| * which allow for semantic interpretation. For example, certain output symbols are actually |
| * labels which map to script expressions (eScript expressions, similar to JavaScript). |
| * These expressions are interpreted by a Semantic Processor in order to determine meaning, such as |
| * spoken input symbol: "one", expression: "DIGIT.V='1'", semantic interpretation: "1". |
| * |
| * Refer to the SR_SemanticProcessor.h documentation to find out more about parsing, and about |
| * semantic interpretation (eScript). |
| */ |
| typedef struct SR_SemanticGraph_t |
| { |
| /** |
| * Destroys a semantic graph. |
| * |
| * @param self SR_SemanticGraph handle |
| */ |
| ESR_ReturnCode(*destroy)(struct SR_SemanticGraph_t* self); |
| /** |
| * Loads a semantic graph from disk. |
| * |
| * @param self SR_SemanticGraph handle |
| * @param ilabels Input word labels to be used when building the graph (The should be the same as |
| * the output word labels from the recognition graph/context.) |
| * @param basename File to read graph from (.g2g image or basename for text files) |
| * @param num_words_to_add Number of words to add dynamically (only applies when loading from text files) |
| * @todo complete documentation |
| */ |
| ESR_ReturnCode(*load)(struct SR_SemanticGraph_t* self, wordmap* ilabels, const LCHAR* basename, int num_words_to_add); |
| /** |
| * Unloads a semantic graph. |
| * |
| * @param self SR_SemanticGraph handle |
| * @return ESR_SUCCESS |
| */ |
| ESR_ReturnCode(*unload)(struct SR_SemanticGraph_t* self); |
| |
| /** |
| * Saves the semantic graph as a binary image. |
| * |
| * @param self SR_SemanticGraph handle |
| * @param filename Name of the binary image file. |
| * @param version_number Target file format version. |
| */ |
| ESR_ReturnCode(*save)(struct SR_SemanticGraph_t* self, const LCHAR* filename, int version_number); |
| |
| /** |
| * Adds a word to the semantic graph at the specified slot. Tag may be defined or NULL. |
| * |
| * @param self SR_SemanticGraph handle |
| * @param slot Where to insert in graph (only ROOT supported right now) |
| * @param word Word to add. |
| * @param word Semantic Tag for the word. |
| * @param maybeMultiMeaning Indicates that we MAY be adding alternate multiple meanings a previously added word |
| */ |
| ESR_ReturnCode(*addWordToSlot)(struct SR_SemanticGraph_t* self, const LCHAR* slot, const LCHAR* word, const LCHAR* tag, const ESR_BOOL maybeMultiMeaning); |
| /** |
| * Removes all words from the semantic graph. |
| * |
| * @param self SR_SemanticGraph handle |
| */ |
| ESR_ReturnCode(*reset)(struct SR_SemanticGraph_t* self); |
| } |
| SR_SemanticGraph; |
| |
| |
| /** |
| * Create a new Semantic Graph |
| * |
| * @param self SR_SemanticGraph handle |
| */ |
| SREC_SEMPROC_API ESR_ReturnCode SR_SemanticGraphCreate(SR_SemanticGraph** self); |
| |
| #endif /* __SR_SEMANTICGRAPH_H */ |