自然言語処理(NLP)では、ビジネスが利用者から受け取ったメッセージから有意な情報(日付、時刻、その他)を理解し、抽出することができます。この情報を使用して、会話に必要とされるメッセージエクスペリエンスの実装対象になる意図を特定できます。
MetaのビルトインNLPを利用することで、メッセージのレート制限に計上されるAPI呼び出しの数を減らすことができます。
MetaのビルトインNLPを利用すると、ビジネスにメッセージが配信される前に、まずMetaのWit.aiを使ってそのメッセージを解析し、パーサーの正しさの確率を表す信頼性レベルと共に、意味を検出したり情報を抽出したりします。その後、そのメッセージは、メッセージで検出されたすべての有意な情報、エンティティ、特性と共に、通常どおりビジネスに届けられます。例えば、メッセージに「hello, tomorrow at 2pm」のようなフレーズが含まれている場合、あいさつを含む特性と、実際のタイムスタンプを含むエンティティを受け取ることになります。
ビルトインNLPでは言語識別機能が自動でオンになり、ユーザーのプロフィールのロケールに基づいて日付と時刻が自動的にローカライズされます。
Wit.aiは、メッセージを解析し、ユーザーのメッセージからエンティティを作成するアプリです。サポートされる言語用のデフォルトのWit.aiを使用することも、サポートしたい言語ごとに独自のWit.aiアプリを作成することもできます。Messengerプラットフォームは、メッセージを受信すると、最も可能性が高い言語を特定し、その言語に関連付けられたWit.ai appを使ってエンティティを抽出します。最も可能性が高い言語にリンクされたWit.aiアプリがない場合は、デフォルトの言語モデルが使用されます。
MetaのWit.ai関連のドキュメントを利用して、Wit.aiアプリと、独自のカスタムWit.aiアプリを作成し、テストする方法についての詳細情報や、サポートされる言語のリストを参照してください。
ビジネスページにNLPを追加する場合、Metaアプリダッシュボードを使う方法と、プログラムを使う方法の2とおりがあります。
アプリダッシュボードを使ってビルトインNLPを追加する場合は、[商品]の下で[Messenger] > [設定]と移動し、下方の[ビルトインNLP]セクションまでスクロールします。ドロップダウンメニューから[Facebookページ]を選択して、オンに切り替えます。次に、複数言語を追加する選択肢がある[言語モデル]を選択します。詳細設定を使って、NLPのバージョン、エンティティの詳細情報を取得するためのverboseフラグ、受け取りたい意図や特性ごとのn-best値を選択できます。この設定で、検出されたロケールをいくつ返すかも決定できます。
ページの受信箱の過去のスレッドから、サンプルがランダムにコンパイルされ、新しく作成されたWitアプリに表示されます。Wit.aiアプリでこのサンプルにすぐにタグ付けできるようになります。
プログラムを使ってNLPを追加する場合は、以下が必要になります。
MESSAGING
タスクを実行できるユーザーからリクエストされた、ページアクセストークンpages_messaging
アクセス許可とpages_manage_metadata
アクセス許可 ページのNLPをオンにするためにnlp_enabled
を true
に設定したPOST
リクエストを/PAGE-ID/nlp_configs
エンドポイントに送信します。デフォルトの英語以外の言語を設定するために、model
パラメーターを含めることもできます。
詳しくは、ページNLPのリファレンスを参照してください。
curl -i -X POST "https://graph.facebook.com/v21.0
/me/nlp_configs
?nlp_enabled=true
&model=PORTUGUESE
&access_token=PAGE-ACCESS-TOKEN"
独自にカスタマイズしたWit.aiアプリを使用するためにcustom_token
パラメーターを指定して、POST
リクエストでNLPパラメーターをアップデートすることができます。NLPをオフにするには、nlp_enabled
パラメーターをfalse
に設定してPOST
リクエストを送信します。
ビルトインNLPが有効になっている場合、message Webhookには2つのNLPフィールド(nlp
とnlpv2
)が含まれるようになりました。nlp
フィールドは、エンティティ名と特性名に非推奨の命名規則を使用するレガシーフィールドです。nlpv2
フィールドでは、以下に示すように、エンティティと特性に簡略化された名前が使用されます。
nlp
フィールドは2024年6月18日に削除されます。
ビルトインNLPをオンにすると、各メッセージオブジェクトのmessage
Webhooks通知に、関連するNLPエンティティと特性が組み込まれます。
Messengerプラットフォームは、デフォルトで次のエンティティを返します。
情報 | エンティティ |
---|---|
金額 |
|
日時 |
|
距離 |
|
期間 |
|
メールアドレス |
|
位置情報 |
|
電話番号 |
|
数量 |
|
温度 |
|
URL |
|
量 |
|
Messengerプラットフォームは、デフォルトで次の特性を返します。
情報 | 特性 |
---|---|
結びの言葉(英語のみ) |
|
あいさつ(英語のみ) |
|
センチメント |
|
お礼(英語のみ) |
|
Wit.iaに関するドキュメントを参照し、利用可能なエンティティ、特性などについて理解を深めてください。
次のメッセージの例では、「see you tomorrow at 4pm」というフレーズが含まれており、解析後にdatetime
エンティティとsentiment
エンティティが組み込まれています。
{...,
"entities": {
"datetime:datetime": [
{
"id": "340464963587159",
"name": "datetime",
"role": "datetime",
"start": 8,
"end": 23,
"body": "tomorrow at 4pm",
"confidence": 0.9704,
"entities": [],
"type": "value",
"grain": "hour",
"value": "2020-06-16T16:00:00.000-07:00",
"values": [
{
"type": "value",
"grain": "hour",
"value": "2020-06-16T16:00:00.000-07:00"
}
]
}
]
},
"traits": {
"sentiment": [
{
"id": "5ac2b50a-44e4-466e-9d49-bad6bd40092c",
"value": "neutral",
"confidence": 0.6162
}
]
}
messages
Webhooksで、デフォルトのNLPを利用してメッセージに応答できます。例えば、受信した各メッセージに応答するhandleMessage()
関数がある場合、greetings
エンティティを使って適切な応答を送信できます。
function firstTrait(nlp, name) {
return nlp && nlp.entities && nlp.traits[name] && nlp.traits[name][0];
}
function handleMessage(message) {
// check greeting is here and is confident
const greeting = firstTrait(message.nlp, 'greetings');
if (greeting && greeting.confidence > 0.8) {
sendResponse('Hi there!');
} else {
// default logic
}
}