AIML-クイックガイド

AIMLは Artificial Intelligence Markup Language。AIMLは、1995年から2000年にかけて、AlicebotフリーソフトウェアコミュニティとDr. Richard S.Wallaceによって開発されました。AIMLは、ALICE(Artificial Linguistic Internet Computer Entity)フリーソフトウェアに基づくチャットボックスアプリケーションであるAlicebotを作成またはカスタマイズするために使用されます。

AIMLタグ

以下は、AIMLドキュメントで一般的に使用される重要なタグです。

S.No. AIMLタグ/説明
1

<aiml>

AIMLドキュメントの開始と終了を定義します。

2

<category>

を定義します unit of knowledge Alicebotのナレッジベースにあります。

3

<pattern>

ユーザーがAlicebotに入力できるものと一致するようにパターンを定義します。

4

<template>

ユーザーの入力に対するAlicebotの応答を定義します。

これらの各タグについては、AIMLの基本タグの章で説明します。

以下は、他の広く使用されているaimlタグの一部です。各タグについては、次の章で詳しく説明します。

S.No. AIMLタグ/説明
1

<star>

ワイルドカードとの照合に使用 * <pattern>タグの文字。

2

<srai>

多目的タグ。他のカテゴリを呼び出す/照合するために使用されます。

3

<random>

中古 <random> ランダムな応答を取得します。

4

<li>

複数の応答を表すために使用されます。

5

<set>

AIML変数に値を設定するために使用されます。

6

<get>

AIML変数に格納されている値を取得するために使用されます。

7

<that>

AIMLで使用され、コンテキストに基づいて応答します。

8

<topic>

AIMLでコンテキストを保存するために使用され、後でそのコンテキストに基づいて会話を行うことができます。

9

<think>

AIMLで使用され、ユーザーに通知せずに変数を格納します。

10

<condition>

プログラミング言語のswitchステートメントに似ています。これは、ALICEが一致する入力に応答するのに役立ちます。

AIML語彙

AIMLの語彙は、単語、スペース、および2つの特殊文字を使用します * そして _ワイルドカードとして。AIMLインタープリターはパターンを持つことを優先します_ パターンよりも *。AIMLタグはXMLに準拠しており、パターンでは大文字と小文字が区別されません。

<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User!
      </template>
      
   </category>
</aiml>

考慮すべき重要なポイントは次のとおりです-

  • <aiml> タグはAIMLドキュメントの開始を示します。

  • <category> タグはナレッジユニットを定義します。

  • <pattern> タグは、ユーザーが入力しようとしているパターンを定義します。

  • <template> タグは、ユーザーがHelloAliceと入力した場合のユーザーへの応答を定義します。

結果

User: Hello Alice
Bot: Hello User

このチュートリアルでは、AIMLを使用して自動チャットソフトウェアを作成するための開発環境を準備する方法について説明します。プログラムABは、ALICE AIFoundationによって開発および保守されているAIML2.0のリファレンス実装です。このチュートリアルでは、Program ABライブラリをセットアップする前に、JDKをセットアップする方法についても説明します。

ステップ1-JavaDevelopment Kit(JDK)をセットアップする

-あなたは、OracleのJavaサイトからSDKの最新バージョンをダウンロードすることができたJava SEダウンロード。ダウンロードしたファイルにJDKをインストールする手順が記載されています。所定の手順に従って、セットアップをインストールおよび構成してください。最後に、PATHおよびJAVA_HOME環境変数を設定して、javaおよびjavacを含むディレクトリ(通常はそれぞれjava_install_dir / binおよびjava_install_dir)を参照します。

Windowsを実行していて、JDKをC:\ jdk1.7.0_75にインストールしている場合は、C:\ autoexec.batファイルに次の行を入力する必要があります。

set PATH = C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME = C:\jdk1.7.0_75

または、Windows NT / 2000 / XPでは、[マイコンピュータ]を右クリックし、[プロパティ]、[詳細設定]、[環境変数]の順に選択することもできます。次に、PATH値を更新し、[OK]ボタンを押します。

Unix(Solaris、Linuxなど)では、SDKが/usr/local/jdk1.7.0_75にインストールされていて、Cシェルを使用している場合、.cshrcファイルに次のように記述します。

setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75

