Web/JavaScript

[CLOVA Summary / JS] 클로바 API로 텍스트 요약하기

gyujh 2023. 7. 29. 13:20

토이프로젝트로 GPT3.5 API의 text-davinci-003 모델을 이용해서 1시간 가량의 녹음파일을 보고서로 만드는 것을 해보려고 했었는데,

딥러닝에서 텍스트 토큰화를 할 때 한글의 토큰이 영어보다 2.5배 가량 많아져서 (한글의 조사, 어미 때문이라고 함) 저 많은 용량을 하긴 힘들거 같아서 gpt api를 사용하지 않기로 했다.

 

그래서 간단하게 네이버 클로바에서 제공하는 CLOVA Summary API를 사용해서 텍스트를 요약하는 기능을 구현했다.

 

CLOVA Summary API

완전 무료는 아니고, 1000회 호출까지 무료 (1회 호출에 2000자까지 요약)

테스트하기에는 충분한 횟수이기 때문에 좋은 것 같다.

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

 

이런식으로 요약해준다고 한다. (네이버 뉴스의 요약봇에 적용되었다고 함)

 

 

[VITO STT API] 음성파일을 텍스트로 변환하기

네이버의 클로바 노트의 stt와 요약 기능을 직접 만들어보았다. 음성 파일을 입력받아 요약본을 만들어 주는 간단한 웹사이트를 만들었다. 음성 파일을 텍스트로 변환하고, 변환한 텍스트를 기

gyujh.tistory.com

이전 포스트에서 구현한 부분에 추가적으로 구현했다.

 

summary api 호출
export async function getSummaryText(text) {
  const docObject = {
    content: text,
  };

  const OptionObject = {
    language: "ko",
    model: "general",
    tone: 1,
    summaryCount: 3,
  };

  const apiUrl = `https://naveropenapi.apigw.ntruss.com/text-summary/v1/summarize`;
  const corsProxyUrl = "http://localhost:8080/"; // cors-anywhere 프록시 URL

  // Option과 docObject를 합쳐서 요청으로 보낼 데이터 생성
  const requestData = {
    document: docObject,
    option: OptionObject,
  };

  // API 호출을 위한 요청 설정
  const requestOptions = {
    method: "POST",
    mode: "cors",
    headers: {
      "Content-Type": "application/json",
      "X-NCP-APIGW-API-KEY-ID": CLIENT_ID,
      "X-NCP-APIGW-API-KEY": CLIENT_SECRET,
    },
    body: JSON.stringify(requestData),
  };

  try {
    const response = await fetch(corsProxyUrl + apiUrl, requestOptions);
    const data = await response.json();
    console.log(data);
    return data; // 변환된 텍스트 결과 반환
  } catch (err) {
    console.log(err);
    return null;
  }
}

 

option을 넣을 수 있다. 몇 줄로 요약할지와, 뉴스/일반문서 선택, 말투 등을 옵션으로 줄 수 있다.

 

Summary API docs >

 

문서요약

 

api.ncloud-docs.com

 

 

테스트

 

이 유튜브 영상 음원을 추출해서 테스트해보았다.

 

생각보다 잘 요약된다.

새롭게 문장을 만든다기보다는 핵심을 찾아서 거의 그대로 가져오는 방식인 것 같아서 조금 아쉽다.

제한이 2000자라서 현재는 이 정도 이상의 분량을 요약할 수 없는데, 찾아보니 구현할 수 있다고 한다.

'Web > JavaScript' 카테고리의 다른 글

[VITO STT API / JS] 음성파일을 텍스트로 변환하기  (0) 2023.07.27