Пример парсера AIML - PullRequest
       18

Пример парсера AIML

1 голос
/ 05 августа 2020
• 1000 из парсинга AIML.

Ввод: sale ab c Вывод: ПРОДАЖИ AB C

Ввод: продажи ab c Выход: ПРОДАЖИ AB C

Вход: продажа продукта ab c Выход: ПРОДАЖА AB C

Ввод: продажа продукта ab c Вывод: ПРОДАЖИ AB C

Ввод: Что такое продажа товара ab c Вывод: ПРОДАЖИ AB C

Ввод: Какова средняя продажа продукта ab c Выходные данные: AVG SALES AB C

Входные данные: Какова средняя продажа продукта abc Выходные данные: AVG SALES AB C

Входные данные: какова средняя продажа продукта за последние 30 дней. abc Вывод: AVG SALES AB C 30

Input: Какова средняя средняя продажа продукта за последние 30 дней abc Вывод: AVG SALES AB C 30

Я пытался начать с чего-то вроде этого для начала, но мне кажется, что это не очень хорошо из-за отсутствия ясности в этом инструменте.

 <category><pattern>
    # <set>numbers</set>  <set>days</set>  <set>average</set> sales <set>prepositions</set> *</pattern>
  <template>SALES <star index="1"/>,<star index="2"/>,<star index="3"/>,<star index="4"/>,<star index="5"/>,<star index="6"/> </template>
  </category>

Где установленные числа определяют> 1,2,3,4,5. .... 100

Определение набора дней> день, дни

Определение среднего набора> среднее, среднее, средние

Определение набора предлогов> из

Спасибо!

1 Ответ

2 голосов
/ 07 августа 2020

Вы должны делать это с помощью подстановочных знаков, а не наборов. Вам нужны только наборы для ваших продуктов и, возможно, набор для количества дней.

Эта категория является ответом на ваши первые 4 запроса:

<category>
    <pattern>SALE <set>products</set></pattern>
    <template>
        SALES <star/>
    </template>
</category>

Теперь мы можем использовать подстановочные знаки на для вызова основной категории:

<category>
    <pattern>SALES ^ <set>products</set> ^</pattern>
    <template>
        <srai>SALE <star index="2"/></srai>
    </template>
</category>

<category>
    <pattern>SALE ^ <set>products</set> ^</pattern>
    <template>
        <srai>SALE <star index="2"/></srai>
    </template>
</category>

<category>
    <pattern>WHAT IS THE SALE ^ <set>products</set> ^</pattern>
    <template>
        <srai>SALE <star index="2"/></srai>
    </template>
</category>

Эта категория обрабатывает ваши следующие 2 запроса:

<category>
    <pattern>WHAT IS ^ AVERAGE SALE ^ <set>products</set> ^</pattern>
    <template>
        AVG SALES <star index="3"/>
    </template>
</category>

Мы можем использовать это, чтобы сказать, что СРЕДНИЙ означает СРЕДНИЙ. Вы также можете поместить это в свой файл normal.substitutions.

<category>
    <pattern>_ AVG *</pattern>
    <template>
        <srai><star/> average <star index="2"/></srai>
    </template>
</category>

Наконец, эта категория обрабатывает ваши последние 2 запроса.

<category>
    <pattern>WHAT IS ^ LAST * DAY ^ AVERAGE SALE ^ <set>products</set> ^</pattern>
    <template>
        AVG SALES <star index="5"/> <star index="2"/>
    </template>
</category>
...