LoginSignup
5
3

More than 1 year has passed since last update.

ConnectとLex連携する際、Lexの カスタムスロット の聞き取り精度を上げる方法

Last updated at Posted at 2022-02-27

はじめに

ConnectとLex連携する際、カスタムスロットのスロットをなかなか聞き取れなかったため、
聞き取りの精度を上げる方法について、記載します。

具体的には、Connectの電話番号に電話し、Lexが呼ばれた際、ファミリーマートと発話しましたが、聞き取ってくれませんでした。

ConnectとLex連携方法は、下記の記事を参考にしてください

Lexのカスタムスロット

スロット値に制限を使用し、スロット値ファミリーマートを設定します。
スクリーンショット 2022-02-27 18.27.31.png

精度をあげる方法

精度をあげる方法は結論から言うと、Lexでの聞き取りを失敗した後、CloudWatchLogsで、Lexで使用しているLambdaのログを見て、Lexが聞き取った言葉をカスタムスロットに反映させることです。

上記で設定したファミリーマートが聞き取れなかった場合、lexで使用しているLambdaのログを見てみましょう。

ちなみに、Logに出力するには、以下のようにeventprint等で出力するとよいです。

Lexで使用しているLambda
def lambda_handler(event, context):
    print (event)
    return dispatch(event)

LexのLambdaへのレスポンス(eventのログ)は、以下のようになっておりました。
一部省略しています。

{
    "requestAttributes": {
        "x-amz-lex:accept-content-types": "PlainText,SSML",
        "x-amz-lex:channels:platform": "Connect"
    },
    "sessionId": "afd73d30-683c-4ddf-97fc-10368b820b50",
    "inputTranscript": "ファミリー マート",
    "interpretations": [
        {
            "intent": {
                "slots": {
                    "destination": {
                        "shape": "Scalar",
                        "value": {
                            "originalValue": "ファミリー マート",
                            "resolvedValues": []
                        }
                    }
                },
                "confirmationState": "None",
                "name": "Reservation",
                "state": "InProgress"
            },
            "nluConfidence": 1
        },
        {
            "intent": {
                "slots": {},
                "confirmationState": "None",
                "name": "FallbackIntent",
                "state": "InProgress"
            }
        }
    ]
}

inputTranscriptoriginalValueが、ファミリー マートとなっており、ファミリーマートの間にスペースがあることが分かりました。

おそらく、聞き取った言葉を単語ごとに分けているため、ファミリーマートの2つ単語を聞き取ったと推測されます。

Lexが聞き取った言葉をカスタムスロットに反映

ファミリー マートをカスタムスロットに加えます。

スクリーンショット 2022-02-27 18.40.51.png

これで、Connectの電話番号に電話し、Lexが呼ばれた際、ファミリーマートと発話すると、しっかり聞き取ってくれました。

それでも、聞き取らない場合、もう一度ログを見て、カスタムスロットに反映させることで、どんどん聞き取り精度が向上します。

他の方法

あまりおすすめできませんが、カスタムスロットをスロット値に制限ではなく値を展開(既定)の方が聞き取り精度が良い場合もあるかもしれません。

スクリーンショット 2022-02-27 18.47.56.png

私の感覚として、スロット値に制限の方が聞き取り精度が良い気がします。

組み込みスロットタイプについて

ちなみに、Amazonが用意している組み込みスロットタイプで、AMAZON.Numberがありますが、カスタムスロットの方が精度がよかったです。

スクリーンショット 2022-02-27 18.50.45.png

想定している値が0~9の場合、カスタムスロットで10個作成をおすすめします。

ただ、想定している値が0~100だと、カスタムスロットで設定するのが大変なので、組み込みスロットタイプAMAZON.Numberを使用するしかないですね。

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3