Разбор примера: на самокатах!

Введение в AWS Boto на Python

Maksim Pecherskiy

Data Engineer

Постановка задачи

Самокаты

Введение в AWS Boto на Python

Постановка задачи

Самокаты

Введение в AWS Boto на Python

Данные

service_request_id image lat long public_description
93494 report_113439.jpg 32.723138 -117.128237 Hay un scooter electrico en sidewalk
101502 report_134938839.jpg 32.7077658 -117.1281408 This scooter helped me move a mattress!
101520 report_272819.jpg 32.77605567 -117.100004 There is a scooter blocking the sidewalk
101576 report_3722938.jpg 32.68899358 -117.0584723 I tripped on a stupid scooter
Введение в AWS Boto на Python

Конечный результат

Конечный результат

Введение в AWS Boto на Python

Конечный результат

Конечный результат

Введение в AWS Boto на Python

Конечный результат

Конечный результат

Введение в AWS Boto на Python

Конечный результат

Конечный результат

Введение в AWS Boto на Python

Конечный результат

Конечный результат

Введение в AWS Boto на Python

Инициализация клиентов boto3.

Инициализация клиента rekognition

rekog = boto3.client('rekognition',
                     region_name='us-east-1', 
                     aws_access_key_id=AWS_KEY_ID, 
                     aws_secret_access_key=AWS_SECRET)

Инициализация клиента comprehend

comprehend = boto3.client('comprehend',
                     region_name='us-east-1', 
                     aws_access_key_id=AWS_KEY_ID, 
                     aws_secret_access_key=AWS_SECRET)
Введение в AWS Boto на Python

Инициализация клиентов boto3

Инициализация клиента translate

translate = boto3.client('translate', 
                         region_name='us-east-1', 
                         aws_access_key_id=AWS_KEY_ID, 
                         aws_secret_access_key=AWS_SECRET)
Введение в AWS Boto на Python

Перевод всех описаний на английский

for index, row in df.iterrows():
    desc = df.loc[index, 'public_description']
    if desc != '':
        resp = translate_fake.translate_text(
          Text=desc, 
          SourceLanguageCode='auto', 
          TargetLanguageCode='en')
        df.loc[index, 'public_description'] = resp['TranslatedText']
Введение в AWS Boto на Python

Перевод всех описаний на английский

service_request_id image lat long public_description
93494 report_113439.jpg 32.723138 -117.128237 Electric scooter on sidewalk
101502 report_134938839.jpg 32.7077658 -117.1281408 This scooter helped me move a mattress!
101520 report_272819.jpg 32.77605567 -117.100004 There is a scooter blocking the sidewalk
101576 report_3722938.jpg 32.68899358 -117.0584723 I tripped on a stupid scooter
Введение в AWS Boto на Python

Определение тональности текста

for index, row in df.iterrows():
    desc = df.loc[index, 'public_description']
    if desc != '':
        resp = comprehend.detect_sentiment(
          Text=desc, 
          LanguageCode='en')
        df.loc[index, 'sentiment'] = resp['Sentiment']
Введение в AWS Boto на Python

Определение тональности текста

service_request_id image lat long sentiment public_description
93494 report_113439.jpg 32.723138 -117.128237 NEGATIVE Electric scooter on sidewalk
101502 report_134938839.jpg 32.7077658 -117.1281408 POSITIVE This scooter helped me move a mattress!
101520 report_272819.jpg 32.77605567 -117.100004 NEGATIVE There is a scooter blocking the sidewalk
101576 report_3722938.jpg 32.68899358 -117.0584723 NEGATIVE I tripped on a stupid scooter
Введение в AWS Boto на Python

Обнаружение самоката на изображении

df['img_scooter'] = 0
for index, row in df.iterrows():
    image = df.loc[index, 'image']
    response = rekog.detect_labels(
      # Specify the image as an S3Object
      Image={'S3Object': {'Bucket': 'gid-images', 'Name': image}}
    )
    for label in response['Labels']:
        if label['Name'] == 'Scooter':
        df.loc[index, 'img_scooter'] = 1
        break
Введение в AWS Boto на Python

Обнаружение самоката на изображении

service_request_id image img_scooter sentiment lat long public_description
93494 report_113439.jpg 1 NEGATIVE 32.723138 -117.128237 Electric scooter on sidewalk
101502 report_134938839.jpg 1 POSITIVE 32.7077658 -117.1281408 This scooter helped me move a mattress!
101520 report_272819.jpg 0 NEGATIVE 32.77605567 -117.100004 There is a scooter blocking the sidewalk
101576 report_3722938.jpg 1 NEGATIVE 32.68899358 -117.0584723 I tripped on a stupid scooter
Введение в AWS Boto на Python

Итоговый подсчёт!

Отбор строк с изображением самоката и негативной тональностью

pickups = df[((df.img_scooter == 1) & (df.sentiment == 'NEGATIVE'))]

num_pickups = len(pickups)

332 самоката!

Введение в AWS Boto на Python

Давайте потренируемся!

Введение в AWS Boto на Python

Preparing Video For Download...