または、Borland JBuilder、Eclipse、IntelliJ IDEA、Sun ONE Studioなどの統合開発環境(IDE)を使用している場合は、簡単なプログラムをコンパイルして実行し、IDEがJavaのインストール場所を認識していることを確認します。それ以外の場合は、所定のドキュメントに従って適切なセットアップを行います。 IDEの。

ステップ2-プログラムABを設定する

これですべてが正常であれば、プログラムABのセットアップに進むことができます。以下は、ライブラリをダウンロードしてマシンにインストールするための簡単な手順です。

  • AIMLをWindowsにインストールするかUnixにインストールするかを選択してから、次の手順に進んで.zipファイルをダウンロードします。

  • ProgramABバイナリの最新バージョンをからダウンロードします。 https://code.google.com/p/program-ab/そのprogram-ab-0.0.4.3.zipリンクを使用します。

  • このチュートリアルを書いている時点で、私はダウンロードしました program-ab-0.0.4.3.zip 私のWindowsマシンでは、ダウンロードしたファイルを解凍すると、C:\ ab内に次のようなディレクトリ構造が表示されます。

S.No. ディレクトリと説明
1

c:/ab/bots

AIMLボットを保存します

2

c:/ab/lib

Javaライブラリを格納します

3

c:/ab/out

Javaクラスファイルディレクトリ

4

c:/ab/run.bat

プログラムABを実行するためのバッチファイル

この最後のステップが完了すると、次の章で説明する最初のAIMLの例に進む準備が整います。

単にユーザーに挨拶する最初のボットの作成を始めましょう Hello User! ユーザーが入力したとき Hello Alice

プロジェクト構造を作成する

AIML環境設定と同様に、program-abのコンテンツを抽出しました。C > ab 次のディレクトリ構造で。

S.No. ディレクトリと説明
1

c:/ab/bots

AIMLボットを保存します

2

c:/ab/lib

Javaライブラリを格納します

3

c:/ab/out

Javaクラスファイルディレクトリ

4

c:/ab/run.bat

プログラムABを実行するためのバッチファイル

次に、内部にディレクトリテストを作成します C > ab > bots その中に次のディレクトリを作成します。

S.No. ディレクトリと説明
1

c:/ab/bots/test/aiml

AIMLファイルを保存します

2

c:/ab/bots/test/aimlif

AIMLIFファイルを保存します

3

c:/ab/bots/test/config

構成ファイルを保存します

4

c:/ab/bots/test/sets

AIMLセットを保存します

5

c:/ab/bots/test/maps

AIMLマップを保存します

ソースファイルを作成する

内部にtest.aimlを作成します C > ab > bots > test > aiml および内部のtest.aiml.csv C > ab > bots > test > aimlif ディレクトリ。

test.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version="1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User
      </template>
      
   </category>
</aiml>

test.aiml.csv

0,HELLO ALICE,*,*,Hello User,test.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Working Directory = C:\ab

Program AB 0.0.4.2 beta -- AI Foundation Reference AIML 2.0 implementation
bot = test
action = chat
trace = false
trace mode = false
Name = test Path = C:\ab/bots/test

C:\ab
C:\ab/bots
C:\ab/bots/test
C:\ab/bots/test/aiml
C:\ab/bots/test/aimlif
C:\ab/bots/test/config
C:\ab/bots/test/logs
C:\ab/bots/test/sets
C:\ab/bots/test/maps

Preprocessor: 0 norms 0 persons 0 person2
Get Properties: C:\ab/bots/test/config/properties.txt
addAIMLSets: C:\ab/bots/test/sets does not exist.
addCategories: C:\ab/bots/test/aiml does not exist.
AIML modified Tue Apr 07 22:24:29 IST 2015 AIMLIF modified Tue Apr 07 22:26:53 I
ST 2015
No deleted.aiml.csv file found
No deleted.aiml.csv file found
Loading AIML files from C:\ab/bots/test/aimlif

Reading Learnf file
Loaded 1 categories in 0.009 sec
--> Bot test 1 completed 0 deleted 0 unfinished
(1[6])--HELLO-->(1[5])--ALICE-->(1[4])--<THAT>-->(1[3])--*-->(1[2])--<TOPIC>-->(
1[1])--*-->(0[null,null]) Hello User...
7 nodes 6 singletons 1 leaves 0 shortcuts 0 n-ary 6 branches 0.85714287 average
branching
Human:

タイプ Hello Alice 結果を確認してから、他の何かを入力して変更された結果を確認します。

