Edited at

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

More than 1 year has passed since last update.

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


背景

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


前提


  • QnAMakerをデプロイし公開済

  • QnAMakerの基本的な画面操作は理解している

  • このAzureサポートに関するFAQサイトのFAQデータをknowledgebaseに登録した状態

  • ブラウザはChrome(他ブラウザでも使えますがFireFoxだとTest入力で使いづらいので注意)

FAQデータ

image.png

QnAMaker画面

image.png


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

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

image.png

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

image.png

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

image.png

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

image.png


テストコンソール使い方

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

image.png

こんな画面になるので

image.png

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

image.png

Key入れまして

image.png

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

image.png

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

image.png

※ステータスコードとか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

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

image.png


Alterations登録

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


json

{

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

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

image.png

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

image.png


QnAMakerTestで試してみるが…?

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

image.png

Save and train&PUBLISHしてもブラウザリロードしても何しても変わらない…

よし。落ち着け。他も試してみよう。


json

{

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


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

image.png


他の質問パターンも試してみる

「Azure」を「アジュール」に変えたパターン。ぉお!!33.32から68.62にスコアが上がった!

image.png

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

image.png

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

image.png


他パターンで試行

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

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

登録前:44.86

image.png

登録後:99

image.png

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

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

トラブル対応のサポートとは?

登録前:36.2

image.png

登録後:80.81

image.png

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

Azure サポート プランを上位プランにupgrageするには?

登録前:49.5

image.png

登録後:49.5

image.png

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

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

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

登録前:12.35

image.png

登録後:100

image.png

お?ってことは…


数字の漢字変換試した

knowledgebaseこれで登録しといて

image.png

以下を登録


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を見ると

image.png

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

image.png

そのまま試してみよう。


数字テスト①

登録前:25.05

image.png

登録後:49.17

image.png

お、あがった。


数字テスト②

登録前:27.2

image.png

登録後:53.47

image.png


数字テスト③

登録前:27.2

image.png

登録後:52.01

image.png


数字テスト④

登録前:27.2

image.png

登録後:27.2

image.png

あれ…?


数字テスト⑤

登録前:24.16

image.png

登録後:46.37

image.png


数字テスト⑥

登録前:24.16

image.png

登録後:46.37

image.png


まとめ


  • (まとめと言っておきながら)いまいちルールわからん

  • 登録する意味はありそう

  • ってことは数字とか単位(kg等)とか送り仮名違いとか日本語無数に登録しなきゃいけない…?

  • もっと頑張って~Microsoftさん!

  • 日本語って難しい

Watsonも数字苦手だったりするのでこの辺は日本語対応まだまだなことを実感してます。

このAPI使ってる人(特に日本で)で情報発信してる方見つからなかったので是非触ってみたことのある方やここに情報あるとかご存知な方、アップデート情報とか便利な登録方法とかあれば教えてください!