LargeNGramModel API 语言模型

public class LargeNGramModel implements LanguageModel, BackoffLanguageModel
使用一个二进制NGram(n元)语言模型文件(”DMP 文件”)的语言模型。此语言模型是通过SphinxBase sphinx_lm_convert产生的。
本类的属性:
@S4String(mandatory = false)
public static final String PROP_QUERY_LOG_FILE = "queryLogFile";记录了所有询问N-grams的文件名属性。如果此属性值为null,则它意味着询问询问N-grams没有被记录。
  @S4Integer(defaultValue = 100000)
public static final String PROP_NGRAM_CACHE_SIZE = "ngramCacheSize";属性定义了能缓存的ngrams的最大的数目即个数。
@S4Boolean(defaultValue = false)
public static final String PROP_CLEAR_CACHES_AFTER_UTTERANCE = "clearCachesAfterUtterance";属性用于控制在每一个utterance后是否清空ngram缓存。
@S4Double(defaultValue = 1.0f)
public final static String PROP_LANGUAGE_WEIGHT = "languageWeight";属性定义了为搜索定义了语言权重。
@S4Component(type = LogMath.class)
public final static String PROP_LOG_MATH = "logMath";属性定义了logmath组件。
@S4Boolean(defaultValue = false)
public final static String PROP_APPLY_LANGUAGE_WEIGHT_AND_WIP = "applyLanguageWeightAndWip";属性用于控制语言模型是否将会应用语言权重和字插入概率。
@S4Double(defaultValue = 1.0f)
public final static String PROP_WORD_INSERTION_PROBABILITY = "wordInsertionProbability";字插入概率属性。
@S4Boolean(defaultValue = false)
public final static String PROP_FULL_SMEAR = "fullSmear";如果为true,使用全bigram信息来决定smear。
public static final int BYTES_PER_NGRAM = 4;
public static final int BYTES_PER_NMAXGRAM = 2;
由the CMU-Cambridge Statistical Language Modeling Toolkit统计语言模型工具产生的语言模型文件中的每一个N-gram的所占的字节数。
private final static int SMEAR_MAGIC = 0xC0CAC01A;
smear魔法数。事情将会更好。
配置数据:
URL location;
    protected Logger logger;
    protected LogMath logMath;
    protected int maxDepth;、
    protected int ngramCacheSize;
    protected boolean clearCacheAfterUtterance;
    protected boolean fullSmear;
    protected Dictionary dictionary;
    protected String format;
    protected boolean applyLanguageWeightAndWip;
    protected float languageWeight;
    protected float unigramWeight;
    protected double wip;
统计数据:
private int ngramMisses;
private int ngramHits;
private int smearTermCount;
protected String ngramLogFile;
子组件:
private BinaryLoader loader;
private PrintWriter logFile;
工作时数据:
private Map unigramIDMap;
    private Map[] loadedNGramBuffers;
    private LRUCache ngramDepthCache;
    private Map bigramSmearMap;
    private NGramBuffer[] loadedBigramBuffers;
    private UnigramProbability[] unigrams;
    private int[][] ngramSegmentTable;
    private float[][] ngramProbTable;
    private float[][] ngramBackoffTable;
    private float[] unigramSmearTerm;
