Token API

来源:互联网 发布:owncloud php fpm 编辑:程序博客网 时间:2024/05/22 05:00

public class Token implements Scoreable

从上可以看出Token实现了Scoreable接口,可知此类对象是可以被打分器打分的。此类对象代表了再识别框架中的一个单独状态,一个Token(标记)的子类被用于表示不同的发射状态。注意所有的打分是基于log域的。

本类的属性:

private static int curCount;为标记的当前计数。

private static int lastCount;标记的最后计数,在showCount方法中会把curCount赋值给lastCount

private static final DecimalFormat scoreFmt = new DecimalFormat(“0.0000000E00”);

private static final DecimalFormat numFmt = new DecimalFormat(“0000”);

private final Token predecessor;本标记的前一标记Token

private final float logLanguageScore; 跟此标记相关的语法(语言)得分即语言模型相关的得分。为log域得分。

private float logTotalScore;与本标记相关的所以得分的总得分(得分的和)。为log域

private float logInsertionScore;插入项的得分。

private float logAcousticScore; 与本标记相关的声学上的得分(与声学模型相关的)log域

private float logWorkingScore;为非最后得分,即此得分是可以改变的。

private final SearchState searchState;与本标记相关的SentenceHMMState,即语句HMM状态

private int location;在活动列表中的位置

private final int frameNumber;为与本标记相关的帧数。

private Data myData;与此标记相关的特征矢量

private HashMap<String, Object>tokenProps;为赋予给此token标记的随机属性的集合。此属性的初始化是采用延迟初始化来实现的,这是为了减少内存占用。应用对象。

本类的构造方法:

public Token(Token predecessor,SearchState state,float logTotalScore,float logInsertionScore,float logLanguageScore, int frameNumber);通过给定参数,来初始化属性,并创建对象。是创建标记的构造方法。在此构造方法中location设置为-1,

public Token(SearchState state,int frameNumber);用给定的字历史深度。通过调用此构造方法的上一构造方法来完成,其它所需的参数被设置为0。

public Token(Token predecessor,float logTotalScore,float logAcousticScore,float logInsertionScore,float logLanguageScore);本构造方法用给定的声学和语言的得分和其前一个标记来创建标记对象。也是通过调用第一个构造方法来实现的。

本类的方法:

public Token getPredecessor();获得此(本)标记的前一个标记,如果没有前标记,则返回为null。

public int getFrameNumber();返回的是此标记的帧数,注意对于与非发射状态相关的标记,获得的帧数代表了下一帧数。对于发射状态,获得的帧数代表了当前的帧数。

public void setData(Data data);为此标记设置特征(矢量)。

public Data getData();获得此标记(相关)的特征(矢量)

public float getScore();获得获得此标记的得分。返回的得分为语言和声学得分的结合(语言得分和声学得分的和)。也可以说是标记的帧的得分。得分是在log域的。

public float calculateScore(Data feature);用给定的特征(矢量)来计算得分,标记会保持一个对(以打分)特征矢量的引用。在此方法中设置了此标记的特征,得到了此特征相关的声学得分,logTotalScore在加上此得分,后返回。

public float normalizeScore(floatmaxLogScore);规格化已经计算出来的得分。maxLogScore是用来规格化得分的。在此方法中实际采用的是减法操作。logTotalScore ,logAcousticScore 减去此 maxLogScore,后返回为logTotalScore。

public float getWorkingScore();得到WorkingScore(正在工作的得分),此WorkingScore得分是用来维护在搜索中的非最终得分的,有些搜索算法使用的是WorkingScore得分如bushderby。一般得分分为最终(最后)得分此得分是不可改变的,而非最终得分此得分在处理过程中是可以改变的。

public void setWorkingScore(float logScore);设置此标记的WorkingScore的得分。在log域中的。

public void setScore(float logScore);设置此标记的logTotalScore的得分。即给它赋值。

public float getLanguageScore();获得与此标记相关的(此标记的)语言得分。

public float getInsertionScore();返回的是与此标记相关的插入得分。插入得分是状态之间的转换得分。它也许是来自声学模型的转换(状态的转换)得分,或者是来自语言学家的音素的插入得分或字的插入概率。是log域的。

public float getAcousticScore();返回的是此标记的声学得分。声学得分是帧的GMM(高斯混合模型)。

public SearchState getSearchState();获得与此标记相关的搜索状态。

public boolean isEmitting();决定与此标记相关的状态是否为发射状态。发射状态是一个可以进行声学打分的状态。如果此标记与发射状态相关联则返回为true否则为false。

public boolean isFinal();决定此标记是否与一个最后的(final)SentenceHMM 状态相关联。如果此标记与最后(终止)状态相关联,则返回true。

public boolean isWord();决定此标记是否标记了一个字的结束(结尾)。如果标记了一个字的结束返回为真。

public String toString();得到此标记token对象的字符串表示。

public void dumpTokenPath(booleanincludeHMMStates);打印出包含此标记的一条路径,此方法是通过查找此标记的前一标记,在找前一标记的前一标记,直到前一标记为null为止,然后打印出相应的标记。如果includeHMMStates为true,则会包括所有的sentence hmm状态,则会打印标记任意状态的标记。如果为false,则会打印出那些不是HMMSearchState状态的标记。

public void dumpTokenPath();打印出标记路径,在此方法中调用的是dumpTokenPath(true)方法。

public String getWordPath(boolean wantFiller,boolean wantPronunciations);返回此标记前的字字符串。wantFiller如果为true,则遇到填充字会被添加。wantPronunciations如果为真,则将会在每个字的后面添加[ phoneme phoneme … ][音素]本方法返回的也是通过获得其前一个标记的方式实现的,返回的是到此标记的结束的所有可能字的字符串。

public String getWordPathNoFiller();在此方法中调用了getWordPath(false,false);为此标记返回字字符串,返回的是不含任何填充字和相应的音素的字字符串。

  public String getWordPath();本方法中调用了getWordPath(true,false);即为此标记返回的带静音或噪声填充字但是不带相应音素的字字符串。

public String getWordUnitPath();为此标记返回字和单元字符串,即返回的字符串中含有字和单元。在本的实现是考虑了WordSearchState,UnitSearchState即字搜索状态和单元搜索状态来实现了。返回中可以噪声或静音的填充的字和单元。

public Word getWord();如果搜索状态为字搜索状态返回的是此标记的单个字,不获得前一标记的字即不会向前查找。如不是字搜索状态则返回为null。

public static void showCount();显示标记计数,即打印出标记计数,并lastCount = curCount;

public final int getLocation();返回的是此标记在ActiveList(活动列表)中的位置。在HeapActiveList(堆活动列表)实现形式下,返回的是此标记在堆中的数组中的索引。

public final void setLocation(int location);设置此标记在活动列表中的位置。

public boolean validate();决定包含此标记的分支是否是合法的。如果此标记和其前序(前标记)是合法的返回为true,否则为false。

protected static DecimalFormat getScoreFormat();返回的是打印输出得分输出格式的格式对象即DecimalFormat对象。

protected static DecimalFormat getNumberFormat();返回的是数字打印输出的格式对象。即标记的numFmt属性。

public synchronized Map<String, Object> getTokenProps();返回的是应用对象,即hashmap(此为字符串-object),如果此标记的tokenProps伪null,则会创建一空tokenProps,后返回此tokenProps。即标记应用。

 

 

 

 

 

 

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

原创粉丝点击