pizzaplanet

[2019 머신러닝 스터디 잼] Cloud Natural Language API: Qwik Start 본문

AI

[2019 머신러닝 스터디 잼] Cloud Natural Language API: Qwik Start

scio 2019. 2. 12. 16:33

트랙 Cloud Natural Language API: Qwik Start


GSP097






Overview


 Google Cloud Natural Language API를 사용하여 텍스트 문서, 뉴스 기사, 블로그 게시물에 언급된 사람, 장소, 이벤트 등 정보를 추출할 수 있다. 소셜 미디어에서 감성을 파악하거나 콜센터 또는 메시징 응용 프로그램에서 발생하는 대화의 의도를 분석 할 수 있다.



Cloud Natural Language API 기능


  • 문법 분석 : 문장의 부분 요소 인식(토큰, 품사(PoS) 등) 후 요소 간 관계를 트리화
  • 개체 분석 : 개체 식별 후 사람, 조직, 위치, 이벤트 등 유형별로 라벨링
  • 감정 분석 : 문장의 전반적인 감정을 파악
  • 콘텐츠 분류: 사전 정의 된 700+ 카테고리에 맞게 문서 분류
  • 다중 언어 지원 : 영어, 스페인어, 일본어, 중국어(간체 및 번체), 프랑스어, 독일어, 이탈리아어, 한국어 등
  • REST API : REST API를 통한 액세스 가능


What you'll do


  • API Key 생성
  • 개체 분석 요청 메시지 전송


Create an API Key


1. 이번 트랙에서 사용할 PROJECT_ID로 환경 변수를 설정하자. NL API를 사용하기 위한 키가 있어야 한다. Speech API와는 다르게, JSON 파일로 접근 Key가 저장된다.


1
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
cs

  • gcloud config get-value core/project : 현재 프로젝트 ID 추출 명령

2. NL API에 액세스 할 새 서비스 계정을 만들자.

1
2
gcloud iam service-accounts create my-natlang-sa \
  --display-name "my natural language service account"
cs

  • --display-name "my natural language service account"AM : Identity and Access Management 특정 사용자에게 합당한 이유, 합당한 시간에 사용 가능한 클라우드 자원을 사용할 수 있는 권한을 컨트롤함

  • my-natlang-sa : Service Account의 내부 이름

  • --display-name "my natural language service account" : Service Account의 외부 노출 이름. 옵셔널 정보이므로 필수는 아니다.


3. 앞서 생성한 IAM Service Account를 통해 JSON 파일 형태의 API 키를 생성한다.

1
2
gcloud iam service-accounts keys create ~/key.json \
  --iam-account my-natlang-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
cs

  • ~/key.json : API 저장될 파일 지정

  • --iam-account : IAM Service Account 로그인 플래그

  • my-natlang-sa : Service Account의 내부 이름

  • {GOOGLE_CLOUD_PROJECT} : 1에서 설정한 환경 변수


4. 생성한 API Key를 편하게 쓰기 위해 환경변수로 등록


1
export GOOGLE_APPLICATION_CREDENTIALS="/home/USER/key.json"
cs




Make an Entity Analysis Request


1. 개체 인식을 시도해보자.


1
2
gcloud ml language analyze-entities --content= \
"Michelangelo Caravaggio, Italian painter, is known for 'The Calling of Saint Matthew'."
cs

  • gcloud my language : NL API 요청을 수행 하겠다.

  • analyze-entities : NL API 기능 중 개체 분석을 수행하겠다. 아래는 그 외 기능

      • analyze-entity-sentiment

      • analyze-sentiment

      • analyze-syntax

      • classify-text

  • --content-file : 분석 할 대상. 예제에선 문장으로 넘겼지만 파일 자체를 넘길 수도 있다.

  • --language : 예제엔 나오지 않았지만 분석 대상 언어를 선택할 수 있다. 명시하지 않으면, 자동으로 감지한다. 


2. 결과가 수신 될 것이다. 아래와 비슷한 응답이 나온다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{
  "entities": [
    {
      "name""Michelangelo Caravaggio",
      "type""PERSON",
      "metadata": {
        "wikipedia_url""http://en.wikipedia.org/wiki/Caravaggio",
        "mid""/m/020bg"
      },
      "salience"0.83047235,
      "mentions": [
        {
          "text": {
            "content""Michelangelo Caravaggio",
            "beginOffset"0
          },
          "type""PROPER"
        },
        {
          "text": {
            "content""painter",
            "beginOffset"33
          },
          "type""COMMON"
        }
      ]
    },
    {
      "name""Italian",
      "type""LOCATION",
      "metadata": {
        "mid""/m/03rjj",
        "wikipedia_url""http://en.wikipedia.org/wiki/Italy"
      },
      "salience"0.13870546,
      "mentions": [
        {
          "text": {
            "content""Italian",
            "beginOffset"25
          },
          "type""PROPER"
        }
      ]
    }
  ]
  "language""en"
}
cs

  • entities : 여러 개체에 대한 정보를 담고 있다.

  • language : 탐지한 언어

  • name : 개체 이름(전체 텍스트 중 분석 대상이 된 부분 문자열)

  • type : 개체의 타입. PERSON? LOCATION? EVENT?

  • metadata : 연관된 위키피디아 정보가 있을 시 포함됨

  • salience : 전체 텍스트에서 해당 개체가 중요한 정도(max 1.0)

  • mentions : 전체 텍스트에서 이 개체와 동일한 개체가 발견된 다른 지점(index)에 대한 정보 목록



진행 영상


참고


[구글 머신러닝 스터디잼 가이드라인]


[Cloud Natural Language API: Qwik Start]







Comments