상세 컨텐츠

본문 제목

[구글 API] 구글 감정분석 API(Cloud Natural Language API - Sentiment Analysis) 사용 방법

API/openAPI

by groomi 2022. 3. 23. 22:44

본문

구글 감정분석 API 사용 방법 (Cloud Natural Language API - Sentiment Analysis)

Cloud Natural Language API에서는 감정 분석, 항목 분석, 항목 감정 분석, 구문 분석, 콘텐츠 분류의 5가지 메서드를 제공한다. 그 중에서도 오늘은 감정 분석 API가 무엇인지, 어떻게 사용할 수 있는지 살펴볼 것이다.

 

감정분석(Sentiment Analysis) 기능이란?

: 주어진 텍스트 내의 주도적인 감정적 의견을 식별하여 텍스트의 전체적인 태도가 긍정적인지 부정적인지를 분석해주는 기능

 

해당 기능은 주어진 텍스트에 대해 Score와 Magnitude라는 두 가지 값을 산출한다. 

 

- Score : -1 ~ 1 사이의 값을 가진다. -1에 가까워질수록 부정적, 0은 중립적, 1에 가까워질수록 긍정적임을 의미한다. 

예를 들어 "너무 행복해"라는 텍스트는 1에 가까운 score 값을 산출할 것이고, "너무 슬퍼"라는 텍스트는 -1에 더 가까운 score 값을 산출할 것이다. score는 텍스트에 표현된 감정, 전체적인 태도가 긍정에 가까운지 또는 부정에 가까운지를 나타낼 뿐, 구체적으로 어떤 감정이 포함되어 있는지를 나타내지는 않는다. 

 

- Magnitude : 0 이상의 양수로 표현되며, 한계값은 없다. 긍정 또는 부정 정서를 모두 포함한 텍스트의 전반적인 감정 정도를 나타낸다. score가 어떤 감정에 치우쳐져있는지를 판단하는 값이었다면, magnitude는 텍스트가 감정이 많이 담겨있는지 또는 별로 감정적이지 않은지(무미건조한지)를 알려준다. 매우 부정적인 텍스트와 매우 긍정적인 텍스트가 있다면 두 텍스트 모두 magnitude의 값이 높게 나올 것이다.

 

만약 여러 문장이 있을 때, 전체 문단의 score는 각 문장들의 score 값을 적절히 반영하여 정규화한 값이다. 예를 들어, 0.9의 score값을 가진 문장과 0의 score 값을 가진 문장이 합쳐진 전체 문단의 score는 0.4 정도로 나오는 것이다. 하지만 magnitude는 여러 문장이 있을 때 문장별 감정정도의 평균을 내는 것이 아니라 전부 더하게 된다. 0.9의 magnitude 문장과 0.4의 magnitude 문장이 있다면 전체 문단은 1.3의 magnitude를 갖게 되는 것이다. 따라서 magnitude는 문장이 많아지고 길어질수록 커진다. 

 

score와 magnitude를 함께 제공하는 데에는 다 이유가 있다. 

score값이 0에 가까운 텍스트가 있다고 했을 때, score만을 제시해서는 그 텍스트의 감정이 정말 중립적인 것인지, 아니면 긍정적 감정과 부정적 감정이 적절히 혼합되어 있어서 전체적인 score가 0에 가까워진 것인지 판단할 수 없다.

하지만, magnitude가 제시된다면 이를 추측해볼 수 있다.

score 값이 0에 가깝고 magnitude도 작다면 이는 텍스트가 감정적이지 않으며 긍정 또는 부정에도 치우치지 않은 중립적인 텍스트임을 의미한다고 볼 수 있다.

score 값이 0에 가깝지만 magnitude가 크다면 이는 전체 텍스트는 감정이 많이 포함되어 있고, 긍정 부정 감정이 혼합되어 있어 전체 score는 0에 가까워졌다고 볼 수 있다.

 

score가 몇 점 이상이어야 긍정적이고, 몇 점 이하여야 부정적인지 그러한 절대적인 기준은 없다. 

어떤 데이터를 사용하느냐에 따라, 그리고 필요에 따라 적절한 임계치를 설정하여 판단하고 의도한 바대로 분석이 잘 되는지 점검하는 식으로 사용하는 것을 추천한다. 

 

 