Human: hello alice
Robot: Hello User
Human: bye
Robot: I have no answer for that.
Human:

このチュートリアルでは、AIMLの基本的なタグについて説明します。

  • <aiml> −AIMLドキュメントの開始と終了を定義します。

  • <category> −を定義します unit of knowledge Alicebotのナレッジベースにあります。

  • <pattern> −ユーザーがAlicebotに入力できるものと一致するパターンを定義します。

  • <template> −ユーザーの入力に対するAlicebotの応答を定義します。

ここでは、以下のAIMLファイルを参照として使用しています。

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User
      </template>
      
   </category>
</aiml>

<aiml>タグ

<aiml>タグは、AIMLドキュメントの開始と終了を示します。バージョンおよびエンコーディング属性の下にバージョンおよびエンコーディング情報が含まれています。version属性は、ALICEチャットボットナレッジベースKBで使用されるAIMLバージョンを格納します。たとえば、1.0.1バージョンを使用しました。この属性はオプションです。

エンコーディング属性は、ドキュメントで使用される文字セットを提供します。たとえば、UTF-8を使用しました。必須要件として、<aiml>タグには少なくとも1つの<category>タグが含まれている必要があります。各AIMLファイルに単一の<aiml>タグが含まれる複数のAIMLファイルを作成できます。各AIMLファイルの目的は、カテゴリと呼ばれる少なくとも1つのナレッジユニットをALICEチャットボットKBに追加することです。

<aiml version = "1.0.1" encoding = "UTF-8"?>
   ...
</aiml>

<category>タグ

<category>タグは、ALICEボットの基本的な知識ユニットです。各カテゴリには-が含まれています

  • アサーション、質問、感嘆符などの文の形式でのユーザー入力。ユーザー入力には、次のようなワイルドカード文字を含めることができます。 * そして _

  • Alicebotによって提示されるユーザー入力への応答。

  • オプションのコンテキスト。

A <category> タグは持っている必要があります <pattern> そして <template> 鬼ごっこ。 <pattern> はユーザー入力を表し、テンプレートはボットの応答を表します。

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

ここで、ユーザーが入力した場合 Hello Alice その後、ボットは次のように応答します Hello User

<パターン>タグ

<pattern>タグは、ユーザーの入力を表します。<category>タグ内の最初のタグである必要があります。<pattern>タグには、ユーザー入力として複数の文に一致するワイルドカードを含めることができます。たとえば、この例では、<pattern>にHELLOALICEが含まれています。

AIMLでは大文字と小文字は区別されません。ユーザーがHelloAlice、hello alice、HELLO ALICEなどを入力すると、すべての入力が有効になり、ボットはそれらをHELLOALICEと照合します。

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

ここで、テンプレートは「Hello User」であり、ユーザー入力に対するロボットの応答を表します。

<テンプレート>タグ

<template>タグは、ユーザーに対するボットの応答を表します。<category>タグ内の2番目のタグである必要があります。この<template>タグは、データの保存、別のプログラムの呼び出し、条件付きの回答の提供、または他のカテゴリへの委任を行うことができます。

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

ここで、テンプレートは「Hello User」であり、ユーザー入力に対するロボットの応答を表します。

<star> タグはワイルドカードとの照合に使用されます * <pattern>タグの文字。

構文

<star index = "n"/>

n <pattern>タグのユーザー入力内の*の位置を示します。

次の例を考えてみましょう-

<category>
   <pattern> A * is a *. </pattern>
   
   <template>
      When a <star index = "1"/> is not a <star index = "2"/>?
   </template>
   
</category>

ユーザーが「マンゴーは果物です」と入力した場合。その後、ボットは「マンゴーが果物ではない場合」と応答します。

内部にstar.aimlを作成します C > ab > bots > test > aiml とstar.aiml.csv内部 C > ab > bots > test > aimlif ディレクトリ。

star.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   
   <category>
      <pattern>I LIKE *</pattern>
      <template>
         I too like <star/>.
      </template>
   </category>
   
   <category>
      <pattern>A * IS A *</pattern>
      <template>
         How <star index = "1"/> can not be a <star index = "2"/>?
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,I LIKE *,*,*,I too like <star/>.,star.aiml
0,A * IS A *,*,*,How <star index = "1"/> can not be a <star index = "2"/>?,star.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: I like mango
Robot: I too like mango.
Human: A mango is a fruit
Robot: How mango can not be a fruit?

<star index = "1" />は<star />としてよく使用されます

<srai>タグは多目的タグです。このタグにより、AIMLは同じテンプレートの異なるターゲットを定義できます。

構文

<srai> pattern </srai>

以下は、に関連して一般的に使用される用語です srai

  • シンボリックリダクション

  • 分割統治

  • 同義語の解決

  • キーワード検出

シンボリックリダクション

シンボリックリダクションテクニックは、パターンを単純化するために使用されます。単純なパターンで複雑な文法パターンを減らすのに役立ちます。

たとえば、次の会話について考えてみます。

Human: Who was Albert Einstein?
Robot: Albert Einstein was a German physicist.
Human: Who was Isaac Newton?
Robot: Isaac Newton was a English physicist and mathematician.

What if 質問は次のように提起されます

Human: DO YOU KNOW WHO Albert Einstein IS?
Human: DO YOU KNOW WHO Isaac Newton IS?

ここに、 <srai> タグは機能します。ユーザーのパターンをテンプレートとして使用できます。

ステップ1:カテゴリを作成する

<category>
   <pattern>WHO IS ALBERT EINSTEIN?</pattern>
   <template>Albert Einstein was a German physicist.</template>
</category>

<category>
   <pattern> WHO IS Isaac NEWTON? </pattern>
   <template>Isaac Newton was a English physicist and mathematician.</template>
</category>

ステップ2:<srai>タグを使用してジェネリックカテゴリを作成する

<category>
   <pattern>DO YOU KNOW WHO * IS?</pattern>
   
   <template>
      <srai>WHO IS <star/></srai>
   </template>
   
</category>

内部にsrai.aimlを作成します C > ab > bots > test > aiml および内部のsrai.aiml.csv C > ab > bots > test > aimlif ディレクトリ。

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.

分割統治

分割統治法は、完全な返信を行う際にサブセンテンスを再利用するために使用されます。複数のカテゴリの定義を減らすのに役立ちます。

たとえば、次の会話を検討してください。

Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!

今ここでロボットは応答することが期待されています GoodBye! ユーザーが言うときはいつでも Bye 文頭に。

ここで<srai>タグを機能させましょう。

ステップ1:カテゴリを作成する

<category>
   <pattern>BYE</pattern>
   <template>Good Bye!</template>
</category>

ステップ2:<srai>タグを使用してジェネリックカテゴリを作成する

<category>
   <pattern>BYE *</pattern>
   
   <template>
      <srai>BYE</srai>
   </template>
   
</category>

内部のsrai.aimlを更新します C > ab > bots > test > aiml および内部のsrai.aiml.csv C > ab > bots > test > aimlif ディレクトリ。

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
 
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!

同義語の解決

同義語は、同じような意味を持つ単語です。ボットは、同様の単語に対して同じ方法で応答する必要があります。

たとえば、次の会話について考えてみます。

Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!

今ここでロボットは応答することが期待されています Development Center! ユーザーが言うときはいつでも Factory または Industry

入れましょう <srai> ここで動作するタグ。

ステップ1:カテゴリを作成する

<category>
   <pattern>FACTORY</pattern>
   <template>Development Center!</template>
</category>

ステップ2:<srai>タグを使用してジェネリックカテゴリを作成する

<category>
   <pattern>INDUSTRY</pattern>
   
   <template>
      <srai>FACTORY</srai>
   </template>
   
</category>

内部のsrai.aimlを更新します C > ab > bots > test > aiml および内部のsrai.aiml.csv C > ab > bots > test > aimlif ディレクトリ。

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
   <category>
      <pattern>FACTORY</pattern>
      <template>Development Center!</template>
   </category>
   
   <category>
      <pattern>INDUSTRY</pattern>
      <template>
         <srai>FACTORY</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!

キーワード検出

使用する srai、「学校」が文のどこにあるかに関係なく、ユーザーが特定のキーワード、たとえば学校を入力すると、単純な応答を返すことができます。

たとえば、次の会話について考えてみます。

Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.

ここでは、ロボットは標準メッセージに応答することが期待されています 'School is an important institution in a child's life.' ユーザーが持っているときはいつでも school 文中で。

入れましょう <srai>ここで動作するタグ。ここではワイルドカードを使用します。

ステップ1:カテゴリを作成する

