WordPruningBreadthFirstSearchManager API

来源:互联网 发布:淘宝售后处理时间 编辑:程序博客网 时间:2024/06/06 01:02

public class WordPruningBreadthFirstSearchManagerextends TokenSearchManager

提供了一个宽度优先搜索。为了执行识别,应用程序在识别开始前需调用initialize初始化,然后在重复调用recognize方法,直到result.isfinal()返回为true。一旦一个final结果已经获得,则stoprecognize方法应该被调用。

所有的概率都必须在log域中。

本类的属性:

@S4Component(type= Linguist.class)

    public final static String PROP_LINGUIST = “linguist”;

 

    /** The property that defines the name of the linguist to beused by this search manager. */

    @S4Component(type = Pruner.class)

    public final static String PROP_PRUNER = “pruner”;

 

    /** The property that defines the name of the scorer to be usedby this search manager. */

    @S4Component(type = AcousticScorer.class)

    public final static String PROP_SCORER = “scorer”;

 

    /** The property that defines the name of the logmath tobe used by this search manager. */

    @S4Component(type = LogMath.class)

    public final static String PROP_LOG_MATH = “logMath”;

 

    /**

     * The property than, when set to <code>true</code> will cause therecognizer to count up all the tokens in the

     * active list after every frame.

     */

    @S4Boolean(defaultValue = false)

public final static StringPROP_SHOW_TOKEN_COUNT = “showTokenCount”;

 @S4Integer(defaultValue = 0)

public final static String PROP_GROW_SKIP_INTERVAL =“growSkipInterval”; 此属性用于控制每次所处理的帧数,解码器增长步长是被跳跃的。设置此属性为0,则不能进行跳跃。设置此属性为一个小的整数值,将会增加解码器的速度,但是会减少其准确性。此属性值越高,越少的增长代码被跳跃,值在6-8之间通过对于大词汇量任务来说是足够的,此意味着6帧将会被跳跃。

 @S4Boolean(defaultValue = false)

public final static String PROP_CHECK_STATE_ORDER =“checkStateOrder”;此属性用于检查状态的阶是否合法。

 @S4Integer(defaultValue = 100)

 public final static String PROP_MAX_LATTICE_EDGES =“maxLatticeEdges”;属性却了最lattice的边。

 @S4Double(defaultValue= 0)

public final static String PROP_ACOUSTIC_LOOKAHEAD_FRAMES =“acousticLookaheadFrames”;此属性控制了简单声学前看的执行数。设置此属性为0,则简单声学前看将不会执行。此值不需设置成一个整数。

 private int currentFrameNumber; // the current frame number

    protected ActiveList activeList; // the list of activetokens

    private List<Token> resultList; // the current set ofresults

    protected Map<Object, Token>bestTokenMap;

    private AlternateHypothesisManagerloserManager;

    private int numStateOrder;

    // private TokenTracker tokenTracker;

    // private TokenTypeTracker tokenTypeTracker;

    private boolean streamEnd;

构造方法:

 public WordPruningBreadthFirstSearchManager(LogMath logMath, Linguistlinguist, Pruner pruner, AcousticScorer scorer, ActiveListManageractiveListManager,booleanshowTokenCount, doublerelativeWordBeamWidth, intgrowSkipInterval, booleancheckStateOrder,booleanbuildWordLattice,intmaxLatticeEdges,floatacousticLookaheadFrames,booleankeepAllTokens);给定属性参数创建对象。

  public WordPruningBreadthFirstSearchManager();空的构造方法。

本类的方法:

 public void newProperties(PropertySheetps);对属性进行设置。

public void allocate() ;分配资源。

  public void deallocate() ;释放资源。

   public void startRecognition();在开始识别之前调用。

protected void localStart();从语言专家中获得初始语法节点,并创建一个语法节点标记对象。GrammarNodeToken

private void clearCollectors();清除列表和map在下一次expansion阶段之前。

