Messenger 플랫폼을 위한 자연어 처리

자연어 처리(NLP)를 사용하면 비즈니스로 수신되는 메시지에서 유의미한 정보(날짜, 시간 등)를 파악하고 추출할 수 있습니다. 이 정보를 사용하여 대화에 필요한 메시지 경험을 구현하기 위한 인텐트를 식별할 수 있습니다.

Meta에 내장된 NLP를 사용하면 메시지 사용 제한에 반영되는 API 호출 수를 줄일 수 있습니다.

작동 원리

메시지가 비즈니스로 전달되기 전에, Meta에 내장된 NLP가 먼저 메시지를 파싱하여 의미를 탐지하고 Meta의 Wit.ai를 사용하여 정보를 추출하도록 지원하며, 파서가 정확할 확률을 나타내는 신뢰도 수준을 제공합니다. 그런 다음 메시지는 메시지에서 탐지된 유의미한 정보, 엔터티특성과 함께 평소와 같이 비즈니스로 전달됩니다. 예를 들어 메시지에 '안녕하세요, 내일 오후 2시'와 같은 문구가 있을 경우 인사를 포함하는 특성과 실제 타임스탬프를 포함하는 엔터티를 받게 됩니다.

내장된 NLP를 통해 언어 식별이 자동으로 활성화되어 있으며, 사용자 프로필의 로캘에 따라 날짜와 시간이 자동으로 현지화됩니다.

Wit.ai

Wit.ai는 메시지를 파싱하고 사용자의 메시지에서 엔터티를 생성하는 앱입니다. 지원되는 언어에 기본 Wit.ai를 사용하거나 지원하고자 하는 각 언어에 대해 고유한 Wit.ai 앱을 만들 수 있습니다. Messenger 플랫폼이 메시지를 수신하면 먼저 상위 탐지 언어를 찾아서 관련 Wit.ai 앱으로 엔터티를 추출합니다. 상위 탐지 언어에 연결된 Wit.ai 앱이 없을 경우 기본 언어 모델을 사용합니다.

Wit.ai 앱, 맞춤 Wit.ai 앱 만들기 및 테스트 에 대한 자세한 내용과 지원되는 언어 리스트는 Wit.ai 문서를 참조하세요.

페이지에 NLP 추가

비즈니스 페이지에 NLP를 추가하는 방법은 Meta 앱 대시보드를 사용하는 것과 프로그래밍 방식, 두 가지가 있습니다.

앱 대시보드

앱 대시보드 를 사용하여 내장된 NLP를 추가하려면 제품에서 Messenger > 설정으로 이동하고 아래로 스크롤하여 내장된 NLP 섹션으로 이동합니다. Facebook 페이지를 드롭다운 메뉴에서 선택하고 ON으로 전환합니다. 그런 다음 여러 언어를 추가하는 옵션이 포함되어 있는 언어 모델을 선택합니다. 고급 설정에서는 NLP 버전, 엔터티에 대한 자세한 설명을 얻기 위한 자세한 설명 플래그, 수신하고자 하는 각 인텐트 및 특성에 대한 n-최적 값을 선택할 수 있습니다. 여기에서 반환되는 탐지 로캘 수도 설정합니다.

페이지의 받은 메시지함에 있는 이전 대화의 임의 샘플이 컴파일되고 새로 만든 Wit 앱에 표시됩니다. 샘플은 Wit.ai 앱에서 태그하는 데 즉시 사용할 수 있습니다.

프로그래밍 방식

NLP를 프로그래밍 방식으로 추가하려면 다음 항목이 필요합니다.

  • 페이지에서 MESSAGING 작업을 수행할 수 있는 사용자가 요청한 페이지 액세스 토큰
  • 페이지 ID
  • pages_messagingpages_manage_metadata 권한

/PAGE-ID/nlp_configs 엔드포인트로 POST 요청을 보냅니다. 이때 nlp_enabled 매개변수를 true로 설정하여 페이지에 NLP를 활성화합니다. model 매개변수를 포함하여 기본값인 영어 외의 다른 언어를 설정할 수도 있습니다.

자세한 내용은 페이지 NLP 참고 자료 를 참조하세요.

요청 샘플

읽기 쉽도록 형식이 조정되었습니다.
curl -i -X POST "https://graph.facebook.com/LATEST-GRAPH-API-VERSION/me/nlp_configs
      ?nlp_enabled=true
      &model=PORTUGUESE 
      &access_token=PAGE-ACCESS-TOKEN"

custom_token 매개변수로 맞춤 Wit.ai 앱을 사용하고 POST 요청으로 NLP 매개변수를 업데이트할 수 있습니다. NLP를 비활성화하려면 nlp_enabled 매개변수를 false로 설정한 POST 요청을 보냅니다.

Webhooks 알림

내장된 NLP가 활성화된 경우, 각 메시지 개체에 대해 관련 NLP 엔터티와 특성이 message Webhooks 알림에 포함됩니다.

엔터티 및 특성

Messenger 플랫폼은 기본적으로 다음 엔터티를 반환합니다.

정보엔터티

금액

wit$amount_of_money:amount_of_money

날짜/시간

wit$datetime:$datetime

거리

wit$distance:distance

기간

wit$duration:duration

이메일 주소

wit$email:email

위치

wit$location:location

전화번호

wit$phone_number:phone_number

수량

wit$quantity:quantity

온도

wit$temperature:temperature

URL

wit$url:url

볼륨

wit$volume:volume

내장된 특성

Messenger 플랫폼은 기본적으로 다음 특성을 반환합니다.

정보특성

끝인사(영어로만 지원)

wit$bye

인사말(영어로만 지원)

wit$greetings

반응

wit$sentiment

감사 인사(영어로만 지원)

wit$thanks

사용 가능한 엔터티, 특성 등에 대한 자세한 내용은 Wit.ia 문서 를 참조하세요.

알림 예시

다음 예시는 '내일 오후 4시에 보자'라는 문구를 포함하고 파싱 후에는 wit$datetimewit$sentiment 엔터티를 포함하게 될 메시지에 관한 것입니다.

{...,
  "entities": {
    "wit$datetime:datetime": [
      {
        "id": "340464963587159",
        "name": "wit$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": {
    "wit$sentiment": [
      {
        "id": "5ac2b50a-44e4-466e-9d49-bad6bd40092c",
        "value": "neutral",
        "confidence": 0.6162
      }
    ]
  }

NLP 메시지 파싱

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, 'wit$greetings');
  if (greeting && greeting.confidence > 0.8) {
    sendResponse('Hi there!');
  } else { 
    // default logic
  }
}