
【5분 만에 이해하는 Foundry Tools 시리즈】 Azure Language의 감정 분석
요약
Azure Language의 감정 분석 기능을 활용하여 텍스트의 감정과 관점별 의견을 추출하는 방법을 설명합니다. Bicep을 이용한 환경 구축과 Entra ID 기반의 보안 인증 방식을 통해 키 없이 안전하게 API를 호출하는 가이드를 제공합니다.
핵심 포인트
- Azure Language를 통한 문서 및 문장 단위 감정 분석 방법
- 오피니언 마이닝을 활용한 대상어와 평가어 쌍 추출
- Bicep을 이용한 빠른 검증 환경 구축
- Entra ID 인증을 통한 보안 강화 및 키 관리 생략
이 기사에서 알 수 있는 것
Azure Language는 요약, 개체명 인식 (Named Entity Recognition), 질의응답 등 많은 기능을 가지고 있지만, 본 기사에서는 감정 분석 (Sentiment Analysis)에 주목합니다.
다음 3가지를 실행하며 Azure Language의 감정 분석을 이해할 수 있도록 해설합니다.
- Azure Language의 감정 분석 (Sentiment Analysis)이 무엇을 입력받아 무엇을 반환하는가
- 부속된 Bicep을 사용하여 검증 환경을 2개의 명령어로 구축하는 방법
- 일본어 텍스트를 문장 및 관점별로 판정하는 과정까지 (인증은 키를 가지지 않는 Entra ID 방식)
이용 시나리오
Azure Language의 감정 분석은 자유 기술 텍스트가 너무 많아 인력으로 다 읽을 수 없는 상황에서 효과적입니다. 구체적으로는 다음과 같은 케이스입니다.

Azure Language의 감정 분석이란
Azure Language 기능 중 하나로, 텍스트를 입력하면 positive / neutral / negative / mixed 라벨과 0~1 사이의 신뢰도 점수를 문서 단위와 문장 단위 모두에서 반환합니다.
오피니언 마이닝 (Opinion Mining, 관점 기반 감정 분석)을 활성화하면, 문장 속에서 대상어 (요리, 접객 등)와 그에 대한 평가어 (최고, 끔찍함 등)의 쌍을 추출합니다. "전체적으로는 부정적이지만, 요리에 대해서는 긍정적"과 같은 내역을 파악할 수 있습니다.
데모 영상
실제로 동작하는 모습입니다. 일본어 문장을 넣으면 문서 전체의 감정과 관점별 찬반이 반환됩니다.

검증 방법
리소스 생성
검증용 Bicep과 샘플 코드는 아래 리포지토리에 있습니다.
Bicep의 내용 (리소스 정의 부분)은 다음과 같습니다.
키를 가지지 않고 인증하기
AIServices 리소스는 기본적으로 키 인증이 비활성화(disableLocalAuth=true)되어 있는 경우가 있습니다. 그 상태에서 키를 취득하려고 하면 다음과 같이 실패합니다.
(BadRequest) Failed to list key. disableLocalAuth is set to be true
키 인증을 다시 활성화하는 방법도 있지만, Entra ID 인증을 사용하면 키를 코드나 .env 파일에 두지 않아도 됩니다. 자신의 계정에 데이터 플레인 (Data Plane) 역할을 한 번만 할당합니다.
OID=$(az ad signed-in-user show --query id -o tsv)
az role assignment create \--assignee $OID \...
.env에는 엔드포인트(Endpoint)만 작성합니다.
LANGUAGE_ENDPOINT=https://<accountName>.cognitiveservices.azure.com/
최소 코드로 호출하기
포인트는 DefaultAzureCredential()을 전달하는 것만으로 키가 필요 없다는 점과, show_opinion_mining=True로 관점 추출을 활성화했다는 점입니다.
pip install azure-ai-textanalytics azure-identity
az login
python quickstart.py
실제 출력 결과입니다.
[0] 문서 전체: negative (pos=0.00, neu=0.00, neg=1.00)
- 문장: negative (pos=0.00, neu=0.00, neg=1.00) "요리는 최고였지만, 접객 태도가 끔찍해서 아쉬웠습니다."
대상: 요리(positive) <- 평가: 최고(positive)
...
문서 전체는 negative이지만, 오피니언 마이닝은 "요리=최고(positive)"와 "접객·태도=아쉬움(negative)"을 나누어 파악하고 있습니다. 전체 라벨만 보고 있으면 긍정적인 관점을 놓칠 수 있으므로, 관점별로 집계하고 싶을 때는 이 정도의 입도가 필요합니다.
참고로 "접객 태도"라는 한 단어에서는 접객과 태도라는 두 개의 대상어가 나타나며, 둘 다 평가어 아쉬움을 공유합니다. 복합적인 표현은 대상어가 분할되어 동일한 평가어에 연결될 수 있으므로, 대상어별로 건수를 집계할 때는 중복을 의식해야 합니다.
Tips
- 키 취득이
disableLocalAuth
로 실패한다면, 다시 활성화하는 것보다 Entra ID 인증 쪽으로 맞추는 것이 더 빠릅니다. Cognitive Services User 역할을 한 번 할당하면 DefaultAzureCredential()만으로 통과할 수 있으며, 키를 보관할 필요도 없습니다. - 전체 라벨만 보면 긍정적인 관점을 놓칠 수 있습니다. 관점별로 집계하고 싶을 때는 show_opinion_mining=True를 추가하여 문장 및 관점별 점수를 확인하세요. - 요금은 1,000 텍스트 레코드 단위(1 레코드 = 1,000자)입니다. 긴 문장을 그대로 던지면 분할 과금되므로, 불필요한 공백이나 정형 문구를 제거한 뒤 보내면 비용을 아낄 수 있습니다.
요약
감정 분석 (Sentiment Analysis)은 텍스트를 찬반 라벨과 관점별 이유로 분해하는 기능입니다. Bicep 템플릿이 있다면 몇 분 만에 테스트할 수 있습니다. 인증은 키를 가지지 않는 Entra ID 방식을 기본으로 설정해 두면 운영과 보안 모두 편리해집니다.
참고가 되길 바랍니다.
참고
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기