怎么装gsl

怎么装gsl,第1张

gsl的安装方法

gsl在dev-c++下的移植:

(1)下载gsl-1.8.exe:http://gnuwin32.sourceforge.net/packages/gsl.htm

(2)安装gsl,安装后在安装目录下将有如下目录

\contrib\gsl-1.8 一些说明文件

\bin 二进制文件

libgsl.dll gsl的动态链接库(基于gcc的正式版本)

libgsl_d.dll gsl的动纤雹态链接库(基于gcc的调试版本)

libgslcblas.dllcblas的动态链接库(基于gcc的正式版本)

libgslcblas_d.dll cblas的动态手桐链接库(基于gcc的调试版本)

gsl-histogram.exe 用于计算数据直方图的程序

gsl-randist.exe用于生成服从指定分布数据的程序

\lib 库文件

libgsl.agsl的静态链接库(基于gcc的正式版本)

libgsl_d.a gsl的静态链接库(基于gcc的调试版本)

libgslcblas.a cblas的静态链接库(基于gcc的正式版本)

libgslcblas_d.a cblas的静态链接库(基于gcc的调试版本)

libgsl_dll.alibgsl.dll的gcc输入库

libgsl_d_dll.a libgsl_d.dll的gcc输入库

libgslcblas_dll.a libgslcblas.dll的gcc输入库

libgslcblas_d_dll.a libgslcblas_d.dll的gcc输入库

libgsl.def 输出libgsl.dll的定义

libgslcblas.def 输出libgslcblas.dll的定义

\doc 有关文档

\info

\man1

\man3

各种格式的gsl帮助文件

\include\gsl 头文件

gsl include files

其中使用到的主要有bin,lib,include\gsl下的文件

(3)设置dev-c++编译毁薯帆环境,有两种方式:

将gsl安装目录下的bin下libgsl.dll,libgslcblas.dll复制到dev-c++安装目录下的bin目录下

lib下libgsl.a,libgslcblas.a复制到dev-c++安装目录下的lib目录下

include下的整个gsl文件夹复制到dev-c++安装目录下的include目录下。

GSL文件是VXML语音识别中用到的一种特定格式的文件。其格式如下:

1.GSL内部定义和外部定义.

内部定义是在VXML文档中完全用<grammer>元素定义.外部定义是定义一个外部文件,并在VXML中引用.在外部GSL文档中,所有的规则必须命名.在内部GSL定义中,如果只有一个语音识别规则,可以不命名,如果有多个语音识别规则,每一个都要命名.

GSL推荐的扩展名为.gsl.解释器也识别.grammar的扩展名.如果直接在VXML文档中定义grammar,一定要用CDATA括起来,否则VXML文档无法识别.如下:

<grammar ...usage attributes...>

<![CDATA[

...grammar header...

...grammar rule definitions...

]]>

</grammar>

外部GSL文件不应该包含CDATA部分,格式如下:

GSL2.0

...grammar rule definitions...

2.GSL中的注释。

GSL中的注释可以出现在任何地方,注释用分号开始,分号后的内容将会被全部忽略.例裂铅如:

this is a comment

RuleName [rule expansion] this is a comment, after a non-comment

3.GSL中的保留字.

AND-n, OR-n, OP-n, KC-n, PC-n 以上是GSL的保肆没好留字,不能够将它们定义为规则的名字.n是个整数.

4.GSL的头部声明.

GSL文件可以用一察缺个self-identifying header开始,来说明GSL grammar的版本。可以不写,要是有必须用

GSL2.0

开头。ABNF和XML语法都限制一个grammer元素只能识别语音输入和DTMF中的一种,而不允许一个grammer同时包括语音输入和DTMF。GSL文件没有这个限制,任何的GSL语法都可以在同一个grammar元素,甚至同一个识别规则中,同时包括DTMF和语音输入。XML默认使用的是第一个public 语法规则。

GSL文件是VXML语音识别中用到的一种特定格式的文件。其格式如下:

1.GSL内部定义和外部定义.

内部定义是在VXML文档中完全用<grammer>元素定义.外部定义是定义一个外部文件,并在VXML中引用.在外部GSL文档中,所有的规则必须命名.在内部GSL定义中,如果只有一个语音识别规则,可以不命名,如果有多个语音识别规则,每一个都要命名.

GSL推荐的扩展名为.gsl.解释器也识别.grammar的扩展名.如果直接在VXML文档中定义grammar,一定要用CDATA括起来,否则VXML文档无法识别.如下:

<grammar ...usage attributes...>缓神

<![CDATA[

...grammar header...

...grammar rule definitions...

]]>

</grammar>

外部GSL文件不应该包含CDATA部分,格式如下:

