Artificial Intelligence Markup Language

Artificial Intelligence Markup Language（アーティフィシャル・インテリジェンス・マークアップ・ランゲージ、AIML、エーアイエムエル）とは、自然言語ソフトウェアエージェント構築のための XML を応用したマークアップ言語である。

背景 
AIML は Richard Wallece と世界的なフリーソフトウェア・コミュニティにより、1995年から2002年にかけて開発された。当初の目的はELIZAを高度に拡張した "A.L.I.C.E." と呼ばれるシステム向けであり、同システムはローブナー賞を3回受賞し、2004年にはChatterbox Challengeで優勝している。

A.L.I.C.E. のAIMLはGNU GPLライセンスでリリースされたため、多数のAIMLインタプリタがフリーソフトウェアまたはオープンソースで作られ、A.L.I.C.E. のクローンも多数作成された。いくつかの言語用のセット（Free AIML sets）も作られ、ユーザーコミュニティによって利用可能となっている。最近では、JavaベースのProgram DというAIMLインタプリタの開発が活発である。他にも、Ruby、Python、C++、C#、Pascalなどの言語向けにフリーまたはオープンソースのAIMLインタプリタが開発されている。

AIMLの要素 
AIML はいくつかの要素からなる。以下にその主な部分の詳細を解説する。

カテゴリ 
AIMLにおけるカテゴリは、知識の基本単位である。カテゴリには少なくとも、「パターン」と「テンプレート」という要素が含まれる。以下に単純なカテゴリの例を示す。

      WHAT IS YOUR NAME
    My name is John.
  

このカテゴリをロードすると、AIMLボットは "What is your name" という入力に対して "My name is John." と応答する。

パターン 
パターンは、1つまたは複数のユーザー入力とマッチすることを意図した文字列である。以下のパターン

  WHAT IS YOUR NAME

は大文字/小文字を無視して、"what is your name" といった入力とマッチする。パターンにはワイルドカードを使用できる。例えば、次のパターン

  WHAT IS YOUR *

は、"what is your name" にも "what is your shoe size" にも "what is your purpose in life" にもマッチする。

AIMLのパターンの文法は非常に単純であり、正規表現のような複雑な表現はできない。対話用に特化した設計であり、省略表現への対応や誤記への対応は AMILインタプリタ側で対応することができる。

テンプレート 
テンプレートはマッチしたパターンに対する応答を指定する。テンプレートには以下のような単純なテキストを使うこともできる。

   My name is John.

テンプレートには変数を使って以下のように表記することもできる。

  My name is .

こうすると、ボット名が文の中に組み込まれる。

  You told me you are  years old.

この場合、ユーザーの年齢が既にわかっていれば、それを応答の中で使うことができる。

テンプレートでは基本的なテキスト形式が使え、条件付応答（if-then/else）やランダムな応答も設定できる。

テンプレートで srai という要素を使って他のパターンにリダイレクトすることができる。これは、意味が同じで表現が異なる場合に対応する。以下に例を示す。

      WHAT IS YOUR NAME
    My name is .
  
      WHAT ARE YOU CALLED
          what is your name
    
  

1つめのカテゴリは単に "what is your name" という質問に答えている。2番目のカテゴリでは "what are you called" と入力されたときに "what is your name" と入力されたときと同じ応答をするように指定している。つまり、この2つの文はこのシステムでは等価に扱われる。

テンプレートは応答を指定しているものであるため、表示形式などをHTMLで指定するといったことも可能である。

外部リンク 
 aitools.org: AIML schema and specification, free AIML sets, Program D
 alicebot.org: Richard Wallace's "ALICE Foundation"
 A.I.Nexus: A Showcase for Alicebots on the Web
 Virtual Humans Forum
 AIML Forum
 AutoAiml - A Free Online Aiml file creator
 GaitoBot AIML Editor

AIML実装（フリーまたはオープンソース） 
開発進行中:
 Program D (Java, J2EE)
 RebeccaAIML (C++)
  (Java)
 Program R (Ruby)
 Program Q (C++, Qt)
 AIMLbot (Program #) (.NET/C#)

冬眠状態:
 J-Alice (C++)
 libaiml (C++)
 Program E (PHP)
 Program N

 Program V (Perl)
 Program Y/PyAIML (Python)

AIMLボット 
 パンドラボット 日本語版サイト
 The Original A.L.I.C.E.
 Dawnstar
 Ailysse
 Lilith
 Incognita - An artificial intelligence conversationalist chatting globally
 Phile Knowledge
 iGod
 Talk to William Shakespeare
 Chat with Ailis in English (Italian website)
 Prelude - a self learning chatbot with AIML support

マークアップ言語
フリー人工知能アプリケーション