Представьте, если бы вы могли получить краткий обзор видео, просмотреть его, чтобы определить, стоит ли его смотреть, извлечь пошаговые инструкции, чтобы вы могли легко следовать им, и в конце создать тест, чтобы проверить свое понимание. Разве это не было бы здорово?
В этом уроке мы построим именно это!
Спасибо Виктория Семаан
Обзор решения
Этот урок состоит из 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. Заинтересованы в Взлом роста? Ознакомьтесь с разделом Схема.