랭체인으로 유튜브 요약하기

반응형

이 글은 LangChain을 사용하여 유튜브 자막을 다운로드하여 요약하는 방법을 설명합니다.

필요한 파이썬 패키지 설치

%pip install langchain openai tiktoken youtube-transcript-api pytube 

파이썬 패키지 import

from langchain.document_loaders import YoutubeLoader
from langchain.chat_models import ChatOpenAI
from langchain.chains.summarize import load_summarize_chain

OpenAI API Key 설정

import os

os.environ['OPENAI_API_KEY'] = 'sk-...'

유튜브 자막 다운로드

유튜브에서 제공하는 자막을 다운로드하여 요약할 것입니다. YoutubeLoader 패키지의 from_youtube_url 함수를 사용하면 유튜브 자막과 메타데이터를 다운로드 할 수 있습니다.

loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=T9m3MpZ7_kE", add_video_info=True)
result = loader.load()

유튜브 자막 요약하기

chain = load_summarize_chain(ChatOpenAI(temperature=0), chain_type="stuff", verbose=False)
chain.run(result)

(번역) 저자는 살바도르 달리의 초현실주의에 매료되어 광기, 광란, 창의성에 대한 인류의 사랑을 어떻게 이야기하는지 성찰합니다. 이 몽환적인 공간을 탐험하면 우리 자신에 대해 새로운 것을 발견할 수 있고, 참신함을 불러일으키는 엔진 또는 진실을 말하는 거짓말쟁이로서의 잠재력을 발견할 수 있다고 믿습니다. 저자는 이를 성장에 대한 거부이자 예술가, 시인, 광인의 영역에 머물고 싶은 욕망으로 보고 있습니다.

긴 영상의 유튜브 자막 요약하기

자막 텍스트가 너무 많은 경우 토큰 제한 4000을 넘어 버립니다. 이런 경우에는 다음 방법으로 요약합니다.

이번 예시에서는 약 30분짜리 유튜브 영상을 사용합니다.

loader = YoutubeLoader.from_youtube_url("https://www.youtube.com/watch?v=bqxQd42xRNc", add_video_info=True)
result = loader.load()

add_video_info=True 옵션을 사용하면 더 많은 정보를 가져올 수 있습니다.

자막의 토큰 길이를 계산해보면 4000이 넘습니다.

이런 경우에는 자막을 분할하여 요약해야 합니다. 이번 예시에서는 RecursiveCharacterTextSplitter를 사용하여 텍스트를 분할해보겠습니다… RecursiveCharacterTextSplitter는 의미적으로 가장 연관성이 강한 텍스트 조각으로 보이는 모든 단락을 가능한 한 길게 유지하려고 한다고 합니다. 청크 사이즈는 4000자로 분할합니다.

from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(chunk_size=4000)
docs = text_splitter.split_documents(result)

7개의 문서로 분할 되었습니다.

분할된 각 문서의 길이를 확인해보면 문자열 길이는 4000 이하이며, 토큰 수는 약 700~800개입니다.

이제 분할된 문서를 load_summarize_chain 함수에 넣고 요약을 해보겠습니다.

chain = load_summarize_chain(llm, chain_type="map_reduce", verbose=True)
chain.run(docs)

load_summarize_chain 함수에 verbose=True 옵션을 사용하면 요약하는 과정을 살펴볼 수 있습니다.


(요약) 기술과 창의성에 관한 강연자인 제이슨 실바는 기술이 인간의 한계를 뛰어넘고 정신 건강 위기를 극복하는 데 도움이 될 수 있다고 믿습니다. 그는 가상 현실, 바이오 해킹, 정신 활성 기술을 결합하여 트라우마를 치유하고 내면의 이야기를 다시 쓰는 '사이버 델릭 시대’라는 아이디어를 제안합니다. 실바는 우주와의 연결과 환경 보호의 중요성을 인식하는 에코델릭 의식을 옹호합니다. 그는 청중이 냉소주의를 넘어 매 순간 문앞에 있는 가능성의 공간을 받아들이고, 문자 그대로의 순진한 현실주의의 틀을 넘어 세상을 보는 방법으로 마술적 리얼리즘을 사용하도록 장려합니다.

7개로 분할된 텍스트를 각각 요약한 후, 이 7개의 요약을 다시 하나의 텍스트로 합쳐 요약하는 방법을 사용하기 때문에, 최종 요약이 완성되기까지 약간의 시간이 소요됩니다.

마치며

정보가 넘쳐나는 시대에 살고 있는 우리에게 시간은 정말 소중합니다. 하지만 바쁜 현대인들이 유튜브 영상을 처음부터 끝까지 시청하는 것은 쉽지 않아요. GPT를 사용하여 유튜브 영상을 자동으로 요약해준다면 정말 많은 시간을 아낄 수 있게 됩니다.


or

[카카오페이로 후원하기] [토스페이로 후원하기]

반응형