В GraphAware одним из наших решений на основе Graph является платформа знаний, интеллектуальный механизм анализа, созданный на основе Neo4j.

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

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

Часть I. Получение данных

Youtube предлагает возможность загрузки транскрипции видео, если таковая имеется.
Получить эти данные можно разными способами, например, подключившись к API Google с помощью предпочитаемого вами клиента.

Я решил использовать гораздо более простое решение, используя youtube-dl. Этот инструмент Python предлагает вам возможность загружать эту информацию и многое другое с Youtube и других поставщиков видео, таких как Vimeo.

Для установки достаточно выполнить простой шаг, описанный в репозитории youtube-dl на Github.

Теперь вы можете скачать все доступные стенограммы одной командой:

mkdir transcripts && cd transcripts
youtube-dl --all-subs --skip-download 'https://www.youtube.com/channel/UCvze3hU6OZBkB1vkhH2lH9Q'

Параметр skip-download позволяет избежать использования инструмента для загрузки фактического видео, что может занять много времени и большой пропускной способности.

Предыдущая операция создаст по одному файлу .vtt для каждого видео, содержащего транскрипцию.

Формат WebVTT расшифровывается как Web Video Text Tracks, вы можете найти больше информации в Википедии, но содержимое файла выглядит так:

Часть II: Импорт в Neo4j

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

В качестве модели здесь может быть один узел Video на полную транскрипцию, который может служить вариантом использования для предоставления рекомендаций по общему содержанию видео. Но что, если мы захотим, чтобы рекомендации менялись с течением времени вместе с эволюцией содержания видео? Глядя на файл .vtt, мы видим, что у нас есть потенциал для обслуживания такого варианта использования, например, путем сохранения узла за кадром предложения.

Итак, приступим!

Во-первых, вам необходимо установить Neo4j вместе с плагинами GraphAware NLP, я не буду объяснять полный процесс их установки, так как он довольно хорошо описан в документации репозитория.

Плагин NLP поставляется с удобным парсером файлов .vtt, а также с утилитами для загрузки файлов из каталога для обработки:

Это создаст следующую модель данных для всех видео:

Часть III: Применение обработки естественного языка

Следующим шагом является применение обработки естественного языка к данным, следующие команды Cypher будут делать следующее:

  • Создайте конвейер NLP, который определяет анализ, который вы хотите применить к текстовым данным, например лемматизацию, извлечение именованных сущностей и т. Д.
  • Используйте алгоритм машинного обучения для извлечения ключевых слов из заголовков, ключевые слова - это слова или небольшие предложения (2 или 3 слова), которые лучше всего описывают конкретный заголовок.

Следующая суть - это полный список команд, поскольку вы можете видеть, что довольно легко извлечь информацию из текста с помощью очень нескольких строк Cypher:

Часть IV: Извлечение идей

Мы можем выполнить несколько запросов, чтобы извлечь из данных что-то значимое.

Какие компании упоминаются в видео?

А как насчет людей?

Какие 20 самых популярных ключевых слов описывают субтитры?

Часть V: Очень крутые запросы

Хороший запрос, который мы можем сделать, - это показать изменение ключевых слов поминутно по мере развития контента:

Основываясь на этом, мы можем предоставить рекомендации, основанные на содержании, но на этот раз кандидаты в рекомендации будут меняться каждую минуту с голосом говорящего:

Часть VI: SEO-оптимизация описаний видео (идея)

Если бы я также сохранил описания видео, которые мы также можем получить с помощью youtube-dl, мы сможем добиться SEO-оптимизации следующим образом:

  • Мы суммируем содержание стенограммы (для этого было бы лучше иметь аннотацию на полной стенограмме, а не на фрейме предложения или подписи)
  • Мы сравниваем ключевые слова, появляющиеся в релевантных предложениях TopX, с ключевыми словами, извлеченными из описания видео.
  • Мы находим предложения topX, которые содержат ключевые слова, не фигурирующие в описании, и предлагаем их SEO-экспертам для оценки.

С помощью наших плагинов вы можете легко выполнить суммирование с помощью следующего запроса:

И найдите верхние X предложений (здесь, во вступлении к видео Neo4j и Cypher):

Заключение

Комбинация сетевых наук с обработкой естественного языка предлагает удивительные возможности, а также простоту создания предметно-ориентированного языка поверх Neo4j's Cypher, а разработка таких приложений становится радостью.

Наш Enterprise Insight Engine идет дальше, применяя обработку естественного языка, машинное обучение и индексирование к структурированным и неструктурированным данным, предлагая предприятиям возможность находить и использовать данные в нужный момент для принятия правильных решений, будь то для расширения возможностей ваших сотрудников с историческими знаниями ( или сделайте каждого сотрудника своим лучшим сотрудником) или для аналитиков, у которых нет времени знать, где и в каком формате находится нужная им информация.

Не стесняйтесь обращаться к нам, если хотите узнать больше.

Если вы посещаете GraphConnect NYC в сентябре этого года, мы проводим полнодневный тренинг по пониманию естественного языка на основе графов с помощью Neo4j. Зарегистрируйтесь, пока есть свободные места!

Надеюсь, вам понравился этот пост в блоге, не стесняйтесь делиться и связываться со мной в Твиттере, если у вас есть какие-то вопросы.

Спасибо за прочтение !