IBM Cloud Function에서 NLU 호출
소개
IBM Cloud Function 시리즈의 연속입니다.
이전 기사 IBM Cloud Function에서 Watson ML 웹 서비스 호출을 작성할 때 발견되었지만 IBM Cloud Function의 Action에서는 bx 명령을 사용하여 서비스와 바인딩하면 자격 증명을 쉽게 얻을 수 있습니다.
이 메커니즘을 사용하여 NLU의 엔티티 추출을 수행하는 서비스를 만들었습니다.
서비스 만들기
IBM Cloud 대시보드에서 Functions를 선택하십시오.

아래 화면이 나타나면 만들기 시작을 클릭합니다.

다음 화면에서는 [Create Action]을 클릭합니다.

아래 화면이 나오면
Action Name: nlu-servce
Runtime: Python 3
를 입력하고 Create를 클릭합니다.

코드 편집 화면이 나오면 코드 내용을 다음과 같이 바꿉니다.
교체가 끝나면 Save를 클릭합니다.
#
#
# main() will be run when you invoke this action
#
# @param Cloud Functions actions accept a single parameter, which must be a JSON object.
#
# @return The output of this action, which must be a JSON object.
#
#
import sys
import json
from watson_developer_cloud import NaturalLanguageUnderstandingV1
from watson_developer_cloud.natural_language_understanding_v1 \
import Features, EntitiesOptions, KeywordsOptions, ConceptsOptions, CategoriesOptions, RelationsOptions, SentimentOptions
def main(dict):
# 解析対象文
text = dict['text']
# 認証情報の取得
creds = dict['__bx_creds']['natural-language-understanding']
#print(creds)
username = creds['username']
password = creds['password']
# NLUクライアントインスタンス生成
natural_language_understanding = NaturalLanguageUnderstandingV1(
username = username,
password = password,
version='2018-03-16')
# NLU呼出し
response = natural_language_understanding.analyze( text = text, features = Features(
#relations = RelationsOptions()
entities = EntitiesOptions(),
#concepts = ConceptsOptions(),
#keywords = KeywordsOptions(),
#sentiment = SentimentOptions(),
#categories = CategoriesOptions()
))
# 結果解析
entities = response['entities']
person = ''
company = ''
location = ''
for item in entities:
if item['type'] == 'Organization':
company = item['text']
if item['type'] == 'Person':
person = item['text']
if item['type'] == 'Location':
location = item['text']
return { 'person': person, 'company': company, 'location': location }
Cloud Function 플러그인 배포
Cloud Function 플러그인 배포가 아직 있을 경우(bx wsk 명령을 사용할 수 없음) 아래 링크에서 플러그인을 배포합니다.
Cloud Function 플러그인
서비스 바인딩
그런 다음 NLU 서비스와 지금 만든 Cloud Function의 Action을 바인딩합니다.
이렇게하면 위 코드 중
creds = dict['__bx_creds']['natural-language-understanding']
username = creds['username']
password = creds['password']
에서 NLU 자격 증명을 얻을 수 있습니다.
먼저 다음 명령으로 만든 Function 서비스의 이름을 확인합니다./<org_name>_<space_name>/nlu-service
라는 action이 존재해야합니다.
$ bx login
$ bx wsk action list
다음 명령을 사용하여 Watson NLU 서비스에 바인딩합니다.
$ bx wsk service bind natural-language-understanding nlu-service
여러 NLU 서비스가 있는 경우 다음과 같이 인스턴스 이름도 선택적으로 추가합니다.
$ bx wsk service bind natural-language-understanding nlu-service --instance <instance_name>
성공적으로 바인딩되었는지 여부는 다음 명령으로 확인할 수 있습니다.
bx wsk action get nlu-service
바인드 되고 있는 경우, username 나 password 등의 정보도, __bx_creds
의 부하로 설정되어 있습니다.
파라미터 설정
Cloud Function 서비스가 구문 분석 매개변수(text)를 수신할 수 있도록 합니다.
또한 테스트를 위해 매개 변수의 기본값을 설정합니다.
Cloud Function 관리 화면에서 액션 -> nlu-service를 선택하여 방금 만든 Cloud Function 세부정보 화면을 표시합니다.

