데이터과학 삼학년

AutoML Natural Language 소개 본문

GCP

AutoML Natural Language 소개

Dan-k 2020. 5. 22. 19:51
반응형

Natural Language API

  • 텍스트에서 구문, 항목, 감정을 찾아 사전에 정의된 카테고리로 텍스트 분류

  • 감성, 문서 분류를 위한 문제에서 활용성이 높을 것으로 보임 

  • 커스텀 모델 

    • 학습 : 레이블이 지정되어 있는 데이터를 사용해야함

 

AutoML Natural Language

  • Natural Language api 기반의 분석 도구

  • 분류, 항목 추출, 감정 분석에 사용할 수 있음

    • 분류 모델은 문서를 분석하고, 문서에서 찾은 텍스트에 적용되는 콘텐츠 카테고리의 목록을 반환

    • 항목 추출 모델은 문서에 참조된 알려진 항목을 검사하고 텍스트의 해당 항목에 라벨을 지정

    • 감정 분석 모델은 문서를 검사하고 문서 내의 주도적인 감정적 의견을 식별하여 작성자의 태도가 긍정적인지, 부정적인지 또는 중립적인지를 판단

  • 데이터를 넣으면 자동으로 학습 80%, 검증 10%, 테스트 10%로 자동 분류하여 적용

  • 분류 

    • 최대 5000개의 레이블까지 커버 가능

  • 감정분석

    • 감정 점수 레이블은 0(부정적 감정), 1(중립적 감정), 2(긍정적 감정)로 지정

    • 레이블은 최대 10까지 사용 가능

    • 문서 분류의 경우, 각 문서에 최대 20개 레이블 포함 가능 (문서별 감정 분석)

    • 문서 내에서 감정 분류

  • 학습 데이터 만들기

    • CSV 파일의 이름에는 제한이 없지만 UTF-8로 인코딩되고 .csv 확장자로 끝나야 함

    • 파일은 프로젝트와 관련된 Google Cloud Storage 버킷에 저장

    • 데이터에 중복된 contents가 있으면...error 발생

  • 데이터에 head도 없어야 함

  • 데이터 10만개 이상 데이터로 사용할 수 없음

  • 데이터 예제 (sample)

    • 분류 모델

    • 항목 추출

    • 감정 분석

  • 지원 언어 확인 : 한국어 지원함(분류, 항목, 감정)

    • 분류, 감정 20개 언어, 항목 100개 언어

    • 분류, 항목, 감정 분석에 따라 지원언어가 다름 (20~100 여개 언어 지원)

  • 학습 시간

    • 분류 모델 : 평균 학습 시간은 6시간에서 최대 24시간까지 소요

    • 항목 추출 및 감성 분석 : 평균 학습 시간은 5시간에서 최대 6시간

 

네이버 영화 리뷰 데이터를 이용한 실습

  • 0 : 부정, 1: 긍정

  • AutoML 감정분석을 이용하여 분류

  • Process

  1. AutoML 데이터 셋 생성

  • GUI

  • code

    • metadata 설정에서 총 분류하고자 하는 감정이 만약 3개 이면, sentiment_max=2로 지정 (0, 1, 2)

    • 부정이면 0, 긍정일 수록 높은 숫자로 지정해야하며, 레이블은 연속된 integer 형태이여야함

 

 2. 데이터 불러오기

  • GUI

  • code

 

→ 데이터 불러온 결과 확인 가능

  • 자동으로 학습, 검증, 테스트 데이터 분리함

3. 모델 학습

  • custom model은 최대 2년의 수명기간

  • GUI

  • code

 

> 모델 이름은 dataset id 뒤에 임의의 숫자가 붙음