protected void createBestTokenMap()创建一个新的最好的token map用最合适的尺寸。

 protected boolean allowExpansion(Token t);决定给定的token是否应该被扩展。本类此返回返回为true。

 public StatisticsVariablegetTokensCreated() ;返回的是tokensCreated 统计变量。为创建的token的数量。

 public Timer getGrowTimer() ;返回的是growtime属性即增长步长。

 public int getCurrentFrameNumber();返回的是当前的帧数。currentFrameNumber属性。

 public voidsetResultList(List<Token> resultList) ;返回的是结果列表。给定的是list列表。为resultList属性。

 public List<Token>getResultList();返回的是resultList属性。

public void setActiveList(ActiveListactiveList); 设置活动列表,即activeList属性。

 public ActiveList getActiveList();获得activeList属性。

 private void showTokenCount();计算在活动列表中的所有token并显示它们,此操作是一个发费昂贵的操作。会获得每一个token的前续。直到其为null。Resultlist也会进行处理。

 protected void activeListReplace(Token old,Token newToken);用新的token代替旧的token。

  protected void activeListAdd(Token token);往新的活动列表中添加token。

 private boolean isVisited(Token t);决定是否我们已经访问过与给定token t相关的状态在以前的帧中。是为true。

  private void checkStateOrder(SearchStatefromState, SearchState toState);检查两个给定的状态是否在合法的阶。From的阶要必须大于to的阶。

 protected void collectSuccessorTokens(Token token);收集发射token的下一集合从一个token,并积累它们于活动列表或结果列表中。(如果此是一个final状态,添加它到final列表。如果它是非发射token,并且我们在已经访问过相同的状态在此帧中,我们在语法循环中,所以我们将会不会继续扩展。这会继续合适的检查工作如果我们已经保持了所有的帧,代替跳过的非字标记。注意一些语言专家将不会产生语言循环例如lextree。对于有些例子,不允许通过设置keepalltoken为false来检查是很好的。对于每一个后续,计算其进入的token得分基于前续token得分和转移概率。如果得分高于搜索状态和帧所遇到的最好得分则创建一个新的token,把它添加入lattice中。如果此token是发射token,则添加它到列表状态,否则迭代收集到最新的token后续。)

 protected ObjectgetStateKey(SearchState state);返回的是给定状态的状态关键字。此关键字被用于存储besttoken于besttoken于map中。有相同关键字的所有的token被基本的共享,此方法为搜索添加了适应性。例如此状态可以是允许是hmm状态,hmm状态有着相同的字历史,相同的hmm状态都被同等的对待。当我们使用最好token关键字时,每一个hmm都仅有着最好的token和给定的字历史。

 protected void setBestToken(Token token, SearchStatestate);为给定的状态设置最好的token。

  protected TokengetBestToken(SearchState state);为此状态获得最好的token。

 protected void pruneBranches();减去活动列表中不受期待的分支。

 private void monitorStates(ActiveListactiveList);跟踪和记录关于活动状态的数量。activeList为活动的状态列表。

 private void monitorWords(ActiveList activeList);此方法没有被使用。为给定活动列表跟踪和记录所有的活动历史字。

  protected boolean scoreTokens();计算声学得分为活动列表。活动列表应该仅仅包含发射标记token。如果这有多个帧需要被得分,则返回为true。

 private void growNonEmittingBranches();增长非发射分支,直到遇到一个发射状态,token。

 protected void growEmittingBranches();增长发射状态分支。此版本被用于一个简单的lookahead基于当前声学得分的改变率。

 protected void growBranches();浏览活动列表中的所有token,并扩展每一个token,找到后续token集,直到所有的后续token都是发射token为止。

  protected void localStop();搜索管理的局部清楚。

  public void stopRecognition();终止一次识别。

 private boolean recognize() ;进行识别。

  public Result recognize(int nFrames);对给定数量的帧进行识别。

 

 

 

 

 

 

转自:http://blog.csdn.net/taiyb/article/details/46293771

原创粉丝点击