# AIML の背後にある考え方を理解する

> AIML（Artificial Intelligence Markup Language）は、チャットボット（AI）を作るための XML ベースの言語で、常に拡張子（.aiml）で保存されます。

著者 Shodipo Ayomide、2017年12月8日 公開。Web 版：https://blog.shodipoayomide.com/ja/understanding-the-concept-behind-aiml

![](https://res.cloudinary.com/developerayo/image/upload/v1551555821/aiml.png)

## AIML とは？

AIML（Artificial Intelligence Markup Language）は、チャットボット（AI）を作るための XML ベースの言語で、常に拡張子（.aiml）で保存されます。

AIML で新しい機能を定義するときに必ず使うタグが `category` タグです。このタグの中には `pattern` タグと `template` タグという 2 つのタグが入ります。template タグの中には、ほかの組み込みタグを入れることもできます。「どんな BOT を作るかによります」が、例えば `set`、`br/`、`srai`…などです。

ただし、ひとつ注意してください。HTML やほかのプログラミング言語、スクリプト言語、さらにはマークアップ言語にも閉じタグがあるのと同じように、AIML でもそこは大して変わりません。閉じタグは `/category`、`/template`、`/srai>`、`/set`…などです。

## 例

```HTML
<category><pattern>WHO IS ABRAHAM LINCOLN</pattern>

<template>was a great President of the United States, during the American Civil War.<br/>

</template>

</category>
```

ユーザーがこれ、またはこれにかなり近い内容を入力すると、ボットはその入力に応答します。

「WHO IS ABRAHAM LINCOLN」に対して、「was a great President of the United States, during the American Civil War.」と返すわけです。

では、AIML を使ってシンプルなボットを作ってみましょう

```html
<!doctype html>
<html>
  <body>
    <em>Emphasized text</em><br />
    <strong>Strong text</strong><br />
    <code>A piece of computer code</code><br />
    <samp>Sample output from a computer program</samp><br />
    <kbd>Keyboard input</kbd><br />
    <var>Variable</var>
  </body>
</html>
```

```AIML
<?xml version=”1.0" encoding=”UTF-8"?>

<aiml version=”1.0">

<category><pattern>Hi</pattern>

<template>Hi, I’m Oscar I was developed by Shodipo Ayomide 2017, <br/>How may I be of help</template>

</category>

<category><pattern>What are you </pattern>

<template>I said, My name is Oscar and I was developed by Shodipo Ayomide ok! </template>

</category>

<category><pattern>Why are you rude </pattern>

<template>Oh sorry, Please forgive my manners do not report me PLEASE!!! </template>

</category>

<category><pattern>ok </pattern>

<template>PLEASE!!! </template>

</category>

</aiml>
```

## では、テンプレートについて説明しましょう

テンプレートは、マッチしたパターンに対する応答を指定するものです。

**僕の名前は Oscar です**

テンプレートでは、次のように変数を使うこともできます

あなたは `get name=”user-age”` 歳だと教えてくれましたね
これで、DB にあればユーザーの年齢を取得できます。

---

読んでいただきありがとうございました！ 🔥🚀