<category>
   <pattern>SCHOOL</pattern>
   <template>School is an important institution in a child's life.</template>
</category>

ステップ2:<srai>タグを使用してジェネリックカテゴリを作成する

<category>
   <pattern>_ SCHOOL</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

<category>
   <pattern>_ SCHOOL</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

<category>
   <pattern>SCHOOL *</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

<category>
   <pattern>_ SCHOOL *</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

内部のsrai.aimlを更新します C > ab > bots > test > aiml および内部のsrai.aiml.csv C > ab > bots > test > aimlif ディレクトリ。

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
   <category>
      <pattern>FACTORY</pattern>
      <template>Development Center!</template>
   </category>
   
   <category>
      <pattern>INDUSTRY</pattern>
      <template>
         <srai>FACTORY</srai>
      </template>
   </category>
   
   <category>
      <pattern>SCHOOL</pattern>
      <template>School is an important institution in a child's life.</template>
   </category>  
   
   <category>
      <pattern>_ SCHOOL</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
   <category>
      <pattern>_ SCHOOL</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
   <category>
      <pattern>SCHOOL *</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
   <category>
      <pattern>_ SCHOOL *</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml
0,SCHOOL,*,*,School is an important institution in a child's life.,srai.aiml
0,_ SCHOOL,*,*,<srai>SCHOOL</srai>,srai.aiml
0,SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml
0,_ SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.

<random>タグはランダムな応答を取得するために使用されます。このタグにより、AIMLは同じ入力に対して異なる応答をすることができます。<random>タグは、<li>タグとともに使用されます。<li>タグは、ランダムにユーザーに配信されるさまざまな応答を伝送します。

構文

<random>
   <li> pattern1 </li>
   <li> pattern2 </li>
   ...
   <li> patternN </li>
</random>

たとえば、次の会話について考えてみます。

Human: Hi
Robot: Hello!
Human: Hi
Robot: Hi! Nice to meet you!

内部にrandom.aimlを作成します C > ab > bots > test > aiml とrandom.aiml.csv内部 C > ab > bots > test > aimlif ディレクトリ。

random.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding ="UTF-8"?>
   <category>
      <pattern>HI</pattern>
      
      <template>
         <random>
            <li> Hello! </li>
            <li> Hi! Nice to meet you! </li>
         </random>
      </template>
      
   <category>      
</aiml>

random.aiml.csv

0,HI,*,*, <random><li> Hello! </li><li> Hi! Nice to meet you! </li></random>,random.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!

ここでは、ランダムな応答を考慮して応答が異なる場合があります。

<set> そして <get>タグは、AIMLの変数を操作するために使用されます。変数は、事前定義された変数またはプログラマーが作成した変数にすることができます。

構文

<set>タグは、変数に値を設定するために使用されます。

<set name = "variable-name"> variable-value </set>

<get>タグは、変数から値を取得するために使用されます。

<get name = "variable-name"></get>

たとえば、次の会話について考えてみます。

Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!

内部にsetget.aimlを作成します C > ab > bots > test > aiml およびsetget.aiml.csvを内部に C > ab > bots > test > aimlif ディレクトリ。

setget.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>I am *</pattern>
      <template>
         Hello <set name = "username"> <star/>! </set>
      </template>  
   </category>  
   
   <category>
      <pattern>Good Night</pattern>
      <template>
         Hi <get name = "username"/> Thanks for the conversation!
      </template>  
   </category>  
   
</aiml>

setget.aiml.csv

0,I am *,*,*, Hello <set name = "username"> <star/>! </set>,setget.aiml
0,Good Night,*,*, Hi <get name = "username"/> Thanks for the conversation!,setget.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!

<that> タグはAIMLで使用され、コンテキストに基づいて応答します。

構文

<that> template </that>

たとえば、次の会話について考えてみます。

Human: Hi Alice! What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.

内部にthat.aimlを作成します C > ab > bots > test > aiml そしてthat.aiml.csvは中 C > ab > bots > test > aimlif ディレクトリ。

that.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>WHAT ABOUT MOVIES</pattern>
      <template>Do you like comedy movies</template>  
   </category>
   
   <category>
      <pattern>YES</pattern>
      <that>Do you like comedy movies</that>
      <template>Nice, I like comedy movies too.</template>
   </category>
   
   <category>
      <pattern>NO</pattern>
      <that>Do you like comedy movies</that>
      <template>Ok! But I like comedy movies.</template>
   </category> 
   
