Named entity recognition API 사용

Sterling은 자연어 텍스트를 분석하고 도메인 특정 엔티티를 찾는 Named entity recognition (NER) 서비스를 제공합니다. 서비스는 Supply Chain Intelligence Suite data platform와 밀접하게 통합되어 있습니다.

named entity recognition 서비스는 Supply Chain Intelligence Suite data platform 를 기본 데이터 소스로 사용하므로 Control Tower내에서 이름 지정된 엔티티를 인식하도록 서비스를 훈련할 필요가 없습니다. 서비스는 다음 엔티티를 인식하도록 사전 구성되어 있습니다.
Supply Chain Intelligence Suite data platform 데이터 모델에 엔티티 유형 맵핑
엔티티 유형 Supply Chain Intelligence Suite data platform 오브젝트 Supply Chain Intelligence Suite data platform 속성
category_name 카탈로그 code
location_locationIdentifier 위치 locationIdentifier
location_name 위치 locationName
location_group 위치 locationGroupName
product_name 제품 name
part_number 제품 partNumber
product_plannerCode 제품 plannerCode
organization_name 조직 name
organization_identifier 조직 organizationIdentifier
order_orderIdentifier 주문 orderIdentifier

메소드

recognize 메소드는 자연어 텍스트를 입력으로 분석하고 인식된 엔티티가 있는 JSON 오브젝트를 리턴합니다.
curl -X POST https://api.ibm.com/scassistant/bluerun/named-entities/na/recognize \
   --header 'Accept: application/json' \
   --header 'Content-Type: application/json' \
   --header 'X-IBM-Client-Id: <put Client-Id here>' \
   --header 'Authorization: Bearer <put JWT here>' \
   -d '{"text": "show me inventory for category pharma"}'
응답은 텍스트에서 찾은 이름 지정된 엔티티의 모든 멘션을 포함하는 JSON 오브젝트입니다.
{
  "category_name": {
    "value": "Pharma",
    "literal": "pharma",
    "confidence": 1,
    "location": [
      31,
      37
    ],
    "values": [
      "Pharma"
    ],
    "count": 1,
    "list": [
      {
        "value": "Pharma",
        "literal": "pharma",
        "confidence": 1,
        "location": [
          31,
          37
        ]
      }
    ]
  },
  "@category_name": "Pharma"
}
JSON 오브젝트의 키는 엔티티 유형 (예: category_name 또는 location_city) 에 해당하는 반면, 값은 JSON 오브젝트 자체이며 다음 필드를 포함합니다.
리터럴
입력 텍스트에서 엔티티의 발견된 멘션입니다.
엔티티의 정규화된 값 (예: Pharma 또는 San Francisco). 이 값은 GraphQL 조회에서 데이터를 가져오는 데 사용할 수 있습니다.
위치
문장에서 엔티티의 위치입니다.
신뢰도
신뢰수준을 나타내는 0-1범위의 숫자 값입니다. 값 1은 100% 확신합니다.
가치
모든 엔티티 값을 포함하는 문자열의 배열입니다.
서로 다른 엔티티 값의 수입니다.
목록
모든 엔티티 멘션이 있는 배열입니다.
values, countlist 특성은 입력 텍스트에 동일한 엔티티 유형의 여러 멘션이 포함된 경우에 유용할 수 있습니다. 두 개 이상의 값을 예상하지 않는 경우 언급된 모든 값에 액세스하거나 후속 질문을 할 수 있습니다.

Watson Assistant 와 NER 통합

Watson Assistant 스킬에서 직접 /recognize API를 사용할 수 있습니다. 이 API를 호출하려면 스킬 내에서 웹훅을 구성해야 합니다. ' Watson Assistant 웹훅에 대한 자세한 내용은 대화 상자에서 프로그래밍 방식으로 전화 걸기를 참조하세요.

웹훅 구성

  1. Watson Assistant에 로그인하십시오.
  2. 대화 스킬로 이동하여 옵션을 클릭하십시오.
  3. 웹훅 URL을 다음 recognize 엔드포인트로 설정하십시오.
    https://api.ibm.com/scassistant/bluerun/named-entities/na/recognize
  4. 다음 헤더를 설정하십시오.
    웹훅의 헤더
    헤더 이름 헤더 값
    권한 부여 다음 값을 사용하십시오.
    Bearer $integrations.chat.private.jwt
    X-IBM®-Client-Id 사용자의 클라이언트 ID입니다.

웹훅 호출

  1. NOR 서비스를 사용하는 대화 상자 노드로 이동하십시오.
  2. 사용자 정의를 클릭하십시오.
  3. 웹훅에 대한 콜아웃/조치 스킬 을 사용으로 설정하고 웹훅 호출을 선택하십시오.
  4. 내 웹훅 호출아래에서 사용자의 입력 텍스트를 제공하십시오.
    텍스트 "<? input.text ?>"
  5. 리턴 변수아래에서 sterling_entities와 같은 컨텍스트 변수에 결과를 넣을 수 있습니다.
  6. 웹훅을 호출한 후 어시스턴트가 인식하는 경우에서 컨텍스트 변수를 사용하여 엔티티가 있는지 여부를 확인할 수 있습니다. 스킬 인터페이스 구현 섹션에 설명된 응답 형식을 준수하려면 Watson Assistant 의 조건부 응답 기능을 사용하여 anything else 조건을 추가하여 NER API에 대한 성공적인 호출과 실패를 구별하십시오. 웹훅 실패는 INTERNAL_ERROR 응답 상태 코드를 리턴해야 합니다.
  7. 사용해 보기 옵션을 사용하여 대화 상자 노드를 테스트할 때 컨텍스트 관리 탭으로 이동하여 4단계의 컨텍스트 변수를 수동으로 작성하고 NER API에 전달할 JWT 신임 정보를 저장할 수 있습니다. 호출이 리턴되면 5단계에서정의한 리턴 변수 값에서 웹훅에 의해 리턴되는 값을 볼 수 있습니다.

명확화

입력에 동일한 엔티티 유형의 멘션이 두 개 이상 있는 경우 valueslist 배열에서 둘 이상의 항목을 가져옵니다. 예를 들어, What's available in San Francisco and New York? 문장은 다음 엔티티를 포함하는 것으로 인식됩니다.
{
  "location_city": {
    "value": "San Francisco",
    "literal": "San Francisco",
    "confidence": 1,
    "location": [20, 33],
    "values": ["San Francisco", "New York"],
    "count": 2,
    "list": [
      {
        "value": "San Francisco",
        "literal": "San Francisco",
        "confidence": 1,
        "location": [20, 33]
      },
      {
        "value": "New York",
        "literal": "New York",
        "confidence": 1,
        "location": [38, 46]
      }
    ]
  },
  "@location_city": "San Francisco"
}

Sterling 연결 보조자에 대해 제안되는 패턴은 다른 대화 상자 처리 전에 대화 상자 트리 시작 시 실행되는 전용 대화 상자 노드에 NER 호출을 배치하는 것입니다. API 호출에서 리턴되는 값은 컨텍스트 변수에 배치됩니다. 이를 통해 모든 사용자 입력이 인식을 위해 이름 지정된 엔티티 서비스에 제공되고 기술 내의 여러 대화 상자 노드에서 이름 지정된 엔티티 API를 호출하지 않아도 됩니다.