Представьте, если бы вы могли получить краткий обзор видео, просмотреть его, чтобы определить, стоит ли его смотреть, извлечь пошаговые инструкции, чтобы вы могли легко следовать им, и в конце создать тест, чтобы проверить свое понимание. Разве это не было бы здорово?
В этом уроке мы построим именно это!
Спасибо Виктория Семаан

Обзор решения

Этот урок состоит из 4 частей:

  • Часть 1. Настройка: SageMaker Studio Lab и ключи API OpenAI
  • Часть 2 — Получение стенограммы видео YouTube
  • Часть 3. Обобщение и перевод стенограммы с использованием моделей машинного обучения.
  • Часть 4. Извлечение шагов и создание теста с использованием API ChatGPT

Давайте начнем!

Часть 1. Настройка: SageMaker Studio Lab и ключи API OpenAI

Для начала перейдите на целевую страницу Studio Lab и нажмите Request free account. Заполните необходимую информацию в форме и отправьте запрос. Вы получите электронное письмо для подтверждения адреса электронной почты. Следуйте инструкциям в письме.

Вы получите этот тип письма с подтверждением для своей учетной записи максимум через 7 дней.

В этом уроке мы будем использовать модель GPT-3.5 Turbo. Как показано в таблице ниже, стоимость вызовов API для этой модели составляет доли цента. С бесплатным кредитом в размере 5 долларов вы сможете провести сотни экспериментов бесплатно!

Часть 2. Получение стенограммы видео YouTube

Получив доступ к Studio Lab, войдите в Amazon SageMaker Studio Lab.
В разделе Мой проект вы можете выбрать тип вычислений и запустить среду выполнения проекта на основе экземпляра облачных вычислений. Studio Lab предоставляет возможность выбора между ЦП (центральным процессором), предназначенным для алгоритмов с интенсивными вычислениями, и ГП (графическим процессором), который рекомендуется для задач глубокого обучения, в частности, преобразования и компьютерного зрения.
Выберите экземпляр ГП; это значительно сократит время выполнения. Щелкните Запустить среду выполнения. Затем нажмите Открыть проект. При запуске среды выполнения вам может потребоваться решить головоломку CAPTCHA. Если в какой-то момент вам нужно сделать перерыв, нажмите Остановить выполнение, так как использование графического процессора ограничено 4 часами в день. Ваша работа будет сохранена.

Проект содержит файлы и папки, включая блокноты Jupyter. На изображении ниже показана программа запуска Studio Lab. Нажмите по умолчанию: Python в блокноте. Будет создана новая записная книжка.

Дадим блокноту имя и сохраним его. В меню Studio Lab выберите «Файл», выберите «Сохранить файл как», а затем выберите папку и дайте ей имя. Например, buid-ai.ipynb.

Во-первых, мы будем использовать pip для установки всех пакетов, необходимых для выполнения этого руководства. Скопируйте приведенный ниже код, вставьте и нажмите кнопку Play вверху, чтобы выполнить его.

#installing libraries

!pip install python-dotenv
!pip install openai
!pip install openai-whisper openai yt-dlp
!pip install youtube_dl
!pip install youtube_transcript_api
!pip install torchaudio
!pip install sentencepiece
!pip install sacremoses
pip install transformers

Далее давайте импортируем все необходимые зависимости. Скопируйте и запустите следующий код:

#importing dependencies

import re
from youtube_transcript_api import YouTubeTranscriptApi
import torch
import torchaudio
import openai
import textwrap
from transformers import pipeline

Мы выполнили все необходимые настройки!

Теперь мы готовы работать над второй задачей, отмеченной в обзоре решения, которая заключается в получении расшифровки видео с YouTube. Я использовал видео aws SageMaker
Вы можете выбрать другое видео и заменить ссылку в переменной youtube_url. Чтобы получить URL-адрес видео YouTube, скопируйте URL-адрес до знака «&», как показано на снимке экрана ниже.

Скопируйте и запустите следующий код:

# Specify the YouTube video URL
youtube_url = "https://www.youtube.com/watch?v=i4W7SfP6_38"

# Extract the video ID from the URL using regular expressions
match = re.search(r"v=([A-Za-z0-9_-]+)", youtube_url)
if match:
    video_id = match.group(1)
else:
    raise ValueError("Invalid YouTube URL")

# Get the transcript from YouTube
transcript = YouTubeTranscriptApi.get_transcript(video_id)

# Concatenate the transcript into a single string
transcript_text = ""
for segment in transcript:
    transcript_text += segment["text"] + " "
print(transcript_text)

Часть 3. Обобщение и перевод стенограммы с использованием моделей машинного обучения

