• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            鐵觀音

            C++編程寶典

               ::  ::  ::  ::  :: 管理 ::
              1 隨筆 :: 19 文章 :: 0 評(píng)論 :: 0 Trackbacks
            第三章??User Input(Grammars)
            ?
            第一節(jié) Speech Grammars ?
            ?
            ????<grammar>元素用于提供一個(gè)語音語法:
            ??????·該語法指定了一系列要匹配的短語,用戶可能說出這些短語用于執(zhí)行一個(gè)操作或提供一些信息。
            ??????·對(duì)于一個(gè)要匹配的短語,該語法返回一個(gè)相應(yīng)的語義解釋。返回的可以是一個(gè)簡(jiǎn)單的值(例如一個(gè)字符串),一組成對(duì)的屬性――值(例如年、月、日),或一個(gè)嵌套的對(duì)象(對(duì)于復(fù)雜的請(qǐng)求)。
            ????<grammar>元素適用于滿足上述要求的任意的語法格式。VoiceXML平臺(tái)必須至少支持一種通用的格式,即W3C SRGS的XML格式。VoiceXML平臺(tái)應(yīng)該支持W3C SRGS的ABNF格式。VoiceXML平臺(tái)可以選擇支持SRGS以外的語法格式。例如,平臺(tái)可能借助<grammar>元素對(duì)PCDATA的支持來嵌入一個(gè)專有的語法,或使用src或type屬性引用一個(gè)外部的語法。
            ????VoiceXML平臺(tái)必須是一個(gè)合格的XML格式的語法處理器,如W3C SRGS中定義的。雖然這樣使得平臺(tái)要處理文檔中定義的一個(gè)或多個(gè)“xml:lang”屬性,但是并不要求平臺(tái)必須是多語言的。當(dāng)遇到一種不支持的語言時(shí),平臺(tái)要拋出error.unsupported.language事件,該事件在它的"_message"變量中指定了這種不支持的語言。
            ????SRGS的XML格式的元素
            ????下面是在W3C SRGS的XML格式中定義的元素,它們?cè)赩oiceXML2.0中是可用的。本文檔沒有重復(fù)定義這些元素,請(qǐng)參考W3C SRGS中的定義和例子。
            元素 作用 章節(jié)鏈接
            <grammar> XML格式語法的根元素。 4.
            <meta> 等價(jià)于HTTP元內(nèi)容的頭部聲明。 4.11.1
            <metadata> XML元數(shù)據(jù)內(nèi)容的頭部聲明。 4.11.2
            <lexicon> 發(fā)音詞典的頭部聲明。 4.10
            <rule> 定義一條語法展開規(guī)則。 3.
            <token> 定義一個(gè)可作為輸入的詞或其他實(shí)體。 2.1
            <ruleref> 引用一條本地或外部定義的規(guī)則。 2.2
            <item> 定義一個(gè)可選的、重復(fù)的或可能的展開項(xiàng)。 2.3
            <one-of> 定義一組可供選擇的規(guī)則展開項(xiàng)。 2.4
            <example> 包含在一個(gè)規(guī)則定義中的元素,該元素提供了一個(gè)匹配該規(guī)則的輸入的例子。 3.3
            <tag> 定義一個(gè)任意的字符串,該字符串可作為該展開規(guī)則的語義解釋。 2.6
            表27:SRGS(XML 格式)的元素
            ?
            一、Inline Grammars
            ????<grammar>元素可用于指定一個(gè)聯(lián)機(jī)語法或外部語法。聯(lián)機(jī)語法由<grammar>元素的內(nèi)容指定,它定義了一個(gè)完整的語法:
                  <grammar type="media-type" mode="voice">
                     inline speech grammar
                  </grammar>
            ????在這種情況下,有必要把內(nèi)容封裝在XML的CDATA段中。對(duì)于聯(lián)機(jī)語法,<grammar>元素的type屬性指定了一個(gè)媒體類型,該媒體類型控制著<grammar>元素內(nèi)容的解釋。
            ????下面是一個(gè)聯(lián)機(jī)語法的例子,是W3C SRGS的XML格式的:
                  <grammar mode="voice" xml:lang="en-US" version="1.0" root="command">
                     <!-- Command is an action on an object -->
                     <!-- e.g. "open a window" -->
                     <rule id="command" scope="public">
                       <ruleref uri="#action"/> <ruleref uri="#object"/>
                     </rule>
            										
                     <rule id="action">
                       <one-of>
                         <item> open </item>
                         <item> close </item>
                         <item> delete </item>
                         <item> move </item>
                       </one-of>
                     </rule>
            										
                     <rule id="object">
                       <item repeat="0-1">
                       <one-of> <item> the </item> <item> a </item> </one-of>
                       <one-of>
                         <item> window </item>
                         <item> file </item>
                         <item> menu </item>
                       </one-of>
                     </rule>
                  </grammar>
            ????下面這個(gè)語法和上面的效果是一樣的,不過它是W3C SRGS的ABNF格式的。因?yàn)閂oiceXML平臺(tái)不是必須支持這種格式的,所以這種格式的語法可移植性比較差。
                  <grammar mode="voice" type="application/srgs">
                     #ABNF 1.0;
                     language en-US;
                     mode voice;
                     root $command;
                       public $command = $action $object;
                       $action = open | close | delete | move;
                       $object = [the | a] (window | file | menu);
                  </grammar>
            ?
            二、External Grammars
            ????外部語法是由form的<grammar>元素指定的。
                  <grammar src="URI" type="media-type"/>
            ????在這種情況下,屬性type是可選的,因?yàn)槿绻麤]有指定該屬性,解釋器環(huán)境會(huì)試圖動(dòng)態(tài)的確定它的類型(例如,使用服務(wù)器特定的媒體類型,文件擴(kuò)展名或內(nèi)容自檢)。
            ????如果指定了src屬性,且有一個(gè)聯(lián)機(jī)語法作為該<grammar>元素的內(nèi)容,則拋出error.badfetch事件。
            ????下面的例子引用了一個(gè)W3C SRGS的XML格式的外部語法。
                  <grammar type="application/srgs+xml" src="http://www.grammar.example.com/date.grxml"/>
            ????下面的例子引用了一個(gè)W3C SRGS的ABNF格式的外部語法。和上面的例子的效果是一樣的。
                  <grammar type="application/srgs" src="http://www.grammar.example.com/date.gram"/>
            ?
            三、Grammar Weight
            ????<grammar>元素的weight屬性指定了該語法的權(quán)重。
                  <grammar weight="0.6" src="form.grxml" type="application/srgs+xml"/>
            ????<grammar>元素,包括<link>、<field>和<form>元素中的,都有這個(gè)屬性,語法可以是聯(lián)機(jī)語法、外部語法或內(nèi)置語法。
            ????屬性weight遵循W3C SRGS中關(guān)于weight的定義。屬性weight的值是一個(gè)簡(jiǎn)單的沒有指數(shù)的正的浮點(diǎn)數(shù)。合法的格式有“n”,“n.”,“.n” 和“n.n”,其中n是一位或多位數(shù)字的序列。
            ????在語音識(shí)別的搜索范圍內(nèi),weight是影響語法被選中的可能性的一個(gè)因素。Weight屬性的值為1.0時(shí)相當(dāng)于沒有指定weight屬性。Weight屬性值大于1.0時(shí),該語法被選中的可能性就比較大。反之,weight屬性值小于1.0時(shí),可能性就比較小。如果沒有指定該屬性,則所有激活的語法的可能性一樣。
                   <link event="help">
                     <grammar weight="0.5" mode="voice" version="1.0" root="help">
                       <rule id="help" scope="public">
                         <item repeat="0-1">Please</item> help
                       </rule>
                     </grammar>
                   </link>
            										
                   <form>
                      <grammar src="form.grxml" type="application/srgs+xml"/>
                      <field name="expireDate">
                         <grammar weight="1.2" src="http://www.example.org/grammar/date"/>
                      </field>
                   </form>
            ????在上面的例子中,weight的語義等同于下面的XML語法:
                   <grammar root="r1" type="application/srgs+xml">
                      <rule id="r1">
                       <one-of>
                         <item weight="0.5"> <ruleref uri="#help"/> </item>
                         <item weight="1.0"> <ruleref uri="form.grxml"/> </item>
                         <item weight="1.2"> <ruleref uri="http://www.example.org/grammar/date"/> </item>
                       </one-of>
                     </rule>
            										
                     <rule id="help">
                       <item repeat="0-1">Please</item> help
                     </rule>
                   </grammar>
            ????隱式的語法,如<option>元素中的,不支持weight。如果需要用weight屬性,請(qǐng)使用<grammar>元素代替隱式語法控制weight。
            ????語法的weight屬性值只影響語法的處理,不會(huì)直接影響到語法結(jié)果的后期處理,包括當(dāng)用戶的輸入匹配了多個(gè)激活的語法時(shí)的語法優(yōu)先權(quán)(見3.1.4節(jié))。
            ????Weight屬性對(duì)DTMF語法沒有影響(見3.1.2節(jié))。在<grammar>元素中,如果屬性mode為dtmf時(shí),則該<grammar>元素指定的weight屬性被忽略。
                  <!-- weight will be ignored -->
                  <grammar mode="dtmf" weight="0.3" src="http://www.example.org/dtmf/number"/>
            ????恰當(dāng)?shù)膚eight值是很難確定的。猜測(cè)的weight值對(duì)于提高識(shí)別的性能沒有任何幫助。有效的weight值是通過對(duì)自然語言和特定平臺(tái)上的原始數(shù)據(jù)長期研究得到的。此外,語法的weight是依賴于平臺(tái)的。注意,不同的ASR引擎對(duì)于相同的weight值可能有不同的理解。因此,在一個(gè)特定平臺(tái)上工作得好好的weight值在其他的平臺(tái)上可能會(huì)得到不同的結(jié)果。
            ?
            四、Grammar Element
            ????<grammar>元素從W3C SRGS繼承的屬性:
            version 它定義了語法的版本號(hào)。
            xml:lang 該語法的語言標(biāo)識(shí)符(例如,“fr-CA”表示 加拿大法語)。如果缺省,將從文檔中繼承。
            mode 其值為voice或dtmf。說明該語法是匹配語音的或是匹配 DTMF 的輸入。
            root 定義該語法的根規(guī)則。
            tag-format 定義該語法中所有的<tag>元素的內(nèi)容格式。
            xml:base 定義一個(gè)基本URI,用于解析該語法中的相對(duì)URI。該屬性的優(yōu)先權(quán)高于<vxml>元素中的相應(yīng)屬性。如果缺省,則從文檔中繼承。
            表28:<grammar>元素從SRGS中繼承的屬性
            ????上述屬性的用法和解釋由以下幾個(gè)方面決定:
            ??????1、SRGS的XML格式的聯(lián)機(jī)語法:由SRGS決定。SRGS規(guī)定屬性version是必須的,且它的值為"1.0";屬性root是必須的,且它的值確定了要激活哪一條規(guī)則;其他的屬性是可選的。
            ??????2、SRGS的ABNF格式的聯(lián)機(jī)語法:平臺(tái)必須忽略上述任何指定的屬性。
            ??????3、SRGS的XML和ABNF格式的外部語法:平臺(tái)必須忽略上述任何指定的屬性。
            ??????4、所有其他的語法類型:任何指定的屬性的用法和解釋是依賴于平臺(tái)的。
            ????<grammar>元素中VoiceXML2.0增加的屬性:
            src 指定一個(gè)URI。如果引用一個(gè)外部語法,該屬性指定了該語法的位置和該語法中的一個(gè)規(guī)則名(可選的)。該URI被作為一個(gè)規(guī)則引用來解釋,詳見SRGS的2.2節(jié)。但是,并不是所有的規(guī)則引用的形式都被VoiceXML允許。規(guī)則引用的能力將在后面詳細(xì)描述。
            scope 值為“document”或“dialog”。如果為“document”,則該語法在當(dāng)前文檔(和相關(guān)的應(yīng)用葉文檔)所有的dialog中都是激活的。如果值為“dialog”,則該語法只在該form中激活。如果缺省,則該語法的作用域由它的父元素決定。關(guān)于語法作用域和優(yōu)先權(quán)的描述見3.1.3節(jié)。
            type 該語法的媒體類型。該屬性值的優(yōu)先權(quán)高于其他可能存在的媒體類型(例如HTTP或RTSP交換中的“Content-type”,或文件擴(kuò)展名)。如果該屬性缺省,解釋器環(huán)境將試圖動(dòng)態(tài)的確定它的媒體類型(例如,使用服務(wù)器特定的媒體類型、文件擴(kuò)展名或內(nèi)容自檢)。如果語法的內(nèi)容包含在該元素中,且沒有指定該屬性,就假定該媒體類型為一個(gè)XML語法。 如果該語法源沒有包含選定媒體類型的正確的內(nèi)容,當(dāng)使用該語法時(shí),拋出一個(gè)錯(cuò)誤W3C的XML格式語法暫定的媒體類型為“application/srgs+xml”,ABNF格式語法暫定的媒體類型為“application/srgs”。
            weight 指定該語法的weight。見3.1.1.3節(jié)。
            fetchhint 見6.1節(jié)。默認(rèn)為grammarfetchhint property。
            fetchtimeout 見6.1節(jié)。默認(rèn)為fetchtimeout property。
            maxage 見6.1節(jié)。默認(rèn)為grammarmaxage property。
            maxstale 見6.1節(jié)。默認(rèn)為grammarmaxstale property。
            表29:<grammar>元素中VoiceXML2.0增加的屬性
            ??????必須指定屬性src或一個(gè)聯(lián)機(jī)語法(不是指定兩個(gè)),否則會(huì)拋出一個(gè)error.badfetch事件。
            ????VoiceXML 2.0也擴(kuò)展可<grammar>元素,允許在PCDATA中嵌入各種格式的語法,包括W3C SRGS的XML格式。
            ????當(dāng)引用一個(gè)外部語法時(shí),src屬性值為一個(gè)URI,它指定了該語法的位置。URI可以帶一個(gè)段,指定規(guī)則名。SRGS的2.2節(jié)定義了規(guī)則引用的幾種形式。下面是VoiceXML中<grammar>元素允許的形式。
            ??????· 在外部語法中引用一個(gè)規(guī)則:src屬性的值是一個(gè)絕對(duì)或相對(duì)的URI,該URI帶有一個(gè)段,它執(zhí)行一個(gè)外部語法的相應(yīng)規(guī)則。這種形式的規(guī)則引用遵循SRGS 2.2節(jié)中的定義。如果該URI不能被獲取,或該規(guī)則名不存在,或該規(guī)則名在指定的語法中不是一個(gè)public(可激活的)規(guī)則,則拋出error.badfetch。
            ??????· 引用外部語法的根規(guī)則:src屬性的值是一個(gè)絕對(duì)或相對(duì)的URI,它引用了一個(gè)外部語法,但是沒有指定一個(gè)規(guī)則名。這種形式隱式的引用了該語法的根規(guī)則,正如SRGS 2.2節(jié)中的定義。如果該URI不能被獲取,或如果該語法不能被它得root引用(見SRGS的4.7節(jié)),則拋出一個(gè)error.badfetch事件。
            ??????· 引用本地語法:只包含段的URI是不被允許的(見SRGS2.2.1中的定義)。如果src屬性的值為一個(gè)段, 拋出一個(gè)error.semantic事件。
            ??????· 引用特殊的規(guī)則:雖然聯(lián)機(jī)語法可以引用SRGF的特殊規(guī)則(NULL,VOID,GARBAGE),但是VoiceXML并不支持<grammar>元素引用特殊的規(guī)則(見SRGS的2.2.3節(jié))。因?yàn)闆]有任何句法支持這種形式,因此也不會(huì)產(chǎn)生任何錯(cuò)誤。

            第二節(jié) DTMF Grammars ?
            ?
            ????<grammar>元素也可以用來提供DTMF語法。
            ??????·它指定了一組按鍵,用戶可以使用這些按鍵執(zhí)行一個(gè)操作或提供一些信息。
            ??????·對(duì)于匹配的DTMF輸入,它可以返回一個(gè)相應(yīng)的語義解釋。返回的可以是一個(gè)簡(jiǎn)單的值(例如一個(gè)字符串),一組成對(duì)的屬性――值(例如年、月、日),或一個(gè)嵌套的對(duì)象(對(duì)于復(fù)雜的請(qǐng)求)。
            ????VoiceXML平臺(tái)必須支持XML格式的DTMF語法,以提高程序的可移植性,如SRGS中的附錄D定義的。
            ????<grammar>元素的mode屬性用于區(qū)分DTMF語法和語音語法。<grammar>元素的xml:lang屬性在DTMF語法的處理中無效的。在其他的方面,對(duì)DTMF語法和語音語法的處理都是一樣的,包括定義聯(lián)機(jī)語法,或引用外部語法。對(duì)于處理媒體類型,作用域和獲取也是一樣的。
            ????下面是一個(gè)簡(jiǎn)單的XML格式的DTMF聯(lián)機(jī)語法,它只接受按鍵“1 2 3”或“#”。
                  <grammar mode="dtmf" version="1.0" root="root">
                     <rule id="root" scope="public">
                       <one-of>
                         <item>  1 2 3 </item>
                         <item> # </item>
                       </one-of>
                     </rule>
                  </grammar>
            ?
            第三節(jié) Scope of Grammars ?
            ?
            ????input item的語法的作用域?yàn)榘搃nput item的元素。即只有該input item在FIA的選定階段被選定時(shí),它包含的語法才會(huì)被激活。包含在input item中的<grammar>不能指定scope屬性,否則拋出error.badfetch事件。
            ????<link>元素中的語法的作用域?yàn)榘?lt;link>元素的元素。因此,如果該<link>元素是在應(yīng)用根文檔中,則該語法在該應(yīng)用所有加載的文檔中都是激活的。包含在<link>元素中的<grammar>不能指定scope屬性,否則拋出error.badfetch事件。
            ????<form>元素的語法的作用域?yàn)閐ialog。因此只有用戶在該form中時(shí),語法才是激活的。如果此時(shí)<grammar>元素的scope屬性值為document,則當(dāng)用戶在該文檔中時(shí),該語法也是激活的。如果<grammar>元素的scope屬性值為document,且該文檔為應(yīng)用根文檔,則無論用戶在該應(yīng)用加載的哪一個(gè)文檔中,這些語法都是激活的。有兩種方式可以使form中的語法的作用域?yàn)閐ocument:一種是指定<form>元素的scope屬性為document,另一種是指定<grammar>元素的scope屬性為document。如果兩個(gè)元素都指定了scope屬性,則以<grammar>元素中指定的為準(zhǔn)。
            ????<menu>元素中的語法默認(rèn)作用域?yàn)閐ialog,只有用戶在該<menu>元素中,它的語法才被激活。但是也可以指定這些語法的作用域?yàn)閐ocument,使它們?cè)谡麄€(gè)文檔中都是激活的。如果該文檔是應(yīng)用根文檔,則語法在該應(yīng)用所有加載的文檔中都是激活的。在<choice>元素中的<grammar>元素不能指定它的scope屬性,否則拋出一個(gè)error.badfetch事件。
            ????有時(shí)候,form可能需要一些語法在整個(gè)文檔中都激活,而另一些語法只有在該form中激活,這樣做的目的是最大限度的減少語法疊交的問題。如果<grammar>元素的scope屬性值和form的scope屬性值不同,應(yīng)該單獨(dú)指定自己的scope屬性值。
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                         xsi:schemaLocation="http://www.w3.org/2001/vxml
                           http://www.w3.org/TR/voicexml20/vxml.xsd">
                    <form scope="document">
                       <grammar type="application/srgs">
                          #ABNF 1.0;
                          language en-gb;
                          mode voice;
                          root $command;
                          public $command = one | two | three;
                      </grammar>
                      <grammar type="application/srgs" scope="dialog">
                          #ABNF 1.0;
                          language en-gb;
                          mode voice;
                          root $command2;
                          public $command2 = four | five | six;
                      </grammar>
                    </form>
                  </vxml>
            ?
            第四節(jié) Activation of Grammars ?
            ?
            ????當(dāng)解釋器訪問一個(gè)input item,等待輸入的時(shí)候,以下的語法被激活:
            ??????·該input item的語法,包括該input item包含的<link>元素中的語法。
            ??????·該form的語法,包括該form包含的<link>元素中的語法
            ??????·該文檔包含的<link>元素中的語法,及該文檔的<menu>元素和<form>元素中scope屬性為document的<grammar>元素的語法。
            ??????·該應(yīng)用根文檔包含的<link>元素中的語法,及該應(yīng)用根文檔的<menu>元素和<form>元素中scope屬性為document的<grammar>元素的語法。
            ??????·平臺(tái)定義的默認(rèn)事件處理的語法,例如help、exit和cancel。
            ????如果一個(gè)輸入匹配了多個(gè)激活的語法,則語法的優(yōu)先權(quán)按照上面定義的順序。如果一個(gè)輸入匹配了多個(gè)激活的同一優(yōu)先權(quán)的語法,則語法的優(yōu)先權(quán)由文檔順序決定。當(dāng)平臺(tái)期待一個(gè)輸入?yún)s沒有任何語法激活時(shí),平臺(tái)必須拋出一個(gè)error.semantic事件,該事件在所執(zhí)行的元素的環(huán)境中拋出。menu中的語法激活機(jī)制和form中的一樣(見2.2.1節(jié))。
            ????如果form item的modal屬性為true,則在等待輸入的時(shí)候,除了該form item的語法外,其他的語法都是失效的。如果該輸入匹配了另外一個(gè)form或menu中的語法,而不是當(dāng)前form或menu,則控制交給那個(gè)被匹配的語法所在的form或menu,且當(dāng)前form或menu中的數(shù)據(jù)丟失。
            ????Inputmodes property不會(huì)影響語法的激活,例如,如果inputmodes property要求輸入只能是voice時(shí),DTMF語法也會(huì)被激活,只是不能被匹配。

            第五節(jié) Semantic Interpretation of Input ?
            ?
            ????SRGS定義了一個(gè)<tag>元素,它包含的內(nèi)容可作為語音語法或DTMF語法的語義解釋(見SRGS的2.6節(jié))。
            ????SISR(The Semantic Interpretation for Speech Recognition specification)為<tag>元素描述了一個(gè)句法和語義,并說明了怎樣使用被匹配的規(guī)則中<tag>元素的內(nèi)容來計(jì)算用戶輸入的語義解釋。有關(guān)于把語義解釋映射到VoiceXML中的描述見3.1.6節(jié)。

            第六節(jié) Mapping Semantic Interpretation Results to VoiceXML forms ?
            ?
            ????SRGS語法返回的語義解釋必須映射到一個(gè)或多個(gè)VoiceXML ECMAScript變量中。映射form級(jí)別和field級(jí)別的語義解釋的方法有少許不同,不同之處見下一節(jié)。使用推薦的NLSML(Natural Language Semantics Markup Language)或SISR類似ECMAScipt的輸出的語義解釋格式對(duì)本次討論沒有任何影響。為了本次討論方便,我們假定識(shí)別器返回的實(shí)際的識(shí)別結(jié)果在application.lastresult$.interpretation中被完整的映射成類似ECMAScript格式(見5.1.5節(jié))。
            ????有可能語法被匹配了,但沒有返回一個(gè)語義解釋。在這種情況下,平臺(tái)將使用該短語的原始文本串作為語義結(jié)果。否則,就認(rèn)為該語義解釋由一個(gè)簡(jiǎn)單的值組成來處理。
            ????每個(gè)input item都由一個(gè)相應(yīng)的slot名(只可能出現(xiàn)在<field>元素中),用于提取完整的語義解釋中大的相應(yīng)部分。如果有指定slot屬性的話,slot名就是該slot屬性的值。否則slot名為該input item的name屬性的值。如果name和slot屬性都沒有指定,則該slot名為undefined。
            ????Slot名用于在FIA的處理階段確定一個(gè)input item是否被匹配了。當(dāng)該slot名和語義結(jié)果頂層的屬性一樣時(shí),或slot名用于選定一個(gè)子屬性時(shí),即為該input item匹配。語義結(jié)果中值為undefined(ECMAScript的undefined)的屬性即為不匹配。同樣的值為undefined的slot名也為不匹配。3,1,6,3節(jié)給出了例子。
            ????下一小節(jié)談?wù)摰氖莊orm級(jí)別和field級(jí)別的結(jié)果的映射。也簡(jiǎn)要的討論了其他的問題。如NL語義到ECMAScript的映射,ASR結(jié)果到VoiceXML的跳轉(zhuǎn)的信息,語義結(jié)果和VoiceXML中匹配出錯(cuò)的處理。
            ?
            一、Mapping form-level results
            ????form級(jí)別的語法產(chǎn)生一個(gè)form級(jí)別的語義結(jié)果,該結(jié)果可以同時(shí)填充多個(gè)input item。用戶的輸入匹配了一個(gè)激活的form級(jí)別的語法,這種情況隨時(shí)都可以出現(xiàn),不管是在<initial>元素中,還是在一個(gè)input item中。
            ????設(shè)想一下“I would like a coca cola and three large pizzas with pepperoni and mushrooms.”這個(gè)句子的語義結(jié)果。該語義解釋結(jié)果的結(jié)構(gòu)如下,并被copy到application.lastresult$.interpretation中:
                  {
                    drink: "coke"
                    pizza: {
                         number: "3"
                         size: "large"
                         topping: [
                                 "pepperoni"
                                 "mushrooms"
                              ]
                         }
                  }
            ????下表說明了來自form級(jí)別的語法的結(jié)果在該form中怎樣被賦給各個(gè)<field>元素。注意,所有能被該解釋填充的input item是同時(shí)被填充的。Input item變量原來的值將被覆蓋。這些input item將在FIA的處理階段由<field>元素處理(見2.4節(jié)和附錄C)。
            VoiceXML field Assigned ECMAScript value Explanation
            1、<field name="drink"/> "coke" 結(jié)果的頂層屬性默認(rèn)的賦給一個(gè)<field>元素,該<field>元素的name屬性和該結(jié)果的頂層屬性相匹配。
            2、<field name="..." slot="drink"/> "coke" 如果指定了slot屬性,則他代替name屬性去選定該結(jié)果的屬性。
            3、<field name="pizza"/> --or--
            <field name="..." slot="pizza"/>
            {number: "3", size: "large", topping: ["pepperoni", "mushroom"]} 上面的例子選擇了一個(gè)單純的值,<field>的name和slot屬性也可以用同樣的方法選定一個(gè)ECMAScript對(duì)象變量。然而,在應(yīng)用中必須要處理檢查該對(duì)象的組成,這顯然不是VoiceXML FFA(form-filling algorithm)的優(yōu)勢(shì)。在FFA中,語義結(jié)果中沒有指定slot的,將不會(huì)自動(dòng)的被提示。在服務(wù)器能夠處理結(jié)構(gòu)化對(duì)象的情況下,這是沒有問題的。換句話說,使用下面描述的方法,對(duì)應(yīng)用來說會(huì)更好。
            4、<field name="..." slot="pizza.number"/>
            <field name="..." slot="pizza.size"/>
            "3"
            "large"
            Slot用于選定該結(jié)果的一個(gè)子屬性。這種方法把該結(jié)果分配到幾個(gè)<field>元素中。
            5、<field name="..." slot="pizza.topping"/> ["pepperoni", "mushroom"] 被選定的屬性可以是一個(gè)復(fù)合的對(duì)象。
            表30:Form-level Grammar Assignments
            ????這些例子可以用以下幾條規(guī)則來解釋,這些規(guī)則是直接由VoiceXML1.0的name和slot屬性擴(kuò)展得到的,且與之兼容。
            ??????1、<field>的slot屬性是一個(gè)非常受限制的ECMAScript表達(dá)式,它選定結(jié)果中的某部分賦給該元素。除了能夠選定結(jié)果的頂層元素外,該屬性也能使用由點(diǎn)隔開的元素/屬性名選定嵌套結(jié)構(gòu)中任意級(jí)的屬性。如使用“pizza.number”和“order.pizza.topping”。注意,如果幾個(gè)<field>元素的slot屬性值一樣的話,一個(gè)特定的slot值有可能填充多個(gè)<field>元素。
            ??????2、如果在結(jié)果中,以一個(gè)<field>元素的slot(或name)屬性命名的那一部分沒有一個(gè)給定的值,則不改變?cè)揻ield item的值。
            ?
            二、Mapping a field-level result
            ????在一個(gè)input item中指定的語法產(chǎn)生一個(gè)field級(jí)別的語義解釋結(jié)果,該結(jié)果只可以填充包含該語法的input item。這些語法只有在FIA訪問該input item時(shí)才是激活的。這很有用。例如在引導(dǎo)型的dialog中,每個(gè)input item會(huì)單獨(dú)的給用戶播放提示語。
            ????Field級(jí)別的語義解釋結(jié)果以下面的方式填充相應(yīng)的input item:
            ??????1、如果該語義解釋是一個(gè)簡(jiǎn)單的結(jié)果,則直接賦給該input item變量。
            ??????2、如果該語義解釋是一個(gè)結(jié)構(gòu)化的結(jié)果,且該slot名和該結(jié)果的一個(gè)屬性匹配,則將該屬性的值賦給相應(yīng)的input item變量。
            ??????3、在其他的情況下,整個(gè)語義解釋的結(jié)果都賦給相應(yīng)的input item變量。
            ????這個(gè)處理過程允許input item從語義解釋結(jié)果中提取一個(gè)特定的屬性。和<filled>元素集合使用可以取得更好的控制效果。
                   <field name="getdate">
                     <prompt>On what date would you like to fly?</prompt>
            										
                     <grammar src="http://server.example.com/date.grxml"/> 
                     <!-- this grammar always returns an object containing
                         string values for the properties day, month, and year -->
            										
                      <filled>
                        <assign name="getdate.datestring" expr="getdate.year + getdate.month + getdate.day"/>
                      </filled>
                   </field>
            ?
            三、Additional examples
            ????一個(gè)匹配的slot名允許input item提取語義解釋中相應(yīng)的部分。
                  application.lastresult$.interpretation =
                  { drink: { size: 'large', liquid: 'coke' }
                     pizza: { number: '3', size: 'large', topping: ['pepperoni', 'mushroom' ] }
                     sidedish: undefined
                  }
            ????下表再次說明了當(dāng)slot名匹配了結(jié)果中的一個(gè)屬性時(shí)的定義:
            slot name match or not?
            undefined does not match
            drink matches; top level property
            pizza matches; top level property
            sidedish does not match; no defined value
            size does not match; not a top-level property
            pizza.size matches; sub-property
            pizza.liquid does not match
            表31:Slot Name Matching
            ????下面的例子用于比較form級(jí)別和field級(jí)別的結(jié)果的行為:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                         xsi:schemaLocation="http://www.w3.org/2001/vxml
                           http://www.w3.org/TR/voicexml20/vxml.xsd">
                    <form id="exampleForm">
                       <grammar src="formlevel.grxml"/>
                         <initial> Say something. </initial>
            										
                        <field name="x">
                          <grammar src="fieldx.grxml"/>
                        </field>
            										
                        <field name="z" slot="y">
                          <grammar src="fieldz.grxml"/>
                        </field>
                    </form>
                  </vxml>
            ????在這個(gè)例子中定義了兩個(gè)input item變量,“x”和“z”,相應(yīng)的slot名分別為“x”和“y”。下表描述的是,根據(jù)被識(shí)別的語法和返回的語義結(jié)果給這些變量賦值。ValueX表示屬性x相應(yīng)的結(jié)果值,可以是結(jié)構(gòu)化的對(duì)象,也可以是簡(jiǎn)單的值。
            application. lastresult$. interpretation form-level result
            (formlevel.grxml)
            field-level result in field x
            (fieldx.grxml)
            field-level result in field z
            (fieldz.grxml)
            = 'hello' no assignment; cycle FIA x = 'hello' z = 'hello'
            = { x: valueX } x = valueX x = valueX z = { x: valueX }
            = { y: valueY } z = valueY x = { y: valueY } z = valueY
            = { z: valueZ } no assignment; cycle FIA x = { z: valueZ } z = { z: valueZ }
            = { x: valueX, y: valueY, z: valueZ } x = valueX
            z = valueY
            x = valueX z = valueY
            = { a: valueA,b: valueB } no assignment; cycle FIA x = { a: valueA,b: valueB } z = { a: valueA,b: valueB }
            表32:Variable Assignments Depending on Grammar and Semantic Result
            ????在form級(jí)別,簡(jiǎn)單的結(jié)果,像字符串‘hello’,不能匹配任何input item;結(jié)構(gòu)化對(duì)象給所有slot名能匹配的input item變量賦值。在field級(jí)別,簡(jiǎn)單的結(jié)果總是賦給相應(yīng)的input item變量;在結(jié)構(gòu)化對(duì)象中,如果存在和該input item的slot名匹配的屬性,則把該對(duì)象中匹配的屬性值賦給相應(yīng)的input item,否則把整個(gè)語義解釋結(jié)果賦給該input item。
            ?
            四、Additional issues
            ????1、把NL語義映射到ECMAScript:如果使用NLSML,,需要定義NLSML表示法到ECMAScipt 對(duì)象的映射。由于這兩種表示法有相近的嵌套結(jié)構(gòu),映射起來還算簡(jiǎn)單。NL語義技術(shù)規(guī)范詳細(xì)的討論了如何映射。
            ????2、把ASR的語義結(jié)果轉(zhuǎn)換到VoiceXML:當(dāng)所有相關(guān)的語義求值完畢,W3C ASR語法的語義標(biāo)識(shí)符就是元素的rule屬性值。另外,根規(guī)則(和所有的non-terminals一樣)有一個(gè)相應(yīng)的"text"變量,該變量包含了由non-terminal控制的utterance中的一組token。在把ASR結(jié)果轉(zhuǎn)換到VoiceXML中的過程中,VoiceXML平臺(tái)不僅要根據(jù)root屬性值填充VoiceXML中相應(yīng)的field,還要填充這些field的影子變量。該field的影子變量name$.utterance和ASR根規(guī)則的text變量的值應(yīng)該要一樣。平臺(tái)還要根據(jù)ASR平臺(tái)提供的信息實(shí)例化影子變量name$.confidence的值,同時(shí)根據(jù)所處理的DTMF或語音語法實(shí)例化影子變量name$.inputmode的值。除了平臺(tái)用于設(shè)置整個(gè)utterance解釋的confidence的application.lastresult$.confidence外,最后平臺(tái)還有把上面提到的那些信息填充到application.lastresult$(見5.1.5節(jié)。特別的,“application.lastresult$.utterance”,“application.lastresult$.inputmode”和 “application.lastresult$.interpretation”)。
            ????3、語義結(jié)果和VoiceXML field之間的不配對(duì):語義結(jié)果到VoiceXML的映射取決于ASR語法和VoiceXML標(biāo)記之間嚴(yán)格的配對(duì)。由于當(dāng)前的框架協(xié)議不能保證語法和相應(yīng)的VoiceXML dialog之間的一致性,因此,開發(fā)者的疏忽可能導(dǎo)致出現(xiàn)不配對(duì)。由于這些不配對(duì)的情況和某些正確的情況很難分辨,信息一致性的檢查就顯得格外重要。不配對(duì)的一些例子:
            ??????·語義結(jié)果中包含了額外的信息,使得VoiceXML沒有相應(yīng)的field與之配對(duì)。開發(fā)者的疏忽或使用的語法比VoiceXML應(yīng)用要求的語法包含更對(duì)的信息,都可能出現(xiàn)這種不配對(duì)。這些額外的信息將被忽略。
            ??????·語義結(jié)果中沒有提供VoiceXML應(yīng)用期望的信息。開發(fā)者的疏忽或因用戶的輸入太簡(jiǎn)單而沒法提供一個(gè)值給某個(gè)特定的slot,都可能出現(xiàn)不配對(duì)。在這種情況下,F(xiàn)IA繼續(xù)執(zhí)行,沒有提供的值將單獨(dú)由用戶提供。如果問題是由于開發(fā)者的疏忽引起的,且該語法實(shí)際上不能識(shí)別出正確的結(jié)果,F(xiàn)IA將繼續(xù)讓用戶提供該丟失的值,直到達(dá)到平臺(tái)和應(yīng)用規(guī)定的失敗次數(shù)。
            ??????·最后,VoiceXML和ASR的語義結(jié)果中都提供了配對(duì)的信息,但是兩者的格式不一致。例如ASR語法可能提供的是一個(gè)結(jié)構(gòu)化的對(duì)象,而VoiceXML中期望的卻是一個(gè)字符串。在這種情況下,平臺(tái)的行為取決于對(duì)該結(jié)果的處理。例如,該結(jié)構(gòu)化的對(duì)象可能被提交給服務(wù)器端的腳本,轉(zhuǎn)換成一個(gè)字符串。這樣,平臺(tái)的行為就取決于服務(wù)器端的腳本。
            ????為了解決這些潛在的問題,委員會(huì)這在考慮各種方法以確保語法和VoiceXML的一致性。
            posted on 2006-09-16 22:25 鐵觀音 閱讀(994) 評(píng)論(0)  編輯 收藏 引用 所屬分類: VoiceXML2.0規(guī)范
            性高湖久久久久久久久AAAAA| 久久国产福利免费| 欧美熟妇另类久久久久久不卡| 久久久亚洲欧洲日产国码是AV| 久久精品国产男包| 久久综合久久久| 国产精品乱码久久久久久软件| 久久综合香蕉国产蜜臀AV| 久久青青草原国产精品免费| 久久久久国产亚洲AV麻豆| 久久亚洲中文字幕精品有坂深雪 | 久久久久久国产精品美女| 久久青青国产| 久久精品毛片免费观看| 精品综合久久久久久88小说| 一本一本久久A久久综合精品 | 亚洲国产精品一区二区三区久久| 人妻久久久一区二区三区| 久久一区二区免费播放| 久久精品国产亚洲AV无码偷窥| 欧美日韩精品久久久久| 国产ww久久久久久久久久| 国产一级持黄大片99久久| 亚洲中文久久精品无码ww16| 久久无码精品一区二区三区| 国产ww久久久久久久久久| 久久精品国产亚洲沈樵| 久久精品人人做人人爽97| 久久免费的精品国产V∧| 久久精品国产2020| 久久亚洲熟女cc98cm| 色播久久人人爽人人爽人人片AV| 久久国产精品偷99| 亚洲乱亚洲乱淫久久| 2021国产成人精品久久| 色综合久久最新中文字幕| 人妻无码中文久久久久专区| 精品熟女少妇av免费久久| 精品午夜久久福利大片| 久久综合九色综合精品| 久久久久久国产a免费观看不卡|