NLPのしきい値や設定を更新します
このAPIを使用するために、アプリは [NLP設定] のボットビルダーのAPIスコープを必要とします。あるいは、[テストとトレーニング] にある [NLP設定] の管理者のAPIスコープを必要とします。
POST https://{{host}}/api/public/bot/{{BotID}}/configurations?language={{languageCode}}&groupName={{groupName}}
クエリパラメータ
パラメータ | 必須/任意 | 説明 |
---|---|---|
ホスト | 必須 | 環境URL(例: https://bots.kore.ai) |
BotID | 必須 | ボットIDまたはストリームID。ボットの [一般設定] ページからアクセスすることができます。 |
languageCode | 必須 | これらの設定を更新する必要があるボットの言語。 |
groupName | 複数のMLモデルに必須 | GroupNameは、特定のグループのMLパラメタを更新するために使用することができます。 ボットレベルのインテントモデルの設定を更新するには、groupNameを「ボットレベルのインテントモデル」に設定する必要があります。 |
本文パラメータ
パラメータは、更新が必要なしきい値の設定に応じて異なります。以下は、様々なしきい値の設定の包括的なパラメータリストです。
設定をアップデート
機械学習エンジン
このセクションでは、機械学習エンジンに関する設定について説明します。設定の詳細についてはこちらを参照してください。
{ "configurations": [ { "mode": "ml", // Machine Learning Engine "exactMatchThreshold": 90, // ML Definitive Score - value in range [80-100] "minThreshold": 0.4, // ML threshold - value in range [0-1] } ], "mlParams": { "intentParams": { "useSynonyms": true, // Bot Synonyms "useStopwords": true, // Stopwords "usePlaceholders": true, // Entity Placeholders "features": "n_gram" // Feature Extraction - value in range [skip_gram, n_gram] "skip_gram": { // features should be 'skip_gram' "seqLength": 2, // Sequence Length - value in range [2-4] "maxSkipDistance": 1 // Maximum Skip Distance - value in range [1-3] }, "ngram": 3, // ngram Sequence Length - value in range [1-4] // features should be ‘n_gram’ }, "nerParams": { "type": "corenlp" // NER Model // could be "corenlp" for Conditional Random Field // or "spacy" - Deep Neural Network } } }
ファンダメンタルミーニングエンジン
このセクションでは、ファンダメンタルミーニングエンジンに関する設定について説明します。設定の詳細についてはこちらを参照してください。
{ "configurations": [ { "mode": "cs", // Fundamental Meaning Engine "labelMatch": true // Intent Detection using Task Name Words "isFMThreshold": true, //FM Threshold "fmThreshold": 15 //FM Threshold value } ] }
ナレッジグラフエンジン
このセクションでは、ナレッジグラフエンジンに関する設定について説明します。設定の詳細についてはこちらを参照してください。
{ "configurations": [ THRESHOLDS & CONFIGURATIONS { "mode": "faq", "autoSpellCorrectEnabled": true, // Auto Correction "useBotSynonyms": true, // Bot Synonyms "enPatternLemma": false, // Lemmatization using Parts of Speech "pathCoverage": 50, // Path Coverage - value in range [0-100] "exactMatchThreshold": 95, // Minimum and Definitive Level for Knowledge Tasks // value in range [0-100] // should be more than minThreshold & maxThreshold "maxThreshold": 80, // Probable range for Knowledge Task // value in range [0-100] // should be between minThreshold & exactMatchThreshold "minThreshold": 60, // Low confidence range for Knowledge Task // value in range [0-100] // should be less than maxThreshold & exactMatchThreshold "suggestionsCount": 3, // KG suggestionsCount | [0-5] "taskMatchTolerance": 35, // Proximity of Suggested Matches | [0-50] "longResponses": { "readMore": true, // Manage Long Responses "useCustomReadMoreURL": true, // readMore should be true "customReadMoreURL": "www.siteurl.com" // readMore link; readMore should be true }, "searchInAnswer": { "enabled": true, // Search in Answer "notifyUser": true, // Inform end user that it is a probable answer "responseType": "relevantWithReadMore", // can be "complete" - Show complete response, // or "relevant" - Show only the relevant paragraph, // or "relevantWithReadMore" - Show only the relevant paragraph with “read more” link ] "customReadMoreURL": "www.siteurl.com", // “read more” link "useCustomReadMoreURL": true // enabled should be true } "qualifyContextualPaths": false, // Qualify Contextual Paths } ] }
ランキングおよび解決エンジン
このセクションでは、ランキングおよび解決エンジンに関する設定について説明します。設定の詳細についてはこちらを参照してください。
{ "configurations": { "mode": "rr", // Ranking and Resolver Engine "taskMatchTolerance": 2, // Proximity of Probable Matches - value in range [0-20] "useDependencyParser": true, // Dependency Parsing Model "minMatchVal": 0.4, // Minimum Match Score - value in range [0-1] // useDependencyParser should be true "rankingParameters": "" // Advanced Configurations // useDependencyParser should be true "intentRescoring": false, // Rescoring of Intents "isPreferDefinitiveMatch": true // Prefer Definitive Matches } ] }
NLPの詳細設定
このセクションでは、[自然言語] > [トレーニング] の [高度なNLP設定] に記載されている設定について説明します。設定の詳細についてはこちらを参照してください。以下は、上記の [高度なNLP設定] を設定するためのリクエストのサンプルです。
{ "advancedNLPSettings":[ { "configurationKeyName": "NoneIntent", "configurationValue":true, "nlpEngine":"ML" } ] }
以下は、許容されるNLPの詳細設定と考えられる値の完全なリストです。複合語を分割
{ "configurationName": "複合語を分割", "configurationKeyName": "splitCompoundWords", "desc": "この設定により、複合語を複数の語幹に分割してから、個々の語幹を処理することができます", "nlpEngine": "ML", "dataType": "Boolean", "range": [true, false], "defaultValue": false, "requiresTraining": true, "language": ["de", "nl"], "isChild": false }
Noneインテント
{ "configurationName": "Noneインテント", "configurationKeyName": "NoneIntent", "desc": "有効にすると、機械学習エンジンを使用してインテント一致の偽陽性が発生する可能性を減らす、Noneインテントが作成されます", "nlpEngine": "ML", "dataType": "Boolean", "range": [true, false], "defaultValue": true, "requiresTraining": true, "language": "ALL", "isChild": false }
コサイン類似性の減衰
{ "configurationName": "コサイン類似性の減衰", "configurationKeyName": "cosineSimilarityDampening", "desc": "コサイン類似性の減衰を使用して、短文の質問のペナルティを回避します", "nlpEngine": "KG", "dataType": "Boolean", "range": [true, false], "defaultValue": true, "requiresTraining": false, "language": "ALL", "isChild": false }
ネットワークタイプ
{ "configurationName" : "ネットワークタイプ", "configurationKeyName" : "network", "desc" : "インテントのトレーニングに利用できるネットワーク", "nlpEngine" : "ML", "dataType" : "enum", "range" : ["Standard","MLP-BOW","MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"], "defaultValue": "Standard", "requiresTraining" : true, "language" : "ALL", "isChild" : false }
Epochs
{ "configurationName": "Epochs", "configurationKeyName": "epochs", "desc": "モデルのトレーニングにおける反復回数", "nlpEngine": "ML", "dataType": "Number", "range": [20, 300], "defaultValue": 20, "requiresTraining" : true, "language" : "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN","KoreBERT"] }
バッチサイズ
{ "configurationName" : "バッチサイズ", "configurationKeyName" : "batch_size", "desc" : "トレーニング時に各バッチで使用されるトレーニングサンプルの数", "nlpEngine" : "ML", "dataType" : "Number", "range" : [10,30], "defaultValue":10, "requiresTraining" : true, "language" : "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN","KoreBERT"] }
学習率
{ "configurationName": "学習率", "configurationKeyName": "lr", "desc": "学習率は、損失勾配に対してネットワークの重みをどの程度調整するかを制御するハイパーパラメータです", "nlpEngine": "ML", "dataType": "enum", "range": [1e-4, 1e-3, 1e-2], "defaultValue": 1e-3, "requiresTraining" : true, "language" : "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN","KoreBERT"] }
Dropout
{ "configurationName": "Dropout", "configurationKeyName": "dropout", "desc": "モデルの過学習を避けるための正則化パラメータ", "nlpEngine": "ML", "dataType": "Number", "range": [0, 0.8], "defaultValue": 0, "requiresTraining" : true, "language" : "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-BOW","MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"] }
Vectorizer
{ "configurationName": "Vectorizer", "configurationKeyName": "vector_type", "desc": "トレーニングデータからの特徴抽出手法", "nlpEngine": "ML", "dataType": "enum", "range": ["count", "tfidf"], "defaultValue": "count", "requiresTraining": true, "language": "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput": ["MLP-BOW"] }
最大シーケンス長
{ "configurationName": "最大シーケンス長", "configurationKeyName": "max_seq_length", "desc": "トレーニングサンプルまたはユーザー入力の長さ", "nlpEngine": "ML", "dataType": "Number", "range": [10, 30], "defaultValue": 20, "requiresTraining" : true, "language" : "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-WordEmbeddings","LSTM","CNN","KoreBERT"] }
埋め込みタイプ
{ "configurationName": "埋め込みタイプ", "configurationKeyName": "word_embedding_type", "desc": "トレーニングデータからの特徴抽出手法", "nlpEngine": "ML", "dataType": "enum", "range": ["generated", "pretrained", "random"], "defaultValue": "random", "requiresTraining" : true, "language" : "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"] }
埋め込み範囲
{ "configurationName": "埋め込み範囲", "configurationKeyName": "embedding_dim", "desc": "特徴量化で使用される埋め込み範囲", "nlpEngine": "ML", "dataType": "Number", "range": [100, 400], "defaultValue": 300, "requiresTraining" : true, "language" : "ALL", "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-WordEmbeddings","LSTM","CNN", "KoreBERT"] }
K-分割交差検証
{ "configurationName" : "kfold", "configurationKeyName" : "kfold", "desc" : "交差検証のK-分割パラメータ", "nlpEngine" : "ML", "dataType" : "Number", "range" : [2,10], "defaultValue": 5, "requiresTraining" : true, "language" : "ALL", "isChild" : false }
インテント名としてのFAQ名
{ "configurationName": "インテント名としてのFAQ名", "configurationKeyName": "FAQ_Name_Intent_Name", "desc": "FAQ名のインテント名としての使用を有効にします。", "nlpEngine": "KG", "dataType": "Boolean", "range": [true, false], "defaultValue": false, "requiresTraining" : false, "language" : "ALL", "isChild" : false }
ファジーマッチ
{ "configurationName" : "ファジーマッチ", "configurationKeyName" : "fuzzyMatch", "desc" : "この設定では、ファジー・マッチング・アルゴリズムを使用してインテントを検出することができます", "nlpEngine" : "ML", "dataType" : "Boolean", "range" : [true,false], "defaultValue": true, "requiresTraining" : false, "language" : "ALL", "isChild" : false }
否定の処理
{ "configurationName" : "否定の処理", "configurationKeyName" : "f_negation", "desc" : "この設定では、インテント検出で否定された単語を処理することができます", "nlpEngine" : "ML", "dataType" : "Boolean", "range" : [true,false], "defaultValue": true, "requiresTraining" : true, "language" : ["en", "es"], "isChild" : false }
多重発生を無視
{ "configurationName" : "多重発生を無視", "configurationKeyName" : "binary", "desc" : "この設定では、生カウント数ではなく、用語の有無だけを使用することができます", "nlpEngine" : "ML", "dataType" : "Boolean", "range" : [true,false], "defaultValue": false, "requiresTraining" : true, "language" : ["en"], "isChild" : true, "parentConfiguration" : "network", "requiredParentInput" : ["MLP-BOW"] }
ユーザーの発話に含まれるエンティティのプレースホルダ
{ "configurationName": "Test PlaceHolders", "configurationKeyName": "TestPlaceHolders", "desc": "予測時に、ユーザー入力に含まれるエンティティ値を、対応するエンティティプレースホルダで置き換えることを可能にします", "nlpEngine": "ML", "dataType": "Boolean", "range": [true, false], "defaultValue": true, "requiresTraining": false, "language": "ALL", "isChild": false }
設定を削除
設定を削除するには、上記のセクションに記載されている設定の名前を使用して、このように行います。
curl --location -g --request POST \ 'https://{{host}}/api/public/bot/{{bot-id}}/configurations?language={{languageCode}}' \ --header 'auth: YOUR_JWT_ACCESS_TOKEN' \ --header 'content-type: application/json' \ --data-raw '{ "delete": { "advancedNLPSettings": [ "kfold" ] } }'
設定をリセット
設定をリセットするには、上記のセクションに記載されている設定の名前を使用して、このように行います。
curl --location -g --request POST \ 'https://{{host}}/api/public/bot/{{bot-id}}/configurations?language={{languageCode}}' \ --header 'auth: YOUR_JWT_ACCESS_TOKEN' \ --header 'content-type: application/json' \ --data-raw '{ "reset": { "faq": [ "pathCoverage", // Path Coverage "suggestionsCount", // KG suggestionsCount "minimumAndDefinitiveLevels", // Minimum and Definitive Level for Knowledge Tasks (will reset all three values) "taskMatchTolerance" // Proximity of Suggested Matches ], "ml": [ "exactMatchThreshold", // ML Definitive Score "minThreshold" // ML threshold ], "rr": [ "taskMatchTolerance", // Proximity of Probable Matches "minMatchVal" // Minimum Match Score ], "mlParams": [ "ngram", // ngram Sequence Length "seqLength", // Sequence Length "maxSkipDistance" // Maximum Skip Distance ] } }'
認証
以下のように、JWTをヘッダーに含むAPIを呼び出します。 auth: {{JWT}}
応答のコンテンツタイプ
application/json
サンプルリクエスト
curl --location -g --request POST \ 'https://{{host}}/api/public/bot/{{bot-id}}/configurations?language={{languageCode}}' \ --header 'auth: YOUR_JWT_ACCESS_TOKEN' \ --header 'content-type: application/json' \ --data-raw '{ "advancedNLPSettings": [ { "configurationKeyName": "NoneIntent", "configurationValue": true, "nlpEngine": { "configurations": [ { "mode": "ml", "exactMatchThreshold": 85, "useDependencyParser": true, "minThreshold": 0.2 }, { "mode": "faq", "useBotSynonyms": true, "searchInAnswer": { "enabled": true, "notifyUser": false, "responseType": "relevantWithReadMore", "customReadMoreURL": "aa", "useCustomReadMoreURL": true } } ], "mlParams": { "intentParams": { "features": "skip_gram", "skip_gram": { "seqLength": 3, "maxSkipDistance": 2 } } }, "nlSettings": { "enableAutoUtteranceAddition": false, "enableNegativePatterns": true } }'
サンプル応答
[ { "message": "Training Queued.", "Training_ID": "5d14b03edba48abcb44375a1" } ]