<span style="font-size:24px;">public class Node
一个节点是lattices的一部分。表示在给定时间内被说的一个字的理论。一个节点有进入和离开的边集,边把节点连接到另一节点。我们能够通过getBeginTime 和getEndTime方法来获得和设置一个字的开始帧和结束帧。当我们设置这些时间时,开始时间必须早于或等于结束时间,否则的话会抛出一个异常。
在一个字lattice网格中的任何字的后验概率是在网格上的任何路径上的代表此字的节点的概率。它通过被计算为通过此字节点的任何路径的所有似然得分与在网格中的所有合法路径的所有似得分的比值。路径得分通常使用节点的声学似然得分来计算,尽管语言得分也能够加入进去。整个网格的后验概率通常使用前向-后向算法来进行有效的计算。更多内容前参考:Lattice类中的computeNodePosteriors方法。
本类的属性:
private static int nodeCount;用来为新的节点产生独特的id。
private String id;节点id
private Word word;节点所代表的字。
private int beginTime = -1;字的开始时间
private int endTime = -1;字的结束时间。
private List<Edge> enteringEdges;
private List<Edge> leavingEdges;
private double forwardScore;前向得分
private double backwardScore;后向得分
private double posterior;节点后验概率
private Node bestPredecessor;
private double viterbiScore;
private Set<Node> descendants;
本类的 构造方法:
protected Node(Word word, int beginTime, int endTime);给定属性值创建对象。
protected Node(String id, Word word, int beginTime, int endTime);创建一个给定id的新的节点。当从.LAT文件创建一个lattice时使用。
本类的方法:
protected static String getNextNodeId();为新的节点获得一个独一无二的id,当从.LAT文件创建一个lattice时使用。返回的是一个新节点的id。的字符串表示。返回的是Integer.toString(nodeCount);
protected boolean hasEdgeToNode(Node n);输入参数;n为目标节点。如果此节点有一条边指向节点n,则返回为true。
public Edge getEdgeToNode(Node n);返回指向给定节点的边,存在则返回,不存在在返回为null。输入n为感兴趣的边。此此节点中到一条指向输入节点的边。
protected boolean hasEdgeFromNode(Node n);检测此节点是否存在一条起始节点是输入节点的边。N为输入节点。存在为true。否则为false。
public Edge getEdgeFromNode(Node n);返回此节点中的起始节点是输入节点的边。
protected boolean hasEquivalentEnteringEdges(Node n);检测此节点是否与输入的节点有着相同的EnteringEdge(为目标节点是此节点和输入节点的边)边数,其中的每条边的起始节点是否都相等。如果以上都相同,则返回为true。
public boolean hasEquivalentLeavingEdges(Node n);此节点是否与输入的节点有着相同的LeavingEdges(为起始节点是此节点的边),即那些边的目标节点是否都相同。相同返回为true,否则为false。
public Collection<Edge> getEnteringEdges();获得进入此节点的边的集合,即这些边的目标节点都是此节点。返回的是EnteringEdges属性。
public Collection<Edge> getLeavingEdges();获得离开此节点的边的集合,即这些边的起始节点都是此节点。返回的是LeavingEdges属性。
public Collection<Edge> getCopyOfEnteringEdges();返回的是EnteringEdges属性的一个拷贝。
public Collection<Edge> getCopyOfLeavingEdges();返回的是LeavingEdges属性的一个拷贝。
protected void addEnteringEdge(Edge e);把加入一条加入此节点的边到enteringEdges中。
protected void addLeavingEdge(Edge e);把加入一条离开此节点的边到leavingingEdges中。
protected void removeEnteringEdge(Edge e);从enteringEdges中移除输入的边。
public void removeLeavingEdge(Edge e);leavingingEdges中移除输入的边。
public String getId();获得此节点相关的id。
public Word getWord();获得此节点相关的字。即word属性。
public int getBeginTime();获得一个字开始时的帧数。返回的是开始的帧数,如果帧数未知,则为-1 。
public void setBeginTime(int beginTime);设置字开始时的帧数。开始时间必须早于getEndTime()方法获得的时间,否则抛出错误。
public int getEndTime();得到字结束时的帧数,返回的是end time 即结束时间。如果未知则返回为-1 。
public void setEndTime(int endTime);设置字结束时的帧数
public String toString();返回此节点的字符串描述。包括起始时间,结束时间,字。
void dumpAISee(FileWriter f);以AISee文件的形式打印此节点到f中。
public void dumpDot(FileWriter f);以Graphviz文件的形式打印此节点到f中。
void dump(PrintWriter f);以常规形式打印此节点到f中。
static void load(Lattice lattice, StringTokenizer tokens);添加节点到lattice中,节点是通过tokens来获得的属性生成的。
public double getBackwardScore();返回后向得分,在计算此节点字的后验概率时被计算。返回的是BackwardScore属性。
public void setBackwardScore(double backwardScore);设置此节点的后向得分。
public double getForwardScore();返回前向得分,在计算此节点的后验概率时被计算。返回的ForwardScore属性。
public void setForwardScore(double forwardScore);为此节点设置前向得分。
public double getPosterior();返回此节点的后验概率。返回的是Posterior属性。
public void setPosterior(double posterior);为此节点设置其后验概率。
public int hashCode();此节点的hashcode即为id的hashcode。
public boolean equals(Object obj);比较输入对象是否等于此节点对象,是通过id比较来实现。Id相等则等于。
private void calculateBeginTime();在开始时间没有确定的事件中,计算此节点的开始时间。开始时间是前一节点的结束时间。
public List<Node> getChildNodes();获得子节点为离开此节点的弧的目标节点的集合。即此节点的直接后续节点。
protected void cacheDescendants();把此节点对象的所有直接和间接后续节点加入descendants中。即后代中。
protected void cacheDescendantsHelper(Node n);查找输入节点的直接和间接后续节点,即子节点,看descendants中是否包含此相应的子节点,把不包含的节点都加入descendants中。
public double getViterbiScore();返回的是此节点的Viterbi得分,在语言识别中此得分被计算。返回的是ViterbiScore属性。
public void setViterbiScore(double viterbiScore);设置此节点的Viterbi得分。
public Node getBestPredecessor();获得此节点的最好的直接前续节点。即BestPredecessor属性。
public void setBestPredecessor(Node bestPredecessor);设置此节点的最好的直接前续节点。
public Edge findEquivalentLeavingEdge(Edge edge);返回离开节点边中等于给定输入边的边。
public boolean isEquivalent(Node other);如果给定的输入节点与此节点相等,则返回为true,两节点相等仅在它们有着相同的字,相同的进入和离开边,相同的开始和结束时间时,两节点才相同相等。
protected boolean isAncestorHelper(List<Node> children, Node node, Set<Node> seenNodes);输入children中的节点及节点的子节点是否存在着输入node节点。则返回为true。否则返回为false。把查看过的children中的节点加入seenNodes中。
public boolean isAncestorOf(Node node);检查输入的给定节点是否是此节点或此节点的后续节点的子节点。即此节点是否是输入节点的祖先。如果是则返回为true。
public boolean hasAncestralRelationship(Node node);此节点对象是否是输入节点的祖先,或者输入节点是否是此节点对象的祖先。
</span>
Node API
最新推荐文章于 2024-08-29 19:07:51 发布