Grammar API

<span style="font-size:24px;">public abstract class Grammar implements Configurable, GrammarInterface
本类实现了创建语法的语法接口。一个语法类内部是当做一个语法节点和语法弧组成的图所表示的。通过调用getInitialNode()方法将会获得在语法图中的第一个节点。为了遍历整个语法图,可以通过调用语法节点的getSuccessors方法,此方法会返回的是一个语法弧的数组,从语法弧数组我们可以达到语法节点的邻居节点。通过一直调用此方法我们就能够遍历整个语法图。注意所有的语法的概率都是在log域中的了。
本类的属性:
@S4Boolean(defaultValue = false)
public final static String PROP_SHOW_GRAMMAR = "showGrammar";属性用来控制是否打印此语法类对象。
@S4Boolean(defaultValue = true)
public final static String PROP_OPTIMIZE_GRAMMAR = "optimizeGrammar";属性是否优化语法对象。
@S4Boolean(defaultValue = false)
public final static String PROP_ADD_SIL_WORDS = "addSilenceWords";属性控制静音字是否被插入语法图中。
@S4Boolean(defaultValue = false)
public final static String PROP_ADD_FILLER_WORDS = "addFillerWords";属性控制填充字是否插入到语法图中。
@S4Component(type = Dictionary.class)
public final static String PROP_DICTIONARY = "dictionary";属性定义了此语法类使用的字典对象。
配置属性:
protected Logger logger;
private boolean showGrammar;十分显示语法图
private boolean optimizeGrammar = true;是否优化语法图。语法类
private boolean addSilenceWords;是否添加静音字
private boolean addFillerWords;是否添加填充字
protected Dictionary dictionary;字典
protected GrammarNode initialNode;初始化节点
private Set<GrammarNode> grammarNodes;节点集
private final static Word[][] EMPTY_ALTERNATIVE = new Word[0][0];空的可选择字
private final Random randomizer = new Random(56); / use fixed initial to make get deterministic random value for testing。随机数生成器。用于选取随机的节点后续弧。
private int maxIdentity;最大节点id
private boolean postProcessed;是否被后处理过
private boolean idCheck;是否进行了id检查。
本类的构造方法:
public Grammar(boolean showGrammar,boolean optimizeGrammar,boolean addSilenceWords, boolean addFillerWords, Dictionary dictionary );给定参数构造对象。
  public Grammar();空的构造方法。
本类的方法:
public void newProperties(PropertySheet ps);用于通过XML来设置属性
public void allocate();为此语法类分配资源
  public void deallocate();为此语法类释放资源。
public GrammarNode getInitialNode();获得语法类即语法图中的初始节点。
protected void newGrammar();为创建一个新的语法做准备。
protected abstract GrammarNode createGrammar();创建一个新的语法,此方法应该有其子类实现。返回的是此语法类的初始化节点。
protected GrammarNode createGrammar(String bogusText);从引用文本来创建类(没有实现);参数:bogusText为 dummy variable
public Dictionary getDictionary();为此语法类获得字典对象。
  public Set<GrammarNode> getGrammarNodes();获得此语法类对象的节点的集合。即grammarNodes属性。
public int getNumNodes();获得的是此语法中的语法节点的数目。即个数。
public void dumpGrammar(String name);打印出整个语法图。即语法类对象。
protected void postProcessGrammar();执行标准的语法后处理过程集。此方法包括插入静音节点和对空节点进行优化处理。
private void addFillerWords();
private Word[] getInterWordFillers();从字典中获得填充字数组。此填充字数组中的填充字是不包括句开始填充字和句结束填充字的。即返回的填充字数组是滤除了那些不能到字中的那些填充字的填充字数组。
private void addSilenceWords();在语法中在每一个非填充非空的语法节点后加一个可选择的静音字语法节点。
private void optimizeGrammar();从语法图中排除那些不必要的节点。此方法会遍历整个语法图,并查找那些没有可选择字,仅有一个单独的出口节点分支节点。然后绕过这些节点。
private void addFillerWords();在语法中的每一个非填充非空的字节点的后加一个可选择的填充字循环。为节点循环。
private void add(GrammarNode node);添加给定的语法节点到此语法的节点集合中。在此方法中检测了此语法节点的id,防止其已经存在此id值的语法节点。
protected GrammarNode createGrammarNode(boolean isFinal);创建一个空的语法节点在此语法中。语法节点的id自动分配。isFinal为true,表示是终止节点。
protected GrammarNode createGrammarNode(int identity, boolean isFinal);在此语法图中创建一语法节点,并把节点加入语法的节点集中。输入参数:identity为语法节点的身份即id。isFinal是否为终止节点。返回的新创建的语法节点。
protected GrammarNode createGrammarNode(String word);返回一个给定单独字的新的语法节点。如果输入的字是不存在于字典中的,则一个空的语法节点被创建,此语法节点的id是自动分配的。返回的是新创建的语法节点。
protected GrammarNode createGrammarNode(int identity, String word);返回一个给定单独字的新语法节点。如果此字是不存在于字典中的,则一个空的节点被创建。输入参数:identity节点id身份。Word为字的字符串表示即字的拼写。创建的节点加入了语法节点集中的。
protected GrammarNode createGrammarNode(int identity, String[][] alts);返回一个给定的可选择集(字的集合)的新的语法节点。输入参数为:identity为其语法节点的id。Alts为新建的语法节点的可选字列表的集合。即alternatives。
  protected abstract GrammarNode createGrammar();创建一个语法节点由此类的子类来实现。
private GrammarNode selectRandomSuccessor(GrammarNode node);给定一个语法节点,从此节点的直接后续弧集合中选择一个随机后续弧,并得到其节点。返回的是一个随机的后续节点。使用了相应的算法。需注意。
  public String getRandomSentence();返回此语法图中的一个随机句,从初始节点开始的。
public void dumpRandomSentences(int count);输入参数:count为打印的次数不可能超过此数。也许会打印少于此数次数,这依赖于在语法中独特句子的数量。在此方法中会继续count获取随机句。即获得count句随机句。打印的是count句随机句中那些没有重复的句。即如果有2句是相同的,则只打印一句。
public void dumpRandomSentences(String path, int count);到此方法的上方法所打印的输出到指定的路径下。即指定的文件中。Path为存储打印句的文件名。
public void dumpStatistics();为此语法打印统计数。包括节点数。弧数。平均弧数。是打印到log中的。</span>
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值