QnAMakerの辞書登録機能APIを使ってみる


QnAMakerの辞書登録APIを使ってみます。

背景

質問と回答のリストやWebURLを指定するだけで超簡単にFAQボット作れる便利なAPIではあるものの、実際導入しようとすると、「取扱説明書」と「取説」を一緒の扱いにしてほしいとか同異義語登録したくなるけどどの程度まで精度上がるの?とかわからなかったのでちょっと試してみる。

前提

  • QnAMakerをデプロイし公開済
  • QnAMakerの基本的な画面操作は理解している
  • このAzureサポートに関するFAQサイトのFAQデータをknowledgebaseに登録した状態
  • ブラウザはChrome(他ブラウザでも使えますがFireFoxだとTest入力で使いづらいので注意)

FAQデータ

QnAMaker画面

QnAMakerに辞書登録なんてあったんだ?

ひっそりあるんです。Documentationクリックして

メニューからAPI Referenceをクリックすると

QnAMakerのAPIリファレンスが見れます。今回で言うとAlterationsってのが辞書登録機能ですね。

使い方こんな。詳しくは「API」とか「json」とかで検索するともっと詳しく調べられると思います。

テストコンソール使い方

API使うツールはPostmanとかありますがこのDocument画面でもテストで利用できるっぽいんで使ってみます。[Open API testing console]クリックして

こんな画面になるので

QnAMakerのサブスクリプションKey入れてってことっぽいのでAzure上にあるCognitiveserviceリソース(QnAMaker管理API)の

Key入れまして

ひとまずこのまま[Send]実行してみると

なんかこんなの出た。大丈夫っぽい。

※ステータスコードとかRESTはそのAPIごとで違う場合があるようですがこことか参考になるかも。QnAMakerAPIDocument見ても200ってのがなさそうなので204で正常ってことなのかなと理解。(違ったら是非教えてください)
じゃ実際別の文言で登録してみます。

検証

事前確認

knowledgebaseに登録した質問と回答

Qnestion:Azure サポートはどこで受けられますか?
Answer:サポートは、Microsoft Azure が提供されている市場で受けることができます。一般提供 (GA) の直後は、一部の特定のサービスを一部のリージョンで受けられないことがあります。

【注意】質問データが以下の状態になってます。
- クエスチョンが半角
- Azureサポートの間に半角スペース入ってる

事前スコア値確認

質問 相違点 スコア値
Azure サポートはどこで受けられますか? クエスチョンを全角に変更 78.73
Azureサポートはどこで受けられますか? 間の半角スペース抜く 78.76
アジュール サポートはどこで受けられますか? 「Azure」を「アジュール」に変更 33.32
Azure supportはどこで受けられますか? 「サポート」を「support」に変更 69.46
Azur supportはどこで受けられますか? 「Azure」を「Azur」に変更 37.32

正しい答え返してはくれるけど全角半角やスペース変わっただけでも結構スコア値下がってしまいます。

Alterations登録

いざ。じゃまず。Request bodyの中に以下を入力して[Send]クリックしクエスチョンマークの半角全角を登録します。

json
{
  "wordAlterations": [
    {
      "alterations": [
        "?",
        "?"
      ]
    }
  ]
}

うん。登録できたっぽい。

試しにDownload alterationsって方で実行するとちゃんと登録されてることがわかります。

QnAMakerTestで試してみるが…?

…ん?スコア値変わらないじゃないか。

Save and train&PUBLISHしてもブラウザリロードしても何しても変わらない…
よし。落ち着け。他も試してみよう。

json
{
  "wordAlterations": [
    {
      "alterations": [
        "Azure",
        "アジュール",
        "Azur"
      ]
    },
    {
      "alterations": [
        "サポート",
        "support"
      ]
    }
  ]
}

空白の全角半角の違いはAlterationsに登録できないっぽい…。400でエラーで帰ってきた。

他の質問パターンも試してみる
「Azure」を「アジュール」に変えたパターン。ぉお!!33.32から68.62にスコアが上がった!

「サポート」を「support」に変えたパターン。ん?なぜ下がる…?

「Azure」を「Azur」に変えたパターン。こちらも37.32から68.62に上がった!

他パターンで試行

Microsoft はどの言語でサポートを提供していますか?のMicrosoftマイクロソフトで登録
「マイクロソフト はどの言語でサポートを提供していますか?」
登録前:44.86

登録後:99

さすがMicrosoft。(ってことなのか…?)

障害対応のサポートとは?の障害トラブルで登録
トラブル対応のサポートとは?
登録前:36.2

登録後:80.81

Azure サポート プランを上位プランにアップグレードするには?のアップグレードupgrageで登録
Azure サポート プランを上位プランにupgrageするには?
登録前:49.5

登録後:49.5

変わらん…もしや英語や記号から日本語への代替が反応しないってことか?‥嫌な予感。

月額料金は 1 つの Azure プランが対象ですか? それともアカウント全体が対象になりますか?の1で登録
月額料金は 一 つの Azure プランが対象ですか? それともアカウント全体が対象になりますか?
登録前:12.35

登録後:100

お?ってことは…

数字の漢字変換試した

knowledgebaseこれで登録しといて

以下を登録

json
{
  "wordAlterations": [
    {
      "alterations": [
        "1",
        "一"
      ]
    },
    {
      "alterations": [
        "3",
        "三"
      ]
    },
    {
      "alterations": [
        "100",
        "百"
      ]
    },
    {
      "alterations": [
        "300",
        "三百"
      ]
    },
    {
      "alterations": [
        "一万",
        "10000",
        "10,000",
        "10000",
        "10,000"
      ]
    },
    {
      "alterations": [
        "5000",
        "5,000",
        "五千",
        "5000",
        "5,000"
      ]
    }
  ]
}

お?なんかステータスコード500出してるんでひょっとしてすでに数字は登録されてるってこと?Download Alterationsを見ると

正常に登録できてるように見える…よくわからない…

そのまま試してみよう。

数字テスト①

登録前:25.05

登録後:49.17

お、あがった。

数字テスト②

登録前:27.2

登録後:53.47

数字テスト③

登録前:27.2

登録後:52.01

数字テスト④

登録前:27.2

登録後:27.2

あれ…?

数字テスト⑤

登録前:24.16

登録後:46.37

数字テスト⑥

登録前:24.16

登録後:46.37

まとめ

  • (まとめと言っておきながら)いまいちルールわからん
  • 登録する意味はありそう
  • ってことは数字とか単位(kg等)とか送り仮名違いとか日本語無数に登録しなきゃいけない…?
  • もっと頑張って~Microsoftさん!
  • 日本語って難しい

Watsonも数字苦手だったりするのでこの辺は日本語対応まだまだなことを実感してます。
このAPI使ってる人(特に日本で)で情報発信してる方見つからなかったので是非触ってみたことのある方やここに情報あるとかご存知な方、アップデート情報とか便利な登録方法とかあれば教えてください!