IBM Cloud Function에서 의사 시스템 엔티티 구현

소개



Watson Assistant의 영어 버전에는 sys-preson, sys-location이라는 사전 정의 없이 사람 이름과 지역 이름을 얻을 수 있는 시스템 엔터티가 있습니다.
일본어판으로 할 수 없는 것인가의 질문이 이전부터 있어, Cloud Function을 사용하면 어느 정도 비슷한 것을 할 수 있다고 생각해 시험해 본 결과입니다.

전제



NLU를 사용하는 Cloud Function 메커니즘IBM Cloud Function에서 NLU 호출이 실행 중이라고 가정합니다.
간단히 말하면, 이 기능을 Watson Assistant에서 호출하고 있다는 것입니다.

할 수 있는 일



아래 그림을 보는 것이 이해하기 쉽다고 생각합니다.
뒤에서 NLU를 호출하면,
オリックスの鈴木一郎です。名古屋から来ました。

라고 하는 자연문으로부터, 인명에 해당하는 부분, 회사명에 해당하는 부분, 지명에 해당하는 부분을 빼내고, 응답문 안에서 사용하고 있습니다.



구현



우리는 실제로 Watson Assistant에서 어떻게 정의했는지 설명합니다.

대화 정의



Cloud Function의 기능 테스트이므로 아래 그림과 같이 매우 단순한 흐름입니다.
디폴트의 ​​다이얼로그로 「환영」에 아래에 아이와 손자를 하나씩 더한 것뿐입니다.
아이와 손자의 조건도 단순한 "true"입니다.
아이는 「Skip user input」을 유효하게 해, 사용자 입력을 기다리지 않고 즉시 손자에게 제어가 흐르게 하고 있습니다.
Cloud Function 호출은 자식 노드에서 수행되며, NLU 분석 결과의 표시는 손자 노드에서 수행하는 형태가 됩니다.



JSON 정의



부모(환영), 자식, 손자 각자의 JSON 정의는 다음과 같습니다.

부모



다음과 같은 정의가 되어 있습니다.
context.private.my_credenyials 아래의 user, password는 Cloud Functions의 API 키입니다.
자세한 내용은 Watson Assistant에서 IBM Cloud Functions 호출을 참조하십시오.
{
  "context": {
    "private": {
      "my_credentials": {
        "user": "xxxx",
        "password": "yyyyy"
      }
    }
  },
  "output": {
    "text": {
      "values": [
        "どなたですか。"
      ],
      "selection_policy": "sequential"
    }
  }
}

아이



actions 항목은 Cloud Function의 호출 부분입니다.
각 항목의 의미는 다음과 같습니다.


항목 이름
의미


이름
Cloud Function의 이름. org_name과 space_name은 고유한 것으로 대체하십시오.

유형
server로 고정.

parameters
cloud function의 인수. 이번 예에서는 text만입니다.

credentials
Cloud Function의 API Key.

result_variable
Cloud Function 반환을 어떤 변수로 설정할지 지정합니다.

{
  "output": {},
  "actions": [
    {
      "name": "/<org_name>_<space_name>/nlu-service",
      "type": "server",
      "parameters": {
        "text": "<? input.text ?>"
      },
      "credentials": "$private.my_credentials",
      "result_variable": "context.result"
    }
  ]
}

손자



손자는 Cloud Function 호출에서 context.result.xxx로 반환된 값만 표시합니다.
JSON의 내용은 다음과 같습니다.
{
  "output": {
    "text": {
      "values": [
        "$result.location の $result.company から来られた$result.person さんですね。ようこそいらっしゃいました。"
      ],
      "selection_policy": "sequential"
    }
  }
}

끝에



NLU의 정밀도에 달려 있는 곳은 있습니다만, 어느 정도 sys-preson, sys-location 같은 것은 할 수 있었다고 생각합니다. 구현을 보시면 알 수 있듯이 NLU에서 인식 가능한 엔티티라면 같은 방식으로 Watson Assistant 안에서 취급할 수 있습니다.
또한 아직 시도하지는 않았지만 응용 문제로 NLU - Watson Knoledge Studio 연계도 실시하면 Knowledge Studio의 커스텀 기계 학습 모델에서 인식한 Entiry도 마찬가지로 Watson Assistant에서 사용할 수 있다고 생각합니다.

좋은 웹페이지 즐겨찾기