25/02/2024

Usando IA para aprender mais fácil com vídeos do YouTube

O YouTube oferece acesso gratuito às melhores palestras de eventos internacionais renomados. Assim, as principais limitações que enfrento para aproveitar tanto conteúdo de qualidade são minha capacidade e o tempo disponível, que está cada vez mais escasso.

Felizmente, utilizando criatividade, conhecimentos em Python e o Jupyter Notebook, consigo otimizar o tempo para capturar a essência do conteúdo de cada palestra.

Obtendo os metadados de um vídeo do YouTube

Assumindo que você tem Python instalado e Jupyter funcionando, começo um novo notebook instalando os pacotes requests e bs4.

Python
! pip install --upgrade --quiet  requests bs4

O código que segue consegue extrair, a partir de um link, o título do vídeo, seu código e o nome do canal onde está publicado. Ele faz isso dividindo a URL para obter o código do vídeo, enviando uma solicitação para a URL, e, se bem-sucedido, analisa o HTML para encontrar os metadados do vídeo e do canal.

Python
import requests
from bs4 import BeautifulSoup

# URL do vídeo no YouTube
video_url = 'https://www.youtube.com/watch?v=GYJ77F_8kq0'

# Extrai o código do vídeo da URL
video_code = video_url.split('=')[-1]

# Faz a solicitação para a página do vídeo
response = requests.get(video_url)

# Se a solicitação foi bem-sucedida
if response.status_code == 200:
    # Analisa o HTML da página
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Extrai o nome do vídeo
    # O título geralmente está dentro de uma tag <meta> com o atributo name="title"
    video_title = soup.find('meta', {'name': 'title'})['content']
    
    # Extrai o nome do canal
    # O nome do canal geralmente está dentro de uma tag <meta> com o atributo itemprop="channelId"
    channel_name = soup.find('link', {'itemprop': 'name'})['content']
    
    print(f'Nome do vídeo: {video_title}')
    print(f'Código do vídeo: {video_code}')
    print(f'Canal: {channel_name}')
else:
    print('Falha ao fazer a solicitação para a página do vídeo.')

Executando o código, obtenho, os dados que desejo.

Plaintext

Nome do vídeo: "Picasso, Geometry, Jupyter" by Ryan Herr
Código do vídeo: GYJ77F_8kq0
Canal: Strange Loop Conference

Obtendo a transcrição de um vídeo do YouTube

Já tenho os metadados de um vídeo, agora, desejo obter a transcrição. Para isso, vamos utilizar o pacote youtube-transcript-api.

Python
! pip install --upgrade --quiet youtube-transcript-api

O código para obter a transcrição é bem simples.

Python
from youtube_transcript_api import YouTubeTranscriptApi

transcript = YouTubeTranscriptApi.get_transcript(video_code)
full_text = ' '.join([entry['text'] for entry in transcript])
print(full_text)

O resultado é a transcrição do vídeo que o YouTube disponibiliza para gerar legendas. É importante observar, no entanto, que nem todos os vídeos possuem transcrição.

Plaintext
hi I'm Ryan her and this talk is about Picasso and programming in 1945 Picasso 
created a series of bulls where he started with a fairly realistic bull like you see 
on the left and through a gradual progressive process he deconstructed the bull abstracting
it to its essence to a simplified geometric form so in 1945 Picasso did that in 2010 an 
anonymous illustrator posted a meme on tumblr and reddit how to draw an owl again we see a 
transition between two states step one draw some circles step two draw the rest of the owl
so the interesting thing when we compare these two sets of images well they're moving in
opposite directions right the the owl is moving from simple to detailed but the bull Picasso's Bulls actually moved in the opposite direction it went from more complex more detailed to 
...

Preparando a interação com a transcrição e com os metados usando IA

Agora que temos a transcrição do vídeo, podemos utilizar a API da OpenAI para “conversar” com a transcrição obtendo as informações que desejamos. Para isso, irei utilizar LangChain para facilitar a interação. Vamos instalar os pacotes langchain, langchain-openai, langchain-core e langchain-community.

Python
! pip install --upgrade --quiet langchain langchain-openai langchain-core langchain-community

O código monta um modelo de prompt com os metadados e com a transcrição que obtemos anteriormente e a solicitação do usuário. Utilizo um modelo da OpenAI com uma janela de 128K que permite tratamento da transcrição completa, sem perdas. Também crio uma função helper para o modelo.

Python
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

gpt4 = ChatOpenAI(model_name="gpt-4-0125-preview",temperature=0)

chat_with_document = ChatPromptTemplate.from_template(f"""
O texto que segue é uma transcrição do vídeo 
intitulado {video_title} disponível no canal {channel_name}

Leia o texto atentamente e realize da forma mais completa 
possível a tarefa também indicada abaixo.
Use, na resposta, apenas informações contidas no texto, 
sem adicionar, em hipótese alguma, qualquer informação adicional.

Você responde em português, usando linguagem simples, com 
vocabulário simples. Estrutura seu texto em
frases curtas, em parágrafos com não mais do que 300 caracteres.

TEXTO:
{{text}}

TAREFA:
{{task}}

SUA RESPOSTA:
""")

output_parser = StrOutputParser()

chat_with_document_chain = chat_with_document | gpt4 | output_parser

def do(task):
    result = chat_with_document_chain.invoke({"text": full_text, "task": task})
    print(result)
    return result

Obtendo um resumo e outras informações relevantes

Tudo pronto! Agora, vamos estudar. Comecemos, com um bom resumo.

