سؤال

أنا أستخدم محركًا يعتمد على Tellme. لقد رأيت أمثلة على القواعد حيث يمكن للمستخدم أن يقول أحد الأشياء المختلفة التي تعتبر متماثلة. ومع ذلك ، فإن جميع الأمثلة التي رأيتها كانت من أجل القواعد الموجودة في الخط (والتي لا تعمل مع محرك VXML باستخدام). أريد أن أعرف كيف يمكنني تغيير ملف .grxml للقيام بذلك. هذا هو الملف:

<?xml version="1.0"?>
<!-- created by Matthew Murdock. Grammars for speech rec menus -->
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar      http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0.2006">
   <rule id="keep">
      <one-of>
         <item>exit</item>
         <item>exit the system</item>
         <item>another</item>
         <item>another mailbox</item>
         <item>play</item>
         <item>play back</item>                      
      </one-of>
   </rule>
</grammar>

بدلاً من الحصول على 6 عناصر ، أريد أن يكون لدي 3 عناصر ، كل منها له كلام محتمل. أي أفكار حول كيف يمكنني القيام بذلك؟

هل كانت مفيدة؟

المحلول 3

اكتشفتها. لقد غيرت قواعد اللغة لتبدو هكذا:

<?xml version="1.0"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar      http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0-literals">
   <rule id="keep">
      <one-of>
         <item><ruleref id="#exit"/></item>
         <item><ruleref id="#play"/></item>
      </one-of>
   </rule>
   <rule id="exit">
      <one-of>
         <item>exit</item>
         <item>exit the system</item>
      </one-of>
      <tag>out.result = "exit"</tag>
   </rule>
   <rule id="play">
      <one-of>
         <item>play</item>
         <item>play back</item>
      </one-of>
      <tag>out.result = "play"</tag>
   </rule>
</grammar>

ثم ، مرة أخرى في البرنامج النصي بدلاً من تأسيس أفعالي على CallerInput (المتغير المحدد في <field> العلامة) ، لقد استندت إليهم خارج CallerInput $. <tag> عنصر القواعد.

أعتقد أنه من المنطقي أن تبني أفعالك على "التفسير" وليس المدخلات الحرفية للمتصل.

ملاحظة: نظرًا لأننا نعمل مع محرك VXML الخاص بنا ، فقد تمكنا من إنشاء طريقة لاستخراج قيمة التفسير من XML.

نصائح أخرى

شكل أكثر إحكاما:

  <rule id="exit">
    exit <item repeat="0-1">the system</item>
    <tag>out.result = "exit"</tag>
  </rule>
  <rule id="play">
    play <item repeat="0-1">back</item>
    <tag>out.result = "play"</tag>
  </rule>

الإجابات التي تريدها في SISR المواصفات التي توفر آلية لربط المعنى لمسارات الإدخال. إعادة كتابة مثالك:

<?xml version="1.0"?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar      http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0-literals">
   <rule id="keep">
      <one-of>
       <item>
        <one-of>
         <item>exit</item>
         <item>exit the system</item>
        </one-of>
        <tag>exit</tag>
        </item>

       <item>
        <one-of>
         <item>another</item>
         <item>another mailbox</item>
        </one-of>
        <tag>another</tag>
       </item>

       <item>
        <one-of>
         <item>play</item>
         <item>play back</item>                      
        </one-of>
        <tag>play</tag>
       </item>
      </one-of>
   </rule>
</grammar>

عدة أشياء لمعرفة:

  • اخترت تنسيق العلامة الحرفية (لاحظ سمة تنسيق العلامة لعنصر القواعد). كان من الممكن تنفيذها أيضًا باستخدام "الدلالات/1.0" ، وكانت محتويات العلامة تبدو وكأنها: Out = "Exit" ؛
  • قد تحتاج قيم TellMe لتنسيق العلامات إلى أن تكون مختلفة ، ولكن دليل التنمية يعني أنها تتبع المعايير.
  • بمجرد أن تعمل ، لا تتردد في إنشاء قواعد حشو (في SRGs الكلام ، القواعد). ستكون قواعد الحشو قواعد دون أي SI (لا توجد عناصر علامة) وتحتوي على عبارات شائعة يضيفها الأشخاص إلى الردود. على سبيل المثال ، قاعدة زائدة يمكن إضافتها في نهاية القواعد:
      </one-of>
      <item repeat="0-1"><ruleref uri="#trailing"/></item>
   </rule>

   <rule id="trailing>
      <one-of>
         <item>please</item>
         <item>thank you</item>

      </one-of>
   </rule>

</grammar>

هذا من شأنه أن يدعم المزيد من أنواع الاستجابات الطبيعية. قد يكون هذا أو لا يكون مهمًا اعتمادًا على قاعدة الاتصال الخاصة بك. يمكن أن تكون قواعد الحشو كبيرة جدًا ، ولكنها تميل إلى إعادة استخدامها للغاية. يمكنك أيضًا إضافة حشو في بداية الإدخال. في تطبيقات الكلام الغنية ، يتضمن المكاسب الأكثر أهمية في عملية التوليف تحديث القواعد اللاحقة لاحتواء العبارات الفعلية التي يتحدث بها المتصل مقابل ما يعتقده المطور أو مصمم VUI.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top