반응형

감정 분석(Sentiment Analysis)을 위해 AWS Comprehend API를 사용하는 REST API를 구현해봅니다. 

익숙하지 않은 분야라 이상한 점이 있을 수 있습니다.



2021. 10. 2 - 최초작성




우선 Lambda 함수를 작성합니다.

 

AWS 관리 콘솔 사이트(https://aws.amazon.com/ko/console/ )에 접속하여  로그인 후,  왼쪽 상단에 보이는 서비스를 클릭합니다. 

 

 

서비스 목록에서 컴퓨팅 항목에 있는 Lambda를 클릭합니다. 

 

오른쪽 상단에 보이는 함수 생성 버튼을 클릭합니다. 

 

상단에 새로 작성이 선택된 상태에서 함수 이름을 적은 후, 런타임 Python 3.9로 변경합니다. 이제 오른쪽 하단에 보이는 함수 생성을 클릭합니다. 




다음 코드를 복사해서 붙여넣은 후, Deploy 버튼을 클릭합니다.

 

import json
import boto3

#Using boto3 to call the Comprehend API
client = boto3.client('comprehend')

#Lambda function to work with Comprehend
def lambda_handler(event, context):

    #Accessing data
    text = event['queryStringParameters']['Text']

    #Sentiment Analysis
    sentiment = client.detect_sentiment(Text = text, LanguageCode = 'ko') #API call for sentiment analysis
    sentRes = sentiment['Sentiment'] #Positive, Neutral, or Negative
    sentScore = sentiment['SentimentScore'] #Percentage of Positive, Neutral, and Negative
    print(sentRes)
    print(sentScore)

    #Entity Extraction
    entities = client.detect_entities(Text = text, LanguageCode = 'ko') #API call for entity extraction
    entities = entities['Entities'] #all entities
    print(entities)
    textEntities = [dict_item['Text'] for dict_item in entities] #the text that has been identified as entities
    typeEntities = [dict_item['Type'] for dict_item in entities] #the type of entity the text is
    print(textEntities)
    print(typeEntities)
   
   
    return {
        'statusCode': 200,
        'body': str(sentiment) + str(entities) #body returned from our function
    }






Test 버튼 옆에 있는 역삼각형 아이콘을 클릭하여 보이는 메뉴에서 Configure test event를 선택합니다.

 




이벤트 이름을 적은 후,  생성 버튼을 클릭합니다. 사용하지는 않습니다. 

 





트리거를 통해 이벤트를 전달받아 Lambda 함수가 실행됩니다.

여기에서는 API Gateway를 트리거로 사용하여 Lambda 함수에 대한 REST API를 생성합니다.  



트리거 추가를 클릭합니다.

 



API 게이트웨이를 선택합니다.

 




API 유형으로 REST API를 선택하고 보안열기를 선택한 후, 추가 버튼을 클릭합니다. 

 




이제 트리거 항목에 API 게이트웨이가 추가되었습니다. 

 






왼쪽 상단에 보이는 서비스를 클릭합니다. 

 

 

보안, 자격 증명 및 규정 준수 항목에 있는 IAM을 클릭합니다.

 



왼쪽 항목에서 역할을 클릭합니다.

 




목록에서 앞에서 추가했던 람다 함수를 선택합니다. 

 



정책 연결을 클릭합니다.

 




ComprehendReadOnly를 검색하여 체크 후, 정책 연결을 클릭합니다. 

 




왼쪽 상단에 보이는 서비스를 클릭합니다. 

 

 

서비스 목록에서 컴퓨팅 항목에 있는 Lambda를 클릭합니다. 




구성 항목을 클릭한 후, lambda-example-API 링크를 클릭하여 API Gateway 콘솔로 이동합니다.

 




실행 경로를 표시하기 위해 "ANY" 링크가 기본적으로 선택됩니다. "ANY" 지정은 API가 모든 HTTP 동사(GET, PUT, POST 등)를 허용함을 의미합니다. 이제 "메소드 요청" 링크를 클릭합니다. 

 




이벤트 객체에 쿼리 매개변수를 추가해야 합니다.  요청 검사기 옆에 보이는 연필 아이콘을 클릭합니다. 

 



본문, 퀴리 문자열 파라미터 및 헤더 검사 로 설정하고 업데이트 아이콘을 클릭합니다.

 



URL 쿼리 문자열 파라미터 옆에 있는 삼각형 아이콘을 클릭합니다.

 



쿼리 문자열 추가를 클릭합니다.

 




이름 란 Text를 적고 업데이트 아이콘을 클릭합니다.

 




필수 체크 박스를 체크합니다. 

 




메소드 실행을 클릭합니다.

 




테스트를  클릭합니다.  

 




메소드GET으로 변경하고 쿼리 문자열Text=”오늘은 서울이라 행복합니다” 를 입력합니다.

테스트 버튼을 클릭합니다. 

 




다음과 같은 실행 결과가 보여집니다. 로그 항목에서 좀 더 많은 정보를 볼 수 있습니다.

 





참고

 

https://stackify.com/aws-lambda-serverless/  

 

https://blog.runscope.com/posts/how-to-write-your-first-aws-lambda-function 

 

https://towardsdatascience.com/sentiment-analysis-entity-extraction-with-aws-comprehend-618a7bec60b8

 

https://blog.wisen.co.kr/pages/blog/blog-detail.html?idx=11993 

 

반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts