www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Часть 2. Использование API Python YouTube для Data Science

Дата публикации Jun 9, 2017

Вчасть 1Мы настроили API YouTube для Python и научились делать простые запросы ключевых слов для видео. Теперь мы хотим сделать еще один шаг вперед.

Запросы по ключевым словам отлично подходят для предварительного анализа, но они слишком широки, чтобы делать какие-либо значимые выводы по предмету, который мы изучаем. Вместо этого давайте попробуем новую технику:geoqueries,

Geoqueries

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

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

Но что, если есть некоторые географические различия, которые мы не учли? Что делать, если люди на восточном побережье США являются более восторженными поклонниками непоседы, чем люди на западном побережье?

Мы можем легко исследовать этот вопрос исследования, используя параметр запроса местоположения радиуса API YouTube. Этодополнительныйзапрос, который вернет широту и долготу видео, которые соответствуют указанным нами параметрам.

Однако, прежде чем мы начнем, важно указать на главный недостаток параметра location-radius: невсеВидео на YouTube содержит информацию о местоположении. На самом деле, я бы осмелился сказать, что большинство этого не делают - это дополнительная функция, которую пользователь может активировать.

Имея это в виду, давайте начнем!

1) Клонировать репозиторий GitHub

git clone https://github.com/spnichol/youtube_tutorial.git
cd mapping_tutorial

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

2) Изменитьyoutube_searchфункция

Чтобы выполнить поиск по местоположению, нам нужно добавить несколько дополнительных параметров в нашyoutube_searchфункция, расположенная вyoutube_videos.pyфайл. Эти параметрыместо расположенияа такжерасположение радиуса,

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

расположение радиусаПараметр, как вы уже догадались, это размер радиуса в милях или километрах (с максимальным значением 1000 км). В приведенном выше случае значение, передаваемое этому параметру, будет равно «25 км».

Для начала давайте добавим их в качестве необязательных аргументов вyoutube_searchфункция.

def youtube_search(q, max_results=50, order="relevance", token=None, location=None, location_radius=None):

Теперь мы можем добавить параметры вyoutube.search().list()метод включен в библиотеку YouTube Python.

def youtube_search(q, max_results=50, order="relevance", token=None, location=None, location_radius=None):
search_response = youtube.search().list(
q=q,
type="video",
pageToken=token,
order = order,
part="id,snippet",
maxResults=max_results,
location=location,
locationRadius=location_radius


).execute()

К сожалению, добавление этих параметров в функцию на самом деле не даст нам информацию о местоположении. Это только гарантирует, что видео, возвращенныеyoutube_searchФункция попадает в радиус, который мы указываем. Раздражает ... Я знаю.

3) Создатьgeo_queryфункция

Чтобы получить вкусности, нам нужно использоватьдругойyoutube.search().list(), но на этот раз мы пройдемrecordingDetailsа такжестатистикадляpartпараметр. Нам также нужно будет запустить нашbuildфункция, чтобы API знал, кто мы.

Для простоты давайте сделаем это с помощью отдельной функции, которую мы будем называтьgeo_query,

def geo_query(video_id):
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY)

video_response = youtube.videos().list(
id=video_id,
part='snippet, recordingDetails, statistics'

).execute()

return video_response

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

4) Проверьте нашgeo_queryфункция

Идите дальше и создайте новый файл Python, в котором мы напишем остальную часть кода для этого урока.

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

Давайте выполним пример запроса из Нью-Йорка, который я использовал выше.

import sys
sys.path.append('/home/you/youtube_tutorial/')
from youtube_videos import youtube_search
import pandas as pd
import json

test = youtube_search("spinners", location="40.730610, -73.935242", location_radius="50km")

Ваш вывод не должен выглядеть иначе, чем в предыдущем уроке - кортеж сnextPageTokenи результаты JSON нашего запроса.

Теперь мы можем действительно проверить нашиgeo_queryфункция. Выбрать случайныйVideoIDиз приведенных выше результатов JSON и используйте его в качестве параметра для функции.

geo_test = geo_query('r2GYzQvfARo')

Вывод должен выглядеть так:

Шутки в сторону?

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

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

location_dict = {"youID":[], "lat":[], "lon":[]}
for video in test[1]:
location_dict['youID'].append((video['id']['videoId']))
geo = geo_query(video['id']['videoId'])
location_dict['lat'].append(geo['items'][0]['recordingDetails']['location']['latitude'])
location_dict['lon'].append(geo['items'][0]['recordingDetails']['location']['longitude'])

Вывод

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

Если вы хотите узнать, как может выглядеть проект, посмотрите карту ниже. Интерактивная версия D3 доступна намой сайт, Я собрал данные для этой карты, выполнив геоквери «спиннер» с радиусом 25 км для каждого из 200 крупнейших городов США.

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

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

Проверьте интерактивную версию D3 намой сайт,

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map