메뉴에서 Parameters를 선택하고 Add를 클릭하여 다음 매개 변수 text
와 기본값을 설정합니다.text
의 디폴트치는 테스트용의 해석 대상 텍스트입니다. 뭐든지 괜찮습니다만, 나는 아래와 같은 자기 소개문을 설정했습니다. 디폴트 값에 문자열을 설정하는 경우, 더블 쿼트로 둘러쌀 필요가 있으므로, 주의해 주세요.
"はじめまして。私は日本アイ・ビー・エムの山田花子です。私は大阪から来ました。"

이것으로 준비 완료입니다. 코드 탭으로 돌아가서 invoke를 클릭합니다.

잘하면 아래와 같은 결과가 돌아올 것입니다.
Entity로서 Company("일본 아이 비 엠"), Person("야마다 하나코"), Location("오사카")가 잡혀 있는 것을 알 수 있다고 생각합니다.

잘못되면 파이썬 소스에 적절한 print 문을 넣고 디버깅하십시오.
코드를 수정했을 경우, bx wsk service bind
문은 재발행할 필요가 있으므로, 그 점에 주의해 주세요.
Reference
이 문제에 관하여(IBM Cloud Function에서 NLU 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makaishi2/items/2640d1b3f768330c04fa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
IBM Cloud 대시보드에서 Functions를 선택하십시오.

아래 화면이 나타나면 만들기 시작을 클릭합니다.

다음 화면에서는 [Create Action]을 클릭합니다.

아래 화면이 나오면
Action Name: nlu-servce
Runtime: Python 3
를 입력하고 Create를 클릭합니다.

코드 편집 화면이 나오면 코드 내용을 다음과 같이 바꿉니다.
교체가 끝나면 Save를 클릭합니다.
#
#
# main() will be run when you invoke this action
#
# @param Cloud Functions actions accept a single parameter, which must be a JSON object.
#
# @return The output of this action, which must be a JSON object.
#
#
import sys
import json
from watson_developer_cloud import NaturalLanguageUnderstandingV1
from watson_developer_cloud.natural_language_understanding_v1 \
import Features, EntitiesOptions, KeywordsOptions, ConceptsOptions, CategoriesOptions, RelationsOptions, SentimentOptions
def main(dict):
# 解析対象文
text = dict['text']
# 認証情報の取得
creds = dict['__bx_creds']['natural-language-understanding']
#print(creds)
username = creds['username']
password = creds['password']
# NLUクライアントインスタンス生成
natural_language_understanding = NaturalLanguageUnderstandingV1(
username = username,
password = password,
version='2018-03-16')
# NLU呼出し
response = natural_language_understanding.analyze( text = text, features = Features(
#relations = RelationsOptions()
entities = EntitiesOptions(),
#concepts = ConceptsOptions(),
#keywords = KeywordsOptions(),
#sentiment = SentimentOptions(),
#categories = CategoriesOptions()
))
# 結果解析
entities = response['entities']
person = ''
company = ''
location = ''
for item in entities:
if item['type'] == 'Organization':
company = item['text']
if item['type'] == 'Person':
person = item['text']
if item['type'] == 'Location':
location = item['text']
return { 'person': person, 'company': company, 'location': location }
Cloud Function 플러그인 배포
Cloud Function 플러그인 배포가 아직 있을 경우(bx wsk 명령을 사용할 수 없음) 아래 링크에서 플러그인을 배포합니다.
Cloud Function 플러그인
서비스 바인딩
그런 다음 NLU 서비스와 지금 만든 Cloud Function의 Action을 바인딩합니다.
이렇게하면 위 코드 중
creds = dict['__bx_creds']['natural-language-understanding']
username = creds['username']
password = creds['password']
에서 NLU 자격 증명을 얻을 수 있습니다.
먼저 다음 명령으로 만든 Function 서비스의 이름을 확인합니다./<org_name>_<space_name>/nlu-service
라는 action이 존재해야합니다.
$ bx login
$ bx wsk action list
다음 명령을 사용하여 Watson NLU 서비스에 바인딩합니다.
$ bx wsk service bind natural-language-understanding nlu-service
여러 NLU 서비스가 있는 경우 다음과 같이 인스턴스 이름도 선택적으로 추가합니다.
$ bx wsk service bind natural-language-understanding nlu-service --instance <instance_name>
성공적으로 바인딩되었는지 여부는 다음 명령으로 확인할 수 있습니다.
bx wsk action get nlu-service
바인드 되고 있는 경우, username 나 password 등의 정보도, __bx_creds
의 부하로 설정되어 있습니다.
파라미터 설정
Cloud Function 서비스가 구문 분석 매개변수(text)를 수신할 수 있도록 합니다.
또한 테스트를 위해 매개 변수의 기본값을 설정합니다.
Cloud Function 관리 화면에서 액션 -> nlu-service를 선택하여 방금 만든 Cloud Function 세부정보 화면을 표시합니다.

메뉴에서 Parameters를 선택하고 Add를 클릭하여 다음 매개 변수 text
와 기본값을 설정합니다.text
의 디폴트치는 테스트용의 해석 대상 텍스트입니다. 뭐든지 괜찮습니다만, 나는 아래와 같은 자기 소개문을 설정했습니다. 디폴트 값에 문자열을 설정하는 경우, 더블 쿼트로 둘러쌀 필요가 있으므로, 주의해 주세요.
"はじめまして。私は日本アイ・ビー・エムの山田花子です。私は大阪から来ました。"

이것으로 준비 완료입니다. 코드 탭으로 돌아가서 invoke를 클릭합니다.

잘하면 아래와 같은 결과가 돌아올 것입니다.
Entity로서 Company("일본 아이 비 엠"), Person("야마다 하나코"), Location("오사카")가 잡혀 있는 것을 알 수 있다고 생각합니다.

잘못되면 파이썬 소스에 적절한 print 문을 넣고 디버깅하십시오.
코드를 수정했을 경우, bx wsk service bind
문은 재발행할 필요가 있으므로, 그 점에 주의해 주세요.
Reference
이 문제에 관하여(IBM Cloud Function에서 NLU 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makaishi2/items/2640d1b3f768330c04fa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
그런 다음 NLU 서비스와 지금 만든 Cloud Function의 Action을 바인딩합니다.
이렇게하면 위 코드 중
creds = dict['__bx_creds']['natural-language-understanding']
username = creds['username']
password = creds['password']
에서 NLU 자격 증명을 얻을 수 있습니다.
먼저 다음 명령으로 만든 Function 서비스의 이름을 확인합니다.
/<org_name>_<space_name>/nlu-service
라는 action이 존재해야합니다.$ bx login
$ bx wsk action list
다음 명령을 사용하여 Watson NLU 서비스에 바인딩합니다.
$ bx wsk service bind natural-language-understanding nlu-service
여러 NLU 서비스가 있는 경우 다음과 같이 인스턴스 이름도 선택적으로 추가합니다.
$ bx wsk service bind natural-language-understanding nlu-service --instance <instance_name>
성공적으로 바인딩되었는지 여부는 다음 명령으로 확인할 수 있습니다.
bx wsk action get nlu-service
바인드 되고 있는 경우, username 나 password 등의 정보도,
__bx_creds
의 부하로 설정되어 있습니다.파라미터 설정
Cloud Function 서비스가 구문 분석 매개변수(text)를 수신할 수 있도록 합니다.
또한 테스트를 위해 매개 변수의 기본값을 설정합니다.
Cloud Function 관리 화면에서 액션 -> nlu-service를 선택하여 방금 만든 Cloud Function 세부정보 화면을 표시합니다.

메뉴에서 Parameters를 선택하고 Add를 클릭하여 다음 매개 변수 text
와 기본값을 설정합니다.text
의 디폴트치는 테스트용의 해석 대상 텍스트입니다. 뭐든지 괜찮습니다만, 나는 아래와 같은 자기 소개문을 설정했습니다. 디폴트 값에 문자열을 설정하는 경우, 더블 쿼트로 둘러쌀 필요가 있으므로, 주의해 주세요.
"はじめまして。私は日本アイ・ビー・エムの山田花子です。私は大阪から来ました。"

이것으로 준비 완료입니다. 코드 탭으로 돌아가서 invoke를 클릭합니다.

잘하면 아래와 같은 결과가 돌아올 것입니다.
Entity로서 Company("일본 아이 비 엠"), Person("야마다 하나코"), Location("오사카")가 잡혀 있는 것을 알 수 있다고 생각합니다.

잘못되면 파이썬 소스에 적절한 print 문을 넣고 디버깅하십시오.
코드를 수정했을 경우, bx wsk service bind
문은 재발행할 필요가 있으므로, 그 점에 주의해 주세요.
Reference
이 문제에 관하여(IBM Cloud Function에서 NLU 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makaishi2/items/2640d1b3f768330c04fa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"はじめまして。私は日本アイ・ビー・エムの山田花子です。私は大阪から来ました。"
Reference
이 문제에 관하여(IBM Cloud Function에서 NLU 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/makaishi2/items/2640d1b3f768330c04fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)