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

Grammar API相关推荐

  1. rest api_REST API

    rest api 历史 (History) REST stands for Representational State Transfer protocol. Roy Fielding defined ...

  2. 微软官方的.NET Framework API 参考网址

    微软官方的.NET Framework API 参考网址,值得收藏和查阅~~~ https://docs.microsoft.com/zh-cn/dotnet/api/?view=netframewo ...

  3. 转:基于科大讯飞语音API语音识别开发详解

    原文来自于: http://www.52wulian.org/android_voice/ 最近项目需要用到android语音识别,立马就想到科大讯飞,结合官方实例及阅读API文档,初步的完成了And ...

  4. API Design for ios 译文

    API Design 译文 译文 本文来源于matt gemmell困于自己英语水平问题, 若有错误见谅. One of the development tasks I do most often i ...

  5. 使用微软的语音识别引擎Microsoft Speech API进行语音控制

    以下代码来自:http://mmcheng.net/zh/imagespirit/ 本人仅作提取: SREngine语音识别引擎封装类: #pragma once/****************** ...

  6. 使用Google语音识别引擎(Google Speech API)

    本文转自csdn 使用Google语音识别引擎(Google Speech API)[3月5日修改] 分类: Qt Google 语音识别 API C++ 2012-01-24 17:56 19352 ...

  7. DrawingManager.js___百度地图API

    1 /**2 * @fileoverview 百度地图的鼠标绘制工具,对外开放.3 * 允许用户在地图上点击完成鼠标绘制的功能.4 * 使用者可以自定义所绘制结果的相关样式,例如线宽.颜色.测线段距离 ...

  8. 百度API实现地图标点并测距

    ##index.html <!doctype html> <html> <head><title>地图标点</title><meta ...

  9. 使用Google语音识别引擎(Google Speech API) 1

    转自 http://blog.csdn.net/dlangu0393/article/details/7214728 最近在使用Qt编写一个客户端程序的时候需要增加语音识别输入的功能.起初尝试使用SA ...

最新文章

  1. 2018年HBase生态社群画像 +最全资料汇总下载
  2. [杂谈]杂谈章2 eclipse没有(添加)“Dynamic Web Project”
  3. python中 普通方法_python中普通方法classmethod和staticmethod的区别与用法
  4. pyecharts第三节、仪表盘
  5. exit与return区别
  6. 解决ListView 缓存机制带来的显示不正常问题
  7. windows下xmllib2使用简介 64位
  8. JavaScript中的call,apply,bind学习总结
  9. 老黄投下新核弹:英伟达十年力作图灵架构,新GPU支持光线追踪
  10. Haar-like特征来龙去脉
  11. [转载] python+opencv4读取图像
  12. android 呼吸灯权限_Android 呼吸灯效果
  13. JAVA使用反射的方法,参数是数组怎么办?
  14. throw在try中抛出异常,然后用catch捕捉并处理这个异常,同时catch也可以再次抛出这个异常...
  15. 让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
  16. 抖音短视频去水印网站 视频消重防删免费
  17. IP地址的组成及简单分类
  18. in vivo-in vitro-ex vivo三者的区别
  19. 力扣122题:买卖股票的最佳时机 II
  20. useNavigate使用报错

热门文章

  1. 【因缘际会】知乎APP的简单的产品体验报告
  2. 1.Lunix系统安装及重置root密码
  3. DFMA 方法帮助降低血液分析仪成本
  4. 数据基础设施,证券行业跑赢时代的新引擎
  5. 几道加油站加油相关问题:最小加油次数、能否回到起点
  6. 安装Win10 Ubuntu20.04双系统
  7. MD 的图片格式排版偏差的问题
  8. XDOJ1184 - 贪心的小白羊
  9. 将Windows电脑上的浏览器书签同步至iPad中的Safari
  10. html代码打猎小游戏,html贪吃蛇小游戏课件-附源代码