4. 모델 평가

  • GUI

 

  • code

 

 5. 테스트 및 적용 

  • GUI

  • predict 파일은 csv 파일을 지원하지 않음(gui에서) → 단일 텍스트만 분석 가능

    • pdf, tif, tiff 파일로 변환하여 넣어야함 

  • online predict

    • 긍정 테스트

  • 부정 테스트

 

  • code

    • 모델 배포 이후 실행

    • 예측할 데이터가 들어있는 GCS는 버킷의 등급이 coldline이면 안됨

      • standard,resional 이어야함

 

  • batch prediction은 코드로만 가능

    • 분류할 파일이 행당 하나씩 나열된 열이 한 개 있는 CSV 파일 지원

    • 최대 10,000개 문서 제출 가능, 프로젝트당 10개 동시 요청 가능

    • For Text Sentiment: CSV file(s) with each line having just a single column: GCS_FILE_PATH | TEXT_SNIPPET Any given text file can have size upto 128kB. Any given text snippet content must have 500 characters or less. 

Three sample rows: gs://folder/text1.txt “Some text content to predict” 

gs://folder/text3.pdf Supported file extensions: .txt, .pdf

 

    • batch prediction을 할 pred_test.csv 파일을 input_uri에 direct로 집어넣으면 안됨!!!

      • csv batch prediction에서 error → empty csv가 아닌데 이런 에러가 나서 batch prediction이 안됨

      • 해당원인을 조사하다 googleapis git에서 동일한 문제에 대해 질문한 글을 보았고, input_uri 는 파일의 리스트를 담고있는 .csv 파일이어야함을 확인 → 공식문서에는 설명 업데이트 안했다고 함

      • 즉, input_uri = ‘gs://text/pred_file_lst.csv’

      • 실제 분석할 file의 위치를 pred_file_lst.csv안에 담음

        • file은 txt, pdf 여야함!!! 

        • txt 파일은 한개의 row를 가져야함 한 파일당 결과 한개

        • 절대 csv 이면 안됨!!!!!!!!!

          • csv이면 None Internal error가 나옴

      • batchprediction의 결과는 output_uri 에 담김

 

 

BatchPredict could not start due to empty input CSV file. · Issue #21 · googleapis/python-automl

Environment details AutoML Natural Language batch predict (google.cloud.automl_v1.gapic.prediction_service_client.PredictionServiceClient.batch_predict) Ubuntu 16.04 3.7.5 google-api-core==1.16.0 g...

github.com

 

Types for Cloud AutoML API Client — google-cloud-automl documentation

For Image Classification: CSV file(s) with each line in format: ML_USE,GCS_FILE_PATH,LABEL,LABEL,… GCS_FILE_PATH leads to image of up to 30MB in size. Supported extensions: .JPEG, .GIF, .PNG, .WEBP, .BMP, .TIFF, .ICO For MULTICLASS classification type, a

googleapis.dev

  • 위에서 시키는 대로 했지만,,batch prediction에 시간이 하염없이…

  • AutoML Vison에서 확인한 결과, “소수의 이미지에서도 일괄 예측을 완료하는 데 최소 30분이 소요됩니다.“ 라고 document에 써있음

  • 분석 결과는 .jsonl 파일로 나옴

 

향후 적용 계획

  • AutoML api 를 이용해 양질의 데이터 10만건을 추출하여 모델을 학습시키고 일단위 예측 수행

  • 모델 학습 주기는 월 단위 혹은 대규모 업데이트 단위로 실행

  • 네이버 영화 리뷰로 학습한 모델로 감정분석한 결과, 꽤 잘 working 함

  • 관련 data 뿐만 아니라 감정을 나타낼 수 있는 다양한 텍스트 데이터를 수집하여 모델에 학습시켜도 적용 가능할 것으로 보임

 

출처






728x90
반응형
LIST

'GCP' 카테고리의 다른 글

AutoML TimeSeries forecasting  (0) 2020.06.02
Cloud Natural Language API (GCP)  (0) 2020.06.01
Dataflow SQL  (0) 2020.04.06
GCP AI-platform Stream Logs error  (0) 2020.02.22
Bigquery Table_Suffix 관련 error(적재되는 data type이 꼬였을 때)  (0) 2020.01.30
Comments