本类的构造方法:
public LargeNGramModel( String format, URL location, String ngramLogFile,
int maxNGramCacheSize, boolean clearCacheAfterUtterance, int maxDepth,  LogMath logMath, Dictionary dictionary,boolean applyLanguageWeightAndWip, float languageWeight,double wip, float unigramWeight, boolean fullSmear );给定参数创建对象。
public LargeNGramModel();空的构造方法.
本类的方法:
public void newProperties(PropertySheet ps);对属性进行设置。
public void allocate();分配资源。
private void buildUnigramIDMap(Dictionary dictionary);建立word与UnigramProbability对的map即对unigramIDMap进行了设置。往其中放入word与UnigramProbability对。
public void start();在识别之前调用。
public void stop();在识别后调用。在本方法中清空了缓存和logfile。
private void clearCache();清空ngram缓存。
public ProbDepth getProbDepth(WordSequence wordSequence);返回预测的概率和深度。使用了为高阶的ngrams。wordSequence为字序列用来获得概率。
private ProbDepth getUnigramProbDepth(WordSequence wordSequence) ;返回的是给定unigram的unigram概率。参数:wordSequence 为unigram字序列。返回的是unigram的概率。返回的是wordSequence 中第一个字对应的unigram的概率即ProbDepth 。
public float getProbability(WordSequence wordSequence);获得字序列的ngram概率。概率是在log域的。
private NGramProbability findNGram(WordSequence wordSequence);返回的一个给定ngram的NGramProbability。
wordSequence为装载ngram。本方法查找或装载给定ngram的NGramProbability。
private boolean is32bits();告诉模型是16位的还是32位的。是32位返回为true。
private NGramBuffer loadNGramBuffer(WordSequence ws);返回的是给定字序列的所有NGram跟随者的一个NGramBuffer对象,ws为n-1gram用来查找跟随者。本方法把给定的n-1gram的所有ngram跟随者装载入一个缓存中。
private NGramBuffer getBigramBuffer(int firstWordID);返回给定字的bigrams。输入参数:firstWordID为字的id。返回的是字的bigrams。
private NGramBuffer getNGramBuffer(WordSequence wordSequence);返回的是给定字序列的ngrams,wordSequence用来得到缓存。返回的是字序列的ngrambuffer。
  private int getFirstNGramEntry(NGramProbability nMinus1Gram, int firstNMinus1GramEntry, int n);返回的是给定n-1gram的第一个ngram项的索引。输入参数:nMinus1Gram为我们所查找的首个ngram项的n-1gram。firstNMinus1GramEntry为在考虑的n-1gram的第一个n-1gram项。N为ngram的阶。
private ProbDepth getUnigramProbDepth(WordSequence wordSequence);返回的是给定unigram的unigram概率。wordSequence为unigram字序列。
private UnigramProbability getUnigram(Word unigram);如果此语言模型有给定的unigram,则返回它的unigramprobability。否则为null。Unigram为要查找的unigram。
private UnigramProbability getUnigram(Word unigram);如果此语言模型有给定的unigram,则返回它的UnigramProbability 。通过给定字来获得相应的UnigramProbability 对象。
private boolean hasUnigram(Word unigram) ;如果此语言模型包括输入的unigram 字,则返回为true。否则为false。
public final int getWordID(Word word);返回给定字的id。
public float getSmearOld(WordSequence wordSequence);得到给定字序列的smear项。返回的是the smear term associated with this word sequence。
public float getSmear(WordSequence wordSequence);返回与输入相关的smearterm。
private int getNumberBigramFollowers(int wordID);返回的是一个字的bigrams跟随者的数目即个数。wordID 为字的id。返回的是the number of bigram followers 。
public int getMaxDepth() ;返回的是语言模型的最大深度。即tMaxDepth属性。
public Set getVocabulary();返回的是在语言模型中的字拼写的集合。此集合是不可改变的。String 为字的拼写。
public int getNGramMisses();返回当一个ngram被询问,但是在语言模型中却不存在此ngram的次数。在这种情况下它使用的是backoff概率。返回的ngram丢失的次数。即NGramMisses属性。
public int getNGramHits();返回的是ngram 碰撞的次数,即NGramHits属性。
private NGramBuffer getBigramBuffer(int firstWordID);返回的是给定字的bigrams。firstWordID为字的id。返回的是存储bigrams的ngrambuffer。
private NGramBuffer loadTrigramBuffer(int firstWordID, int secondWordID);返回的是把给定bigram的所有trigram跟随者存入缓存。输入参数:firstWordID为首字id,secondWordID为第二个字id。返回的是存储trigram跟随者的ngrambuffer。
private void buildSmearInfo();创建smear信息。
private void dumpProbs(double[] ugNumerator, double[] ugDenominator, int i,int j, float logugprob, float logbgprob, double ugprob,double bgprob, double backoffbgprob, double logbackoffbgprob);打印出概率信息。
private void writeSmearInfo(String filename);把smear信息写入到指定的文件中。
private void readSmearInfo(String filename);从给定文件中读取smear信息。
private void putSmearTerm(int word1, int word2, float smearTerm);为2个字放置smear term。
private Float getSmearTerm(int word1, int word2);获得2个字的smear term。
private float getBigramProb(int word1, int word2);获得2个给定字的bigram概率。
public void deallocate();释放相应的资源。调用了load.deallocate()方法。
private void readSmearInfo(String filename);从给定文件中读取smear信息。


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