Дата публикации Jun 9, 2017
Вчасть 1Мы настроили API YouTube для Python и научились делать простые запросы ключевых слов для видео. Теперь мы хотим сделать еще один шаг вперед.
Запросы по ключевым словам отлично подходят для предварительного анализа, но они слишком широки, чтобы делать какие-либо значимые выводы по предмету, который мы изучаем. Вместо этого давайте попробуем новую технику: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 крупнейших городов США.
Итоговые данные для каждого города отражают количество уникальных видео, загруженных в этом радиусе. Я был немного удивлен тем, насколько маленькими оказались эти цифры ... но опять же, я никогда не видел прядильщика в реальной жизни.
Спасибо за чтение!
© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map