Как стать автором
Обновить

Краткий гайд создания telegram-бота для оценки релевантности YouTube-видео на основе семантического анализа комментариев

Уровень сложностиПростой

Telegram-бот для оценки качества YouTube-видео на основе анализа комментариев

Привет, Хабр!

Сегодня я хочу поделиться с вами своим опытом разработки Telegram-бота, который помогает оценивать качество YouTube-видео на основе анализа комментариев пользователей. Этот бот предназначен для личного использования, и каждый из вас может запустить и настроить его под свои нужды.

Предыстория

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

Я решил создать инструмент, который автоматизирует процесс оценки видео, анализируя комментарии пользователей. Так появился этот Telegram-бот, который собирает комментарии, переводит их и определяет тональность, предоставляя пользователю некоторую объективную оценку видео.

Что делает бот

Бот принимает ссылку на YouTube-видео и возвращает процентную оценку его качества, основанную на анализе комментариев. Он использует модели машинного обучения для перевода и анализа тональности, обеспечивая точные и быстрые результаты.

Как это работает

1. Получение комментариев

Бот использует YouTube Data API для извлечения комментариев к заданному видео. Для ускорения работы и повышения точности анализа он собирает до 100 уникальных и самых популярных комментариев, удаляя дубликаты. Для этого необходимо получить соответствующий ключ на https://developers.google.com/.

2. Перевод комментариев

Так как комментарии к видео могут быть на различных язык, для унификации анализа все комментарии предварительно переводятся на английский язык с помощью модели Helsinki-NLP/opus-mt-mul-en из библиотеки Hugging Face Transformers. Он поддерживает перевод с нескольких десятков языков и достаточно быстра. Это позволяет использовать единую модель для анализа тональности.

from transformers import pipeline

class Translator:
    def __init__(self):
        self.translator = pipeline('translation', model='Helsinki-NLP/opus-mt-mul-en')

    def translate(self, texts):
        return [self.translator(text)[0]['translation_text'] for text in texts]

3. Анализ тональности

Переведенные комментарии анализируются с помощью модели nlptown/bert-base-multilingual-uncased-sentiment, которая присваивает каждому комментарию оценку от 1 до 5 звезд. Модель изначально была дообучена для анализа настроений в обзорах товаров, но подходит для оценки тональности.

class SentimentAnalyzer:
    def __init__(self):
        self.analyzer = pipeline('sentiment-analysis', model='nlptown/bert-base-multilingual-uncased-sentiment')

    def analyze(self, texts):
        results = []
        for text in texts:
            result = self.analyzer(text)[0]
            stars = int(result['label'].split()[0])
            results.append(stars)
        return results

4. Вычисление общей оценки

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

5. Взаимодействие с пользователем

Бот реализован с помощью библиотеки python-telegram-bot. Пользователь отправляет ссылку на видео, бот обрабатывает её и возвращает результат. Вам понадобится создать своего бота и получить токен в телеграм , используя https://t.me/BotFather

def start(update, context):
    update.message.reply_text('Привет! Отправь мне ссылку на YouTube-видео, и я помогу оценить его качество.')

def handle_message(update, context):
    video_url = update.message.text
    video_id = extract_video_id(video_url)
    # Логика обработки видео и отправки результата

Как запустить бота самостоятельно

Вы можете запустить этого бота на своём компьютере или сервере и настроить его под свои потребности весь исходный код и зависимости находятся на гитхабе: https://github.com/alexbogatyrev/youtube_alternative_rating_bot.git

Шаг 1: Клонируйте репозиторий

git https://github.com/alexbogatyrev/youtube_alternative_rating_bot.git
cd youtube_alternative_rating_bot

Шаг 2: Установите зависимости

Создайте виртуальное окружение и установите необходимые библиотеки.

python3 -m venv venv
source venv/bin/activate  # Для Linux/MacOS
# .\venv\Scripts\activate  # Для Windows

pip install -r requirements.txt

requirements.txt:

python-telegram-bot>=20.0,<21.0
google-api-python-client
transformers
torch

Шаг 3: Настройте переменные окружения

Создайте файл .env и добавьте ваши ключи API.

TELEGRAM_BOT_TOKEN=ваш_токен_бота
YOUTUBE_API_KEY=ваш_ключ_youtube_api

Шаг 4: Запустите бота

python main.py

Настройка под свои нужды

  • Изменение количества комментариев: В файле youtube_service.py измените значение max_comments для получения большего или меньшего числа комментариев.

  • Замена моделей: Вы можете использовать другие модели перевода или анализа тональности из библиотеки Hugging Face.

  • Добавление функционала: Бот имеет модульную структуру, что позволяет легко добавлять новые возможности, такие как анализ описания видео или оценка по другим критериям.

Преимущества использования

  • Быстрый анализ: Экономит ваше время, предоставляя мгновенную оценку видео.

  • Персонализация: Возможность настроить бота под свои предпочтения и требования.

  • Приватность: Все данные обрабатываются локально, без передачи третьим лицам.

Заключение

Этот Telegram-бот является отличным примером того, как можно использовать современные технологии машинного обучения для решения практических задач. Он прост в использовании и настройке, а также может быть легко расширен дополнительными функциями.

Если вы заинтересованы, загляните в репозиторий на GitHub и попробуйте запустить бота самостоятельно.

Спасибо за внимание! Буду рад вашим отзывам и предложениям по улучшению бота.


Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.