본문 바로가기
Restful API

[Restful API] CLOVA Summary를 이용한 리뷰 요약 API 만들기

by coding_su 2023. 4. 3.

📝클로바 Summary를 이용한 리뷰 요약 API 만들기

CLOVA Summary ?
문서를 요약하고 핵심 문장을 추출해 주는 서비스
(https://www.ncloud.com/product/aiService/clovaSummary)

 

네이버 문서요약 API를 활용해 작성한 리뷰들을 요약해주는 API를 만들어보았다

 

우선 네이버 클라우드 플랫폼 ncloud.com 접속 후 로그인하여 (https://www.ncloud.com/)

우측 상단 콘솔(Console) 접속 하여 AI·NAVER API 검색 후 이동

 

결제수단을 등록하지 않은 경우 먼저 등록처리

 

Application 등록시 CLOVA Summary 서비스를 활성화시켜 생성

생성한 앱을 클릭하여 인증정보를 확인
Client ID (X-NCP-APIGW-API-KEY-ID) 와 Client Secret (X-NCP-APIGW-API-KEY) 정보를 메모장에 복사해준다

 

이제 이 복사한 값을 컨픽파일에 넣어서 코드에 사용해준다
아래는 내가 구현한 요약 결과를 리턴해주는 API 만들기 코드 예시이다

# 요약된 리뷰 가져오기
class ReviewSummaryResource(Resource):
    @jwt_required()
    
    def get(self,hotelId):

        try :
            connection = get_connection()

            query = '''SELECT content FROM reviews
                    where hotelId=%s;'''
            
            record = (hotelId,)
            cursor = connection.cursor(dictionary=True)
            cursor.execute(query,record)
            resultList=cursor.fetchall()
            contents = [r['content'] for r in resultList]
            all_content = ' '.join(contents)
            cursor.close()
            connection.close()
            
        except Error as e :
            print(e)
            cursor.close()
            connection.close()
            return{"result":"fail","error":str(e)}, 500
        
        # 문서 요약
        headers = {

            "X-NCP-APIGW-API-KEY-ID": Config.client_id,
            "X-NCP-APIGW-API-KEY": Config.client_secret,
            "Content-Type": "application/json"
        }
        # 한국어 설정
        language = "ko"

        url= "https://naveropenapi.apigw.ntruss.com/text-summary/v1/summarize" 
        summaryData = {"document":{
            "content":all_content},
            "option":{
            "language":language
            }
        }

        response = requests.post(url, data=json.dumps(summaryData), headers=headers)
        json_data = json.loads(response.text)

        if 'summary' in json_data:
            summary = json_data['summary']
            print(summary)
        else:
            print("Failed to get summary data")
            summary = ""  # 초기화 코드 추가
        
        return {"result" : 'success','summary':summary}, 200

댓글