スロットマッピング

説明

スロットは、Cognigy NLUによって検出され、input.slotsプロパティの下にInputオブジェクトに配置される特定のデータタイプまたはカスタムキーフレーズです。

スロットには2つのタイプがあります:

  • システム定義スロット
  • ユーザー定義スロット(Lexicons / keyphrases) – Lexiconsをご覧ください。

スロットのトークン化

スロットのトークンを作成することで、トークのロジックや出力フィールドに追加する時間を短縮することができます。

CognigyScript経由でのスロットへのアクセス

システムとユーザーが作成したスロットは、CognigyScriptより簡単にアクセスできます。

{{input.slots}}には検出されたすべてのスロット、タグ、キーフレーズがあります。

CognigyScript説明
{{input.slots.tagName}}タグ tagName のキーフレーズ配列を返します。

システム定義スロット

Cognigy.AIは以下のスロットを自動的に検出します。システム定義スロットタグはすべて大文字です。

スロットタグスロットJSON
DATEtomorrow, August 1st at 5pm(明日、8月1日午後5時)
"DATE": [
{
"start": {
"day": 2,
"month": 6,
"year": 2018,
"hour": 12,
"minute": 0,
"second": 0,
"millisecond": 0,
"text": "tomorrow",
"weekday": 6,
"dayOfWeek": "Saturday",
"ISODate": "2018-06-02T12:00:00Z"
},
"end": null
}
]
next week(来週)
"DATE": [
{
"start": {
"year": 2021,
"month": 12,
"day": 13,
"hour": 0,
"minute": 0,
"second": 0,
"milliseconds": 0,
"weekday": 1,
"dayOfWeek": "Monday",
"ISODate": "2021-12-13T00:00:00+01:00",
"plain": "December 13, 2021",
"grain": "week"
},
"end": null,
"text": "next week"
}
]
NUMBERone hundred, 143(100,143)
"NUMBER": [
100,
143
]
DURATION10 minutes 20 seconds(10分20秒)
"DURATION": {
"hour": null,
"minute": 10,
"second": 20
}
TEMPERATURE50 degrees(50度)
"TEMPERATURE": [
50
]
AGE32 years old(32歳)
"AGE": [
32
]
EMAILinfo@cognigy.com
"EMAIL": [
"info@cognigy.com"
]
PERCENTAGE5 percent(5パーセント)
"PERCENTAGE": [
5
]
URLhttps://cognigy.com
"URL": [
"https://cognigy.com"
]
MONEY500 dollars(500ドル)
"MONEY": [
{
"value": 500,
"unit": "$"
}
]
DISTANCE12 kilometers(12km)
"DISTANCE": [
{
"value": 12,
"unit": "kilometre"
}
]

データ形式

タイムゾーンと日付スロット

日付の検出は、エージェントまたはアクションに設定されたタイムゾーンにより異なります。

以下の表は、サポートされている入力パターンと形式の概要です。

言語対応する入力パターンの例
英語Now, Today, Tomorrow, Yesterday, Last Friday, Last night
17 August 2013 – 19 August 2013
This Friday from 13:00 – 16.00
5 days ago
2 weeks from now
Sat Aug 17 2013 18:40:39 GMT+0900 (JST)
2014-11-30T08:15:30-05:30
Day after tomorrow
Days before yesterday
Next Tuesday
ドイツ語Jetzt, Heute, Morgen, Gestern, Vorgestern
Letzte Nacht, Heute Nacht, Diese Nacht, Morgen Vormittags, Gestern Abend
Nach einem Tag, In einer Woche
15/01/2021, 15.01.2021, 15. Jan 2021, Freitag den 15. Januar 2021
17.08.2013 – 19.08.2013, 17.08.2013 bis 19.08.2013
Kommenden Montag
オランダ語Nu, Deze Nacht, Deze Vannacht, Gisteren, Morgen, Gisteravond, Eergisteren, Overmorgen
Morgen Middag, Deze Ochtend, Gisteren Voormiddag, Deze Namiddag, Morgen Avond, Overmorgen Nacht
Binnen Een Dag, Na een halve Maand
15/01/2021, 15.01.2021, 15. Jan 2021, Vrijdag de 15de Januari 2021
17.08.2013 – 19.08.2013, 17.08.2013 tot 19.08.2013
Laatste/vorige/volgende/komende Woensdag
日本語今日, 当日, 昨日, 明日, 今夜, 今夕, 今晩, 今朝
2016年2月17日です
Sat Aug 17 2013
01/30/2018
他の言語By example of French, the following patterns are supported. Some advanced patterns involving more advanced casual expressions such as “day before yesterday” or “next friday” would not be supported:
15.04.2023 12:00
15 aout 2015
15 aout 2015 a 12 octobre 2016
aujourd’hui, demain, hier
hier soir, demain après-midi

日付スロットの解析は、Flowで設定されている言語に異なります。対応している国別の日付形式の概要については、こちらを参照してください。次の表に、スラッシュ形式の日付に関する言語固有の操作の概要を示します:

言語スラッシュ日付形式順序(01/01/2019)
デフォルト(イギリス英語、ドイツ語、万国共通など)dd/mm/YYYY
アメリカ英語, 日本語, 中国語mm/dd/YYYY

備考:mm/dd/YYYYが不正な日付を生成した場合、パーサーはdd/mm/YYYYにフォールバックします。

無効な日付

Cognigy.AIはうるう年などを含む入力された日付の有効性をチェックします。無効な日付は検出されたスロットに表示されません。

未来と過去の日付マッピング

日付スロットの検出は、当月の日付の入力、および当年内にまだ発生していない日付の入力には、当年を使用します。

日付スロットの検出は、入力の日付が当月でなく、当年にすでに発生しており、入力に年が指定されていない場合、次の年を使用します。

DATEスロットに過去の日付を割り当てるには、入力で年を指定する必要があります。

入力が当月の日付の場合:

  • 今日の日付は2023 年 7 月 26 日です。
  • 入力は7月21日
  • DATEスロットの結果 :"year": 2023, "month": 7, "day": 21

入力された日付が当月ではなく、前の月であり、年が指定されていない場合:

  • 今日の日付は2023 年 7 月 26 日です。
  • 入力は3月30日
  • DATEスロットの結果: "year": 2024, "month": 3, "day": 30

入力された日付が当月ではなく前の月であり、年が指定されている場合:

  • 今日の日付は2023 年 7 月 26 日です。
  • 入力は 2021 年 3 月 30 日
  • DATEスロットの結果 :"year": 2021, "month": 3, "day": 30

ユーザー定義スロット(レキシコン)

Cognigyのユーザー定義スロットはキーフレーズと呼ばれ、Lexiconエディタで作成、管理されます。

Cognigy AIでは、Lexiconはタグを持つキーフレーズのリストです。Lexiconは任意の数のキーフレーズを持つことができ、そのキーフレーズは任意の数のタグと類義語を持つことができます。

LexiconがFlowに割り当てられると、Flowはすべてのキーフレーズについてユーザー入力を解析します。同じタグを持つキーフレーズが検出されると、スロットに割り当てられます。

キーフレーズへのアクセス

検出されたキーフレーズは、入力プロパティinput.slots.lexiconTagName.keyphraseで公開されます。(例:input.slots.product.keyphrase.shirt

{
    "slots": {
        "tag1": [
            {
                "keyphrase": "found keyphrase",
                "lower": "found keyphrase in lower case",
                "synonym": "found synonym, otherwise keyphrase",
                "count": "how often the keyphrase was found"
            }
        ]
    }
}

キーフレーズと類義語は、単語数の多い順に検出され、最も長いキーフレーズが最初に検出されます。cakecheese cakeが定義されていて、テキストがI love cheese cakeの場合、cheese cakeのみが検出されます。

類義語が見つかった場合、返されるキーフレーズは類義語がマップされたキーフレーズであり、類義語自体は結果の特別なsynonymプロパティに記録されます。

スロットの入力例

ユーザーが「ピザパイが大好きです」と言った場合、スロットの入力プロパティは次のようになります:

{
    "food": [
        {
            "keyphrase": "pizza",
            "count": 1,
            "synonym": "pizza pie"
        }
    ]
}

FlowにLexiconをアタッチする

NLUモデルが作成されたキーフレーズと類義語を認識するためには、NLU学習データにLexiconをアタッチする必要があります。詳しくは、[Attached Lexicons(アタッチLexicon)]のページをご覧ください。