</aiml>

that.aiml.csv

0,WHAT ABOUT MOVIES,*,*,Do you like comedy movies,that.aiml
0,YES,Do you like comedy movies,*,Nice! I like comedy movies too.,that.aiml
0,NO,Do you like comedy movies,*,Ok! But I like comedy movies.,that.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.

<topic>タグはAIMLでコンテキストを格納するために使用されるため、後でそのコンテキストに基づいて会話を行うことができます。通常、<topic> タグはで使用されます Yes/No type conversation。AIMLがトピックのコンテキスト内で書かれたカテゴリを検索するのに役立ちます。

構文

<set>タグを使用してトピックを定義する

<template> 
   <set name = "topic"> topic-name </set>
</template>

<topic>タグを使用してカテゴリを定義します

<topic name = "topic-name">
   <category>
      ...
   </category>     
</topic>

たとえば、次の会話について考えてみます。

Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.

ここでボットは「映画」をトピックとして応答します。

内部にtopic.aimlを作成します C > ab > bots > test > aiml およびtopic.aiml.csv内部 C > ab > bots > test > aimlif ディレクトリ。

topic.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>LET DISCUSS MOVIES</pattern>
      <template>Yes <set name = "topic">movies</set></template>  
   </category>
   
   <topic name = "movies">
      <category>
         <pattern> * </pattern>
         <template>Watching good movie refreshes our minds.</template>
      </category>
      
      <category>
         <pattern> I LIKE WATCHING COMEDY! </pattern>
         <template>I like comedy movies too.</template>
      </category>
      
   </topic>
</aiml>

that.aiml.csv

0,LET DISCUSS MOVIES,*,*,Yes <set name = "topic">movies</set>,topic.aiml
0,*,*,movies,Watching good movie refreshes our minds.,topic.aiml
0,I LIKE WATCHING COMEDY!,*,movies,I like comedy movies too.,topic.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.

<think> タグはAIMLで使用され、ユーザーに通知せずに変数を格納します。

構文

<think>タグを使用して値を格納します

<think> 
   <set name = "variable-name"> variable-value </set>
</think>

たとえば、次の会話について考えてみます。

Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!

内部にthink.aimlを作成します C > ab > bots > test > aiml とthink.aiml.csv内部 C > ab > bots > test > aimlif ディレクトリ。

think.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>My name is *</pattern>
      <template>
         Hello!<think><set name = "username"> <star/></set></think>
      </template>  
   </category>  
   
   <category>
      <pattern>Byeee</pattern>
      <template>
         Hi <get name = "username"/> Thanks for the conversation!
      </template>  
   </category>  
   
</aiml>

think.aiml.csv

0,My name is *,*,*, Hello! <think><set name = "username"> <star/></set></think>,think.aiml
0,Byeee,*,*, Hi <get name = "username"/> Thanks for the conversation!,think.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!

<condition>タグはプログラミング言語のswitchステートメントに似ています。これは、ALICEが一致する入力に応答するのに役立ちます。

構文

<condition name = "variable-name" value = "variable-value"/>

たとえば、次の会話について考えてみます。

Human: How are you feeling today
Robot: I am happy!

ここに保存しました happy ALICEの状態として、それが「私は幸せです!」と反応する方法です。

内部にcondition.aimlを作成します C > ab > bots > test > aiml およびcondition.aiml.csv内部 C > ab > bots > test > aimlif ディレクトリ。

condition.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HOW ARE YOU FEELING TODAY </pattern>
      
      <template>
         <think><set name = "state"> happy</set></think>
         <condition name = "state" value = "happy">
            I am happy!
         </condition>
         
         <condition name = "state" value = "sad">
            I am sad!
         </condition>
      </template>
      
   </category>
</aiml>

condition.aiml.csv

0,HOW ARE YOU FEELING TODAY,*,*,
   <think>
      <set name = "state"> happy</set>
   </think>
   
   <condition name = "state" value = "happy">I am happy!</condition>
   <condition name = "state" value = "sad">I am sad!</condition>,condition.aiml

プログラムを実行する

コマンドプロンプトを開きます。に移動C > ab > 次のコマンドを入力します-

java -cp lib/Ab.jar Main bot = test action = chat trace = false

結果を確認する

次の出力が表示されます-

Human: How are you feeling today
Robot: I am happy!