Node API

<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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章