감정 분석 기능 사용방법

구글 클라우드 플랫폼에서 제공하는 API를 사용하기 위해서는 프로젝트 생성 및 API 키 발급이 필요하다. 이러한 준비 과정에 대해서는 이 글에 정리가 되어있다 -> https://studying-cloud.tistory.com/5

 

1. 구글 클라우드 플랫폼( https://console.cloud.google.com )에 들어가서 로그인한다.

 

2. 메뉴의 API 및 서비스 -> 라이브러리로 들어간다.

 

 

3. Cloud Natural Language API를 클릭한다. 

검색창에 검색해서 찾아도 되고, 그냥 처음 라이브러리 화면에서 밑으로 내려서 바로 찾을 수도 있다. 

 

 

4. 사용 버튼 클릭

그럼 이렇게 API 사용 설정 됐다고 뜬다.

 

5. 상단의 Cloud Shell 활성화 버튼을 클릭

그럼 아래에 이렇게 Cloud Shell이 나온다.

 

6. Shell에 코드를 작성하여 원하는 문장의 감정을 분석한다.

감정분석을 위해서는 documents:analyzeSentiment REST 메서드에 POST 요청을 하고 분석을 원하는 텍스트를 제공해야 한다. 

다음 코드를 복사해서 필요한 부분만 바꿔서 사용하면 된다.

curl -X POST \
     -H "Content-Type: application/json; charset=utf-8" \
     --data "{
  'encodingType': 'UTF8',
  'document': {
    'type': 'PLAIN_TEXT',
    'content': '분석을 원하는 문장'
  }
}" "https://language.googleapis.com/v1/documents:analyzeSentiment?key=발급받은키"

분석을 원하는 문장이라고 쓰여진 곳에 분석을 원하는 문장을 삽입하면 되고, 발급받은키라고 쓰여진 곳에 발급받은 API키를 복사해서 붙여넣으면 된다. 

 

이 코드는 아래 문서에서도 확인할 수 있다.

https://cloud.google.com/natural-language/docs/analyzing-sentiment?hl=k 

 

감정 분석  |  Cloud Natural Language API  |  Google Cloud

의견 보내기 감정 분석 감정 분석은 주어진 텍스트를 조사하고 텍스트 내의 주도적인 감정적 의견을 식별하여 작성자의 태도가 긍정적인지, 부정적인지 또는 중립적인지를 판단합니다. 감정 분

cloud.google.com

다만, 이 문서 예제에서 사용한 코드는 액세스 토큰(access-token)을 따로 발급받아서 그걸 적어야 하는 코드인데 그러한 복잡한 절차를 생략하려면 위의 코드를 사용하는 걸 추천한다.  https://language.googleapis.com/v1/documents:analyzeSentiment url 주소에 ?key= 을 입력하고 발급받은 키를 적는 형태로 액세스 토큰을 대신한 것이다. 

 

그럼 한 번, "난 정말 행복해"라는 문장을 감정분석해보자!

 

<명령 코드>

 

<응답 내용>

documentSentiment는 전체 텍스트의 분석내용을 알려주는데 magnitude는 0.9, score도 0.9가 나왔다.

language는 따로 입력 언어를 설정하지 않아서 알아서 분석해줬는데 한국어로 잘 분석했고, sentences에는 각 문장별 값이 나오는데 위 예시에서는 한 문장밖에 없기 때문에 하나의 문장에 대해서만 나왔다. 

 

기타 다른 프로그램에 감정분석 API를 연동하고 싶을 때에도 위의 코드를 사용하는 환경에 맞게 적절히 수정하여 사용하면 된다!

 

연동을 위한 보다 자세한 사항은 아래 문서를 참고

https://cloud.google.com/natural-language/docs/reference/rest/v1/documents/analyzeSentiment?hl=k 

 

Method: documents.analyzeSentiment  |  Cloud Natural Language API  |  Google Cloud

Send feedback Method: documents.analyzeSentiment Analyzes the sentiment of the provided text. HTTP request POST https://language.googleapis.com/v1/documents:analyzeSentimentThe URL uses gRPC Transcoding syntax. Request body The request body contains data w

cloud.google.com

 

관련글 더보기

댓글 영역