ユーザーローカルの人工知能ボットAPIを試す

 以前申し込んであったユーザーローカル人工知能ボットAPIのAPIキーが届いたので試してみました。

 下記サイトの開発者向けAPI申込フォームから利用登録をしておくと、後日APIキーがメールで送られてきます。

ai.userlocal.jp

 APIの機能はこちら

  1. 自動会話API
    ユーザー入力メッセージに対し、自然な受け答えを返す

  2. キャラクター会話変換API
    ネコやイヌなどの語尾に自動変換する 例)愉快ですね→愉快だニャ

  3. 氏名自動識別API
    会話中の相手の名前をもとに性別判定したり、姓・名を切り分ける

  4. 形態素解析API
    文章を単語に分割・活用形抽出するAPI

それぞれブラウザから直接URLを叩く感じでどんなレスポンスが返ってくるか試してみました。

自動会話API

APIキーのお知らせメールにも記載されていた下記リクエストで試してみました。

https://chatbot-api.userlocal.jp/api/chat?message=野球したい&key=xxxxxxxxxxxxxxxxxxxx

keyの部分は実際はメールで届いたAPIキーを入れます。
また、messageの内容は実際はURIエンコードしたものを指定します。

レスポンスはこんな感じでした。

{
  status: "success",
  result: "イチローすごいよね"
}

数回試しても同じレスポンスだったのですが、さらに同じリクエストを繰り返すと下記のようなレスポンスに変わりました。

{
  status: "success",
  result: "人って何度も同じこと言われたら怒るんだよ(# ゚Д゚)"
}

完全にランダムもしくは同一の返答かと思っていたのですが、何回続けて同じリクエストが来たかという状態を保持してそれを元にレスポンスを変えているということのようですね。

キャラクター会話変換API

自動会話APIのレスポンスの語尾を、いろいろなタイプのキャラクターに合ったものに変えてくれるというものです。
こちらは下記のような感じでリクエストを投げてみました。

https://chatbot-api.userlocal.jp/api/character?message=野球したい&key=xxxxxxxxxxxxxxxxxxxx&character_type=dog

こちらもmessageとkeyについては自動会話APIの時と同様です。
今回は追加でcharacter_typeというパラメータを指定して、どんなキャラクターのレスポンスにするかを指定しています。
この例では character_type=dog なので、犬のキャラクターを指定しています。
レスポンスは下記のようになりました。

{
  status: "success",
  result: "野球したいワン"
}

語尾が犬のキャラクターっぽくなってますね。
今度は character_type=roujin にしてみます。

https://chatbot-api.userlocal.jp/api/character?message=野球したい&key=xxxxxxxxxxxxxxxxxxxx&character_type=roujin

レスポンスは下記のように変わりました。

{
  status: "success",
  result: "野球したいのじゃ"
}

他にも character_type=cat を指定することができます。

氏名自動識別API

指名と渡すと姓・名と性別を推測してくれて、ニックネームの候補も提示してくれます。
リクエストは下記のようにしてみました。

https://chatbot-api.userlocal.jp/api/name?name=赤沼寛明&key=xxxxxxxxxxxxxxxxxxxx

結果は下記の通りです。

{
  status: "success",
  result: {
    last_name: "赤沼",
    last_name_yomi: "akanuma",
    first_name: "寛明",
    first_name_yomi: "ひろあき",
    gender: 1,
    gender_accuracy: 5,
    nickname: [
      "ひろぴー",
      "ひろぴょん",
      "akきち",
      "ひろたろー",
      "ひろタソ",
      "ひろすけ",
      "ひろべえ",
      "ひーちゃ",
      "寛太郎",
      "寛どん",
      "akひろ"
    ]
  }
}

姓・名と性別が正しく判定されています。

他にもいくつかの氏名で試してみたのですが、性別の判断がつかない場合は gender と gender_accuracy が 0 で返ってくるようです。

形態素解析API

日本語の文章を単語に分解してくれるAPIです。
リクエストは下記のようにしてみました。

https://chatbot-api.userlocal.jp/api/decompose?message=進捗どうですか?&key=xxxxxxxxxxxxxxxxxxxx

結果は下記のようになりました。

{
  status: "success",
  result: [
    {
      surface: "進捗どうですか",
      pos: "名詞",
      origin: "進捗どうですか",
      yomi: "シンチョクドウデスカ"
    },
    {
      surface: "?",
      pos: "記号",
      origin: "?",
      yomi: "?"
    }
  ]
}

クエスチョンマーク以外は正しく解析されませんでした。そこでmessageを「進捗はどうですか?」に変更してみたところ、下記のようになりました。

{
  status: "success",
  result: [
    {
      surface: "進捗",
      pos: "名詞",
      origin: "進捗",
      yomi: "シンチョク"
    },
    {
      surface: "は",
      pos: "助詞",
      origin: "は",
      yomi: "ハ"
    },
    {
      surface: "どう",
      pos: "副詞",
      origin: "どう",
      yomi: "ドウ"
    },
    {
      surface: "です",
      pos: "助動詞",
      origin: "です",
      yomi: "デス"
    },
    {
      surface: "か",
      pos: "助詞",
      origin: "か",
      yomi: "カ"
    },
    {
      surface: "?",
      pos: "記号",
      origin: "?",
      yomi: "?"
    }
  ]
}

今度は正しく解析してくれたようです。やはり文章が文法的に完全ではない場合の解析は十分ではないケースがありそうです。

パラメータに detail=true を追加すると、より詳細な情報を出してくれるようになります。

{
  status: "success",
  result: [
    {
      surface: "進捗",
      pos: "名詞",
      pos1: "サ変接続",
      pos2: "",
      pos3: "",
      form_type: "",
      form: "",
      origin: "進捗",
      yomi: "シンチョク",
      pronounce: "シンチョク"
    },
    {
      surface: "は",
      pos: "助詞",
      pos1: "係助詞",
      pos2: "",
      pos3: "",
      form_type: "",
      form: "",
      origin: "は",
      yomi: "ハ",
      pronounce: "ワ"
    },
    {
      surface: "どう",
      pos: "副詞",
      pos1: "助詞類接続",
      pos2: "",
      pos3: "",
      form_type: "",
      form: "",
      origin: "どう",
      yomi: "ドウ",
      pronounce: "ドー"
    },
    {
      surface: "です",
      pos: "助動詞",
      pos1: "",
      pos2: "",
      pos3: "",
      form_type: "特殊・デス",
      form: "基本形",
      origin: "です",
      yomi: "デス",
      pronounce: "デス"
    },
    {
      surface: "か",
      pos: "助詞",
      pos1: "副助詞/並立助詞/終助詞",
      pos2: "",
      pos3: "",
      form_type: "",
      form: "",
      origin: "か",
      yomi: "カ",
      pronounce: "カ"
    },
    {
      surface: "?",
      pos: "記号",
      pos1: "一般",
      pos2: "",
      pos3: "",
      form_type: "",
      form: "",
      origin: "?",
      yomi: "?",
      pronounce: "?"
    }
  ]
}

チャットプラットフォームとの連携もできる

 ユーザーローカルの人工知能ボットAPIは管理画面から設定することで、LINE、Facebook, Twitterと連携することができるようになっています。
 ただ試してみたところ、LINEについては先日 Line Messaging API が発表になり、これまでの BOT API が Deprecated になって仕様が変わったせいか、うまく連携できませんでした。Facebookの方もまだうまくいっていないので、もう少し試してみて連携できたらまた書きたいと思います。