Python
summary = do("Forneça-me um resumo detalhado do que é discutido no vídeo.")

O resultado é um resumo, em português, do conteúdo que está na transcrição, que está em inglês.

Plaintext
O vídeo apresentado por Ryan Herr aborda a relação entre a arte de Picasso, a 
programação e a busca pela simplificação e abstração tanto na arte quanto no 
software. Em 1945, Picasso criou uma série de imagens de touros, começando 
com uma representação realista e, progressivamente, simplificando-a até chegar 
a uma forma geométrica simplificada. Esse processo de abstração de Picasso é 
comparado a um meme de 2010 sobre desenhar uma coruja, mostrando a dificuldade 
de simplificar ou detalhar imagens.

Ryan Herr explora como o processo de Picasso pode ser aplicado ao 
desenvolvimento de software e matemática, onde a busca por abstrações concisas 
e elegantes é constante. Ele menciona que Picasso, antes de criar sua série de 
touros, enfrentou um bloqueio criativo enquanto trabalhava em outra pintura, 
"Charnel-House". Picasso expressou o desejo de poder trabalhar em estados 
progressivos sem finalizar a tela, algo que ele conseguiu explorar com a 
série de touros usando a litografia, uma técnica que permite fazer alterações.

Herr utiliza papel vegetal para entender o processo de Picasso, traçando as 
mudanças entre os estados dos touros. Ele então usa programação para analisar 
computacionalmente essas mudanças, criando representações coloridas que mostram 
o que foi adicionado, removido ou mantido entre cada estado. Esse processo 
revela que inicialmente Picasso adicionou detalhes ao touro, mas progressivamente 
simplificou a imagem, removendo elementos até chegar a uma forma quase linear.

Explorando ainda mais, Herr utiliza o algoritmo de simplificação de linhas 
Douglas-Peucker para tentar recriar a abstração de Picasso computacionalmente, 
resultando em uma forma que, embora diferente, oferece insights sobre o processo 
de simplificação. Ele discute a dificuldade de capturar a abstração única de Picasso, 
que combina elementos de abstração pictórica e icônica.

Por fim, Herr reflete sobre como a exploração computacional do processo de Picasso 
não apenas oferece uma nova compreensão da arte de Picasso, mas também pode inspirar 
desenvolvedores de software e matemáticos a enfrentar bloqueios criativos, sugerindo 
que começar com uma versão mais complexa e simplificá-la progressivamente pode ser 
uma estratégia eficaz para superar desafios criativos.

E esse foi só o começo…

Para interagir com outra palestra, basta-me substituir o link do vídeo que quero estudar e executar novamente o código.

A produção de resumos qualificados assim facilita a produção de anotações e me permite saber rapidamente quando interesse tenho em assistir uma palestra ou não.

Deixe seu comentário

Subscribe
Notify of
0 Comentários
Oldest
Newest Most Voted
Feedbacks interativos
Ver todos os comentários

Curso Reputação e Marketing Pessoal

Masterclasses

01

Introdução do curso

02

Por que sua “reputação” é importante?

03

Como você se apresenta?

04

Como você apresenta suas ideias?

05

Como usar Storytelling?

06

Você tem uma dor? Eu tenho o alívio!

07

Escrita efetiva para não escritores

08

Como aumentar (e manter) sua audiência?

09

Gatilhos! Gatilhos!

10

Triple Threat: Domine Produto, Embalagem e Distribuição

11

Estratégias Vencedoras: Desbloqueie o Poder da Teoria dos Jogos

12

Análise SWOT de sua marca pessoal

13

Soterrado por informações? Aprenda a fazer gestão do conhecimento pessoal, do jeito certo

14

Vendo além do óbvio com a Pentad de Burkle

15

Construindo Reputação através de Métricas: A Arte de Alinhar Expectativas com Lag e Lead Measures

16

A Tríade da Liderança: Navegando entre Líder, Liderado e Contexto no Mundo do Marketing Pessoal

17

Análise PESTEL para Marketing Pessoal

18

Canvas de Proposta de Valor para Marca Pessoal

19

Método OKR para Objetivos Pessoais

20

Análise de Competências de Gallup

21

Feedback 360 Graus para Autoavaliação

22

Modelo de Cinco Forças de Porter

23

Estratégia Blue Ocean para Diferenciação Pessoal

24

Análise de Tendências para Previsão de Mercado

25

Design Thinking para Inovação Pessoal

26

Metodologia Agile para Desenvolvimento Pessoal

27

Análise de Redes Sociais para Ampliar Conexões

Lições complementares

28

Apresentando-se do Jeito Certo

29

O mercado remunera raridade? Como evidenciar a sua?

30

O que pode estar te impedindo de ter sucesso

Recomendações de Leituras

31

Aprendendo a qualificar sua reputação do jeito certo

32

Quem é você?

33

Qual a sua “IDEIA”?

34

StoryTelling

35

Você tem uma dor? Eu tenho o alívio!

36

Escrita efetiva para não escritores

37

Gatilhos!

38

Triple Threat: Domine Produto, Embalagem e Distribuição

39

Estratégias Vencedoras: Desbloqueie o Poder da Teoria do Jogos

40

Análise SWOT de sua marca pessoal

Inscrição realizada com sucesso!

No dia da masterclass você receberá um e-mail com um link para acompanhar a aula ao vivo. Até lá!

A sua subscrição foi enviada com sucesso!

Aguarde, em breve entraremos em contato com você para lhe fornecer mais informações sobre como participar da mentoria.

0
Quero saber a sua opinião, deixe seu comentáriox