brunch

매거진 GCP

You can make anything
by writing

C.S.Lewis

by 하이프마크 Dec 31. 2021

GCP : Cloud Natural Language

GCP





구글 자연어 처리(Cloud Natural Language)는 구글 머신러닝을 이용해 텍스트의 구조와 의미를 파악하는 자연어 분석기 입니다. 


이를 통해 기사, 논문, 블로그 등 텍스트에서 다양한 정보들을 추출할 수 있습니다. 정보 뿐 아니라 감정 분석, 항목 분석, 항목 감정 분석, 콘텐츠 분류, 구문 분석 등 자연어 이해 기술을 활용해 마케팅에도 이용할 수 있다는 장점이 있습니다. 고객을 분석하거나 사용자들의 경험을 읽어 제품을 수정 및 보완할 수 있다는 거죠. 또한 다국어를 지원하기 때문에 언어의 차이도 신경쓰지 않아도 됩니다.


Natural Language 기능에는 다음과 같은 기능이 존재합니다.  


감정 분석은 텍스트를 읽어 그 안의 감정을 분석해 작성자의 태도가 긍정적인지 부정적인지 혹은 중립적인지를 파단합니다. 감정 분석은 analyzeSentiment 메서드를 통해 수행됩니다.

항목 분석은 텍스트에서 알려진 항목(유명 인사, 명소 등의 고유 명사와 식당, 경기장 등의 보통 명사)을 조사하고 해당 정보를 반환합니다. 항목 분석은 analyzeEntities 메서드를 통해 수행됩니다.

항목 감정 분석은 주어진 텍스트에서 알려진 항목(고유 명사와 보통 명사)을 조사하고, 항목에 대한 정보를 반환하고, 텍스트 내의 주도적인 감정적 의견을 식별하여 작성자의 태도가 긍정적인지, 부정적인지 또는 중립적인지를 판단합니다. 항목 분석은 analyzeEntitySentiment 메서드를 통해 수행됩니다.

구문 분석은 언어 정보를 추출하여 텍스트를 일련의 구문과 토큰으로 분해하고 심층 분석합니다. 구문 분석은 analyzeSyntax 메서드를 통해 수행됩니다.

콘텐츠 분류는 텍스트 콘텐츠를 분석하고 콘텐츠에 대한 콘텐츠 카테고리를 반환합니다. 콘텐츠 분류는 classifyText 메서드를 통해 수행됩니다.


그렇다면 Natural Language는 어떤 방식으로 요청 및 응답할까요? 


기본적으로 Natural Language API는 REST API이며, JSON 형태로 요청 및 응답합니다. 





document는 요청 데이터가 포함되어 있으며 type 문서 유형(HTML 또는 PLAIN_TEXT)

과 language (선택, 지정하지 않으면 자동으로 감지) 라는 하위필드로 구성됩니다. 참고로 지원되지 않는 언어는 JSON 응답에서 오류를 반환합니다.


contentgcsContentUri는 분석할 텍스트이거나 GCS 내 텍스트 콘텐츠를 가리키는 URI입니다.


encodingType는 필수항목으로 텍스트에 대한 반환된 문자 오프셋을 계산하는 인코딩 스키마입니다. 반드시 전달된 텍스트의 인코딩과 일치해야 합니다. 이 매개변수가 설정되지 않은 경우 요청이 오류를 반환하는 대신 모든 오프셋이 -1로 설정됩니다.


그럼 감정 분석 요청이 어떤 방식으로 이뤄지는지도 확인해봅시다.


감정 분석은 텍스트 내에서 보이는 태도를 판단하는 기능입니다. 이는 숫자 score 및 magnitude 값으로 표현됩니다.




documentSentiment는 문서의 전체적인 감정을 포함하며 아래와 같은 필드로 구성됩니다.

score는 감정을 나타내는 점수로 범위는 -1.0(부정적)에서 1.0(긍정적)까지입니다. 

magnitude는 감정의 강도를 나타내는 점수로 0.0에서 +inf까지이며 긍정에서 부정까지 전부 나타냅니다. score와 달리 magnitude는 정규화되지 않으며  텍스트 내의 각 감정 표현(긍정적 및 부정적 모두)이 텍스트 magnitude에 반영됩니다. 따라서 긴 텍스트 블록일수록 값이  커집니다.

language에는 문서의 언어가 포함되며 설정하지 않을 시 자동으로 감지합니다.

sentences는 텍스트에서 추출한 문장 목록입니다.

sentiment은 감정 분석으로  위에서 설명한 score 및 magnitude 값을 포함하여 각 문장에 연결된 문장 수준의 감정 값이 포함됩니다.


따라서 위 이미지의 score 응답값은 0.2로 문서가 살짝 긍정적임을 나타내고, magnitude 응답값은 3.6으로 문장의 길이에 대비해 상당히 감정적이라는 점을 나타냅니다.


그렇다면 이 감정 분석의 값을 어떻게 정확히 해석할 수 있을까요. 먼저 다음 차트를 봐주세요.





Natural Language API는 문서에서 긍정적 감정과 부정적 감정을 구분하기는 하지만, 구체적으로 어떠한 감정인지는 식별하지 않습니다


예를 들어 ‘화가 난다’와 ‘슬프다’는 모두 부정적 감정으로 간주됩니다. 하지만 Natural Language API는 ‘화가 난’ 것으로 보이는 텍스트 또는 ‘슬퍼’ 보이는 텍스트를 분석할 때 텍스트의 감정의 부정적이라는 것만 표시할 뿐 ‘슬프다’거나 ‘화가 났다’라고 표시하지 않습니다.


따라서 중립적 점수(0.0 근처)의 문서는 감정적 콘텐츠가 많거나 복합적 감정이 포함되어 긍정적 값과 부정적 값이 서로를 상쇄시키는 문서일 수 있습니다. 이럴 경우 magnitude 값을 사용해 구분할 수 있습니다. 문서가 실제로 감정 중립적이라면 magnitude 값이 낮지만 복합적 감정이 포함되어 있는 문서는 이 값을 높게 측정합니다.


이런 형태로 Cloud Natural Language API를 이용해 텍스트를 항목 분석 응답, 항목 감정 분석, 구문 분석, 콘텐츠 분류 해볼 수 있습니다.


이처럼 구글 자연어 처리(Cloud Natural Language)는 따로 하나하나 텍스트를 읽어가며 분석하지 않아도 머신러닝을 통해 간단히 텍스트 분석을 수행할 수 있습니다. 게다가 커스텀 항목 추출을 사용하면 따로 분석을 하기 위해 시간이나 비용을 들이지 않고도 표준 언어 모델로는 식별할 수 없는 전문적인 항목 역시 분석이 가능합니다.


본격적으로 사용하기 전 기능이 궁금하시다면 이 페이지를 방문하셔서 데모를 한번 사용해보세요.





이런 형태로 분석해주는 걸 미리 확인할 수 있습니다. 물론 한국어도 가능합니다. 상당히 유용한 기능이겠죠.


하이프마크에서는 기업의 웹앱로그데이터의 클라우드 적재와 ETL 파이프라인 구성 그 외 클라우드 내 데이터분석 환경 구축 및 분석 시각화 서비스를 함께 제공하고 있습니다.


AWS, GCP등 클라우드 이전 매니지드서비스 및 웹앱로그데이터 태깅 적재 관련 문의사항이 있으시면 하이프마크에 문의 주세요


감사합니다. 



참조 : https://cloud.google.com/natural-language

https://cloud.google.com/natural-language/docs/basics

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari