사례 연구: 스쿠터 처리하기!

Python으로 시작하는 AWS Boto

Maksim Pecherskiy

Data Engineer

문제 상황

스쿠터

Python으로 시작하는 AWS Boto

문제 상황

스쿠터

Python으로 시작하는 AWS Boto

데이터

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
Python으로 시작하는 AWS Boto

최종 결과물

최종 결과물

Python으로 시작하는 AWS Boto

최종 결과물

최종 결과물

Python으로 시작하는 AWS Boto

최종 결과물

최종 결과물

Python으로 시작하는 AWS Boto

최종 결과물

최종 결과물

Python으로 시작하는 AWS Boto

최종 결과물

최종 결과물

Python으로 시작하는 AWS Boto

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)
Python으로 시작하는 AWS Boto

boto3 서비스 클라이언트 초기화

translate 클라이언트 초기화

translate = boto3.client('translate', 
                         region_name='us-east-1', 
                         aws_access_key_id=AWS_KEY_ID, 
                         aws_secret_access_key=AWS_SECRET)
Python으로 시작하는 AWS Boto

모든 설명을 영어로 번역

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']
Python으로 시작하는 AWS Boto

모든 설명을 영어로 번역

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
Python으로 시작하는 AWS Boto

텍스트 감정 분석

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']
Python으로 시작하는 AWS Boto

텍스트 감정 분석

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
Python으로 시작하는 AWS Boto

이미지에서 스쿠터 감지

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
Python으로 시작하는 AWS Boto

이미지에서 스쿠터 감지

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
Python으로 시작하는 AWS Boto

최종 집계

스쿠터 이미지가 있고 감정이 부정인 행만 선택

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

num_pickups = len(pickups)

스쿠터 332대!

Python으로 시작하는 AWS Boto

연습해 봅시다!

Python으로 시작하는 AWS Boto

Preparing Video For Download...