Теперь, когда у нас есть полная стенограмма видео на YouTube, мы можем приступить к использованию моделей с открытым исходным кодом для задач обработки естественного языка, таких как обобщение, перевод и т. д. Эти модели помогут нам извлечь ценную информацию из стенограммы.
Предположим, что английский не является вашим родным языком, и вы хотите перевести стенограмму YouTube на испанский язык. Для этого мы можем использовать предварительно обученную модель машинного обучения, специально разработанную для перевода.

from transformers import pipeline

# Replace this with your own checkpoint
model_checkpoint = "Helsinki-NLP/opus-mt-en-es"
translator = pipeline("translation", model=model_checkpoint)

# Define the maximum sequence length
max_length = 512

# Split the input text into smaller segments
segments = [transcript_text[i:i+max_length] for i in range(0, len(transcript_text), max_length)]

# Translate each segment and concatenate the results
translated_text = ""
for segment in segments:
    result = translator(segment)
    translated_text += result[0]['translation_text']

print(translated_text)

Далее приступим к резюмированию видео с использованием предварительно обученной модели для текстового суммирования. В этом случае я буду использовать оригинальную стенограмму на английском языке. Однако, если вы решите продолжить работу с переведенной расшифровкой, вы можете заменить переменную transcript_text на переменную translated_text, содержащую переведенный текст.

from transformers import pipeline, AutoTokenizer

# Instantiate the tokenizer and the summarization pipeline
tokenizer = AutoTokenizer.from_pretrained('stevhliu/my_awesome_billsum_model')
summarizer = pipeline("summarization", model='stevhliu/my_awesome_billsum_model', tokenizer=tokenizer)

# Define chunk size in number of words
chunk_size = 200 # you may need to adjust this value depending on the average length of your words

# Split the text into chunks
words = transcript_text.split()
chunks = [' '.join(words[i:i+chunk_size]) for i in range(0, len(words), chunk_size)]

# Summarize each chunk
summaries = []
for chunk in chunks:
    # Summarize the chunk
    summary = summarizer(chunk, max_length=100, min_length=30, do_sample=False)

    # Extract the summary text
    summary_text = summary[0]['summary_text']

    # Add the summary to our list of summaries
    summaries.append(summary_text)

# Join the summaries back together into a single summary
final_summary = ' '.join(summaries)

print(final_summary)

Нам удалось получить краткое изложение содержания видео, исключая спонсорство, рекламу и другую постороннюю информацию.

Часть 4. Извлечение шагов и создание викторины с использованием API ChatGPT

Чтобы интегрировать и использовать модели Open AI в своем приложении, вам необходимо зарегистрировать учетную запись OpenAI. После того, как вы завершили процесс регистрации и регистрации, вам нужно будет создать ключ API. Этот ключ API необходим, поскольку он позволяет отправлять запросы в OpenAI из сторонних сервисов.

Перейдите на страницу Ключи OpenAI API и нажмите Create new secret key. Укажите имя, скопируйте ключ и сохраните его. Вы больше не сможете получить доступ к ключу!
замените значение в кавычках для переменной openai.api_key в своем коде.

def split_text_into_chunks(text, max_chunk_size):
    return textwrap.wrap(text, max_chunk_size)

openai.api_key = "provide your key here"
max_chunk_size = 4000

transcript_chunks = split_text_into_chunks(transcript_text, max_chunk_size)
summaries = ""

for chunk in transcript_chunks:
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-16k",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": f"{chunk}\n\nCreate short concise summary"}
        ],
        max_tokens=250,
        temperature=0.5
    )

    summaries += response['choices'][0]['message']['content'].strip() + " "

print("Summary:")
print(summaries)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k",
messages=[
{"role": "system", "content": "You are a technical instructor."},
{"role": "user", "content": transcript_text},
{"role": "user", "content": "Generate steps to follow from text."},
]
)

# The assistant's reply
guide= response['choices'][0]['message']['content']

print("Steps:")
print(guide)

Чтобы закончить наш эксперимент, давайте создадим викторину на основе материалов, рассмотренных в видео. Викторина оценит наше понимание содержания.

response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k",
messages=[
{"role": "system", "content": "You are a helpful assistant that generates questions."},
{"role": "user", "content": transcript_text},
{"role": "user", "content": "Generate 10 quiz questions based on the text with multiple choices."},
]
)

# The assistant's reply
quiz_questions = response['choices'][0]['message']['content']

print("Quiz Questions:")
print(quiz_questions)

Вы увидите викторину с 10 вопросами, созданными для проверки ваших знаний. Это может быть особенно полезно, если вы готовитесь к экзаменам. Вы можете изменить подсказку, чтобы объяснить правильные ответы.

Ссылка:



Спасибо Виктория Семан

Следуйте за мной:

Linkedin: https://www.linkedin.com/in/harshaljethwa/

GitHub: https://github.com/HARSHALJETHWA19/

Твиттер: https://twitter.com/harshaljethwaa

Спасибо!

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord. Заинтересованы в Взлом роста? Ознакомьтесь с разделом Схема.