GSL2.0

...grammar rule definitions...

2.GSL中的注释。

GSL中的注释可以出现在任何地方,注释用分号开始,分号后的内容将会被全部忽略.例如:

this is a comment

RuleName [rule expansion] this is a comment, after a non-comment

3.GSL中的保留字.

AND-n, OR-n, OP-n, KC-n, PC-n 以上是GSL的保留字,不能够将它们定义为规则的名字.n是个整数.

4.GSL的头部声明.

GSL文件可迟盯以用一个self-identifying header开始,来说明GSL grammar的版本。可以不写,要是有必须用

GSL2.0

开头。ABNF和XML语法都限制一个grammer元素只能识别语音输入和DTMF中的一种,而不允许一个grammer同时包括语音输入和DTMF。GSL文件没有这个限制,任何的GSL语法都可以在同一个grammar元素,甚至同一个识别规则中,同时包括DTMF和语音输入。XML默码哪和认使用的是第一个public 语法规则。

5.基本规则定义.

一个语法规则,包含两个部分。

第一规则的名字,这个名字可以在别的语法规则中引用。

第二 和该规则相关的可能的话音输入。

大多数的语法规则,包括一系列的用户可能说的词语,语法规则扩展部分,一般用[]括起来。例如:

city[南京 "北京" 呼和浩特]

该规则的名字是city,语法规则扩展部分是可选的名字。如果用户说,南京 ,北京或呼和浩特,该语法就匹配上了。语法名称是一个字符串,用来标示这个语法规则。同一个grammar中的语法规则名称,必须不一样,但是相同的语法规则名称可以用在不同的grammar中。外部定义语法,所有的语法规则必须有名字,内部语法定义中,如果只有一个语法规则,可以没有名字,否则都必须有名字。语音规则名称大小写敏感,下面的字符都可以用在语音规则名称中。

-(连字符) _(下划线) ‘(单引号) @(at符) .(句号)

特殊的语法规则。GSL有三个预定义的规则。

<special:passthrough>

<special:roadblock>

<special:resistor>

NULL 和<special:passthrough>代表的意义一样。VOID 和<special:roadblock>代表的意义一样。定义在grammar中的语法规则,不能和他们重名。

<special:passthrough>, NULL 和用户什么没有输入匹配。你可以用下面的grammer来匹配,“北京”“上海”和没有输入。

Trigger = [NULL 北京 上海]

<special:roadblock>, VOID 定义的语法规则将不会被匹配。如,任何输入都不会匹配下面的规则。

Trigger = (VOID 北京 上海])

<special:resistor?weight=n>用来标示语音输入的可能性,权值n是标示输入可能性的一个浮点数(floating point number) 。weight的值低于1,将会减少该规则匹配的可能性,weight值越接近零的,规则越不容易被匹配。大于1,将会增加匹配的可能性。使用上面三种规则,可以动态的改变规则。

6.语法规则定义的作用域。

每一个规则都有一个作用域,private 或 public.public 修饰的语法规则对外部可见,外部引用可以用名称指定一个public 语法规则。private语法规则只在 包含它的grammar中可见,而且只能被在同一个grammar中的其他的语法规则引用。 把一个语法规则标示为public的

格式为:RuleName:public ruleExpansion

没有标示为public 的就是private的语法。如果一个grammar中,没有一个语法规则标示为public,那么所有的语法规则都是public的。如果有一个标示了public ,那么其余的都是private。GSL中的根语法规则是第一个标示为public的语法规则。如果都没标示,默认是第一个。下面的例子,定义了一个public 语法规则Snapper,和两个private语法规则,SnapperType和FishColors。根语法规则是Snapper。

SnapperType [mutton FishColors]

FishColors [black gray red]

Snapper:public (SnapperType snapper)

7.语法规则的递归。 GSL文件中可以定义直接或间接引用自身的语法规则。

Rule that refers to itself directly

Digits [Digit (Digit Digits)]

Digit [0 1 2 3 4 5 6 7 8 9]

Rule that indirectly refers to itself

NounPhrase (Noun ?PrepositionalPhrase)

PrepositionalPhrase (Preposition NounPhrase)

写此类语法时要注意,GSL不支持左递归,也就是说不能定义第一个子部分包含语法规则本身的语法规则。这是为了确保解释器不会进入无穷递归,来匹配一个语法规则。

合法

Digits [Digit (Digit Digits)]

Digits [(Digit Digits) Digit]

不合法

Digits [(Digits Digit) Digit]

Digits [Digit (Digits Digit)]

语音规则扩展部分。声音标示符(英语)应该使用小写字母,数字,-(连字符) _(下划线) ‘(单引号) @(at符) .(句号).如果使用其他的特殊符号(空格除外),必须用“”双引号括起来。下面是几条简单地规则:

1。避免缩写。例如,用usa 代替 USA ,用vxml代替 VXML。

2。展开缩写。例如,用street代替st.。用doctor代替dr.。

3。把标点拼出来。

4。把大于9的数拼出来。

DTMF标示符。

键 DTMF标示符

0 dtmf-0

1 dtmf-1

2 dtmf-2

3 dtmf-3

4 dtmf-4

5 dtmf-5

6 dtmf-6

7 dtmf-7

8 dtmf-8

9 dtmf-9

* dtmf-star

# dtmf-pound

例如:[(小王)(dtmf-4 dtmf-9 dtmf-7 dtmf-3)]

{<emp 小王>}

用户或者说“小王”或者连续的按4973 都能正确匹配。

语法规则的引用。

引用 格式

本地语义规则 语义规则名

本地语义规则的变量 语义规则名:变量名

用URL指定根语义规则名 <grammarURI>

用URL指定语义规则 <grammarURI#RuleName>

特定规则 <special:passthrough>, NULL

<special:roadblock>, VOID

<special:resistor?weight=n>

PrimaryColors ( ?Shades [red blue green])

Shades [ dark light ]

PrimaryColors [ ( ?[dark light] [red blue green] ) ]

引用和宏替换差不多。上面两个等价。本地引用有两种形式。

RuleName

RuleName:variableName

第二个将会用RuleName的返回值替换。

外部引用也有两种形式。

<grammarURI>

<grammarURI#RuleName>

指定外部语法为根grammar

<http://www.myCompany.com/grammars/fish.gram>

引用外部语法规则

<../fish.gram#butterflies>

语法规则的综合使用。

选择:[ 北京 南京 呼和浩特]

序列:(what is coral)// sequence of tokens

(Question Subject) // sequence of rule references

(Subject is Type) // sequence of tokens and rule references

重复:语法 行为

?expr 可选的

*expr 重复该表达式0或更多次.

+expr 重复该表达式1或更多次.

例如:

Gear = [鞋 裤子 袜子 帽子 手套 围巾]

Action = [买 购买]

MakeRequest = (我想Action +Gear ?(和Gear) )

下面的都是匹配项。

我想买手套.

我想买手套和围巾.

我想购买手套,围巾,裤子.

可以无限制的写下去,但是用户不可能永远地说下去,如果对结果设定范围,语音识别效果会更好。用户不可能说重复的名字。把上面的改为如下,只说1-5次。

MakeRequest = (我想Action +Gear 我想Action +Gear ? (和Gear) (和Gear) (和Gear) (和Gear) )

权值:权值可以任意设 2, 2.5, 0.8, 或.4。大于1说明该选项可能性比较大。如果没有指定,各项的可能性是一样的。

格式: grammarExpression~probability

例如:

[cat~3.1415 dog fish~.25]

[fish~10 (angel fish)~2 anthia~0.1]

也可以把权值加到? + * 上面,这与一般的权值不一样。格式:

语法 描述

?expr~.75 75%会说一次.

+expr~.75不说,要是说了,75%的可能说第二次,类推。

*expr~.7575%的可能说第一次,第一次说了,75%的可能说第二次,类推。

例如:

the word "angel" is optional and is not very likely to occur.

?angel~0.25 fish

the rule reference can occur 0 or more times and it is

very likely it will occur more than once.

*Digit~.8

赋值语句。用{}括起来。

两种形式,<slotname value>和 return (value)

需要注意的是return 只能用于子语法规则,如果是根grammar则不能包含return 语句。

slot的例子:

GSL 2.0

ColoredOjbect:public (Color Object)

Color [

[red pink] { <color red>}

[yellow canary] { <color yellow>}

[green khaki] { <color green>}

]

Object [

[truck car]{ <object vehicle>}

[ball block] { <object toy>}

[shirt blouse] { <object clothing>}

]

;文件结束

这个规则可以识别"yellow shirt" 或 "canary blouse"等短语。并返回相同的语义解释

{

color: yellow

object: clothing

}

Return的例子:

Flight:public [

( [from leaving] City:frCity ) { <origin $frCity>}

( [to (arriving in)] City:toCity ) { <destination $toCity>}

]

City [

atlanta { return ("Atlanta") }

chicago { return ("Chicago") }

dallas { return ("Dallas") }

]

;文件结束

从City子项 返回一个值给 Flight。

GSL中可以定义变量,也有整型和字符串类型(我也没用过),也可以调用函数。

主要函数为:

名称 描述

add 加两数

sub 减运算

mul 乘运算

div 除运算

neg 返回相反数

strcat 连接两个字符串


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12210335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存