GrammarNode API

<span style="font-size:24px;">public class GrammarNode
代表了再一个语法中的语法节点。一个Grammar grammar 对象(语法类对象)由语法节点和语法弧所组成的图所表示。即语法类对象表示的是一个由语法节点和语法弧所组成的图。一个语法节点通常表示的是一个字或多个字,但是它可能是一个转移指向或简单的静音。
本类的属性:
private final int identity;   为语法节点的id。        
private boolean isFinal;    是否为终止节点。      
private Word[][] alternatives;    在此节点排序的字,存储排序了的字。         
private List<GrammarArc> arcList = new ArrayList<GrammarArc>();  连接到此节点把此节点当做开始节点的直接的弧。用来存储语法弧。
本类的构造方法:
public GrammarNode(int id, Word[][] alternatives);根据给定的id和字数组来创建一个语法节点对象。一个有字的语法节点默认是不可能为一个静音或最终节点的。输入参数:id为此节点的id即identity身份。Alternatives为在此节点中的字数组。注意此为一个二维数组,第一维为相对于可选的集合。第二维为相对于可选的特定的字。
protected GrammarNode(int id, boolean isFinal);通过给定的id和是否为终止的属性来创建语法节点。
本类的方法:
public int getID();获得此节点的id即身份。属性
public Word[][] getAlternatives();获得与此语法节点相关的字返回的是Alternatives属性。
void optimize();对此节点进行优化处理。对节点的所有直接弧进行的优化,并对自循环弧(弧的起始节点和目标节点相同的弧)进行了删除处理。即从弧map中删除此弧。
GrammarArc optimizeArc(GrammarArc arc);对给定的弧进行优化。如果一个弧分支指向一个空的节点,并且此节点仅仅有一个离开弧,那么本方法会新建一条新的弧来跨越空节点,指向空节点的下一节点。新弧的起点为空节点的前一节点。返回的是新建的弧。此方法能够被多次调用。
public Word[] getWords(int alternative);获得与alternative相关的字。Alternative为可选择的索引。
 public Word getWord();获得与此节点相关的一个单独的字。返回的是alternatives[0][0]的字。
  public int getNumAlternatives();获得可供选择的字的数字。即alternatives的长度。
public boolean isEmpty();决定此语法节点是否为空(也就是没有字)。空则返回true,其它情况为false。Alternatives的长度为0.
public GrammarArc[] getSuccessors();获得此节点的直接后续弧。即此节点是此弧的起点的弧。
public boolean isFinalNode();决定此语法节点是否是为终止节点即FinalNode。
public void setFinalNode(boolean isFinal);设置语法节点的final状态。一个final状态的语法标记了一个语法的结束。如果isFinal为true,则表示此语法节点是一个final节点即结束节点。
public void add(GrammarNode node, float logProbability);添加到指定(语法)节点的(语法)弧。输入参数:node为新(语法)弧的目标节点。logProbability为新弧的发生概率。新的弧存入arcList列表中。
public String toString();返回的是此节点状态的字符串表示。为G+节点id
private String traverse(int level, Set<GrammarNode> visitedNodes, float logProb);以字符串的形式打印输出此语法节点。输入参数:level为the indent level;缩进的层次。visitedNodes为已经访问过的节点。logProb为在log域中的概率。如果本类对象以存在与输入的访问过的节点集中,则只会打印出本类对象的字符串表示。如果本类对象不在输入过的访问节点集中且不是终止节点,则会打印出此节点和其所有直接和间接的后续节点的字符串表示。把所有访问过的节点加入访问过节点集中。
private void traverseGDL(PrintWriter out, Set<GrammarNode> visitedNodes);从此语法节点开始向后遍历此语法图,把此节点和其所有的直接和间接的节点以及相应的弧输出于out中。本方法只有在本类对象不在visitedNodes集中时才会有效果。即发生作用。
String getGDLID(GrammarNode node);返回给定节点的GDLID。即"\"" + node.getID() + '\"'
String getGDLLabel(GrammarNode node);返回此节点的一个GDL Label 。为节点相关的第一个字。或””。
String getGDLShape(GrammarNode node);返回的是此节点的GDL shape为"circle" : 或"box";即是圆形或方形。
String getGDLColor(GrammarNode node);获得此语法节点的颜色。输入node为感兴趣的节点。返回的是颜色的the gdl label for the color。为红,绿,灰三种颜色中的一种的字符串表示。
public void dumpGDL(String path);以GDL的形式打印出此节点和其所有的直接和间接后续节点及相应的弧到path所指定的gdl文件中。
public void dump();把此节点和其所有的直接和间接后续节点输出到标准输出中。
GrammarNode splitNode(int id);把此节点分成节点对,即分成两个节点。在节点对中的第一个节点保留了原来节点的字的信息,一个单独对第二个节点的分支。第二个节点保留了所有的原始的直接后续节点。输入参数:id为节点对中的第一节点的id。返回的是第一个节点。
public void dumpDot(String path);打印出此节点和其所有的直接和间接后续节点及相应的弧到path所指定的文件中。
private void traverseDot(PrintWriter out, Set<GrammarNode> visitedNodes);打印出此节点和其所有的直接和间接后续节点及相应的弧到path所指定的out流中。此方法仅在visitedNodes不包含此类对象的情况有效。
</span>

你可能感兴趣的:(sphinx,语音识别)