START UP & QUANT/Keras

2. Keras 자연어 처리 단어에 감정상태 나타내기(1)

나해진 2022. 1. 14. 13:59

 

어제 저녁에 치킨 하나 뜯으면서

생각한게 있습니다(뱃살왤케 쪗지X)

 

 

 

어떻게 하면 Keras를 쉽고 자세히 설명할수있을까

영포자가 침침한 눈으로 하나하나씩 문장 뜯으면서

이게 뭔 xx소리야 한적이 한 두번이 아니거든요

 

 

 

그러다 문득 생각한게 하나 있습니다

 

튜토리얼 코드를 보면서

 

하나하나씩 리뷰하는 형식으로 가면

어떨가하구요

 

그렇게 되면 저도 공부하는게 되고 여러분들도 

공부할수있어서 일석이조로 될거 같아서

좋을것 같습니다

 

그렇죠 그런거죠

 

가끔 대회에 출전하면 그런 코드를 가지고 와서 여러분들께

발빠르게 가져와 대졉해드리겠습니다(예 쉐프~~)

 

 

 

그럼 오늘 부터 케라스 공부들어가겠습니다

 

 

 

자 들어가자

우선 케라스 튜토리얼 사이트부터 알려드리겠습니다

Code examples (keras.io)

 

Keras documentation: Code examples

 

keras.io

 

여기에 들어가시게 되면 케라스 예제들공부할수있습니다

자연어처리 부터 컴퓨터비전 데이터예측통계 등등

다양한 것들 공부하실수있습니다

데이터위치까지 알려주고 콜랩 링크에다가 걸어두기 때문에

따로 찾으실필요 없습니다

 

 

많은 분들이 AI하고 싶은데 뭐부터 하면 될까요를 궁금해 하시는데

다양한 영역에서 케라스는 최소한의 기능들을 모두 구현가능해서

대부분의 영역을 맛보기 하실수있으십니다

 

 

 

훗날 대학원(가지마)가더라도 

 

분야를 결정하실때 충분히 도움이 되실거라 판단합니다

 

오늘 할거는 자연어처리 그중에서도 단어감정 상태 나타내기이고 다음엔

IMDB에서 데이터를 끌어다가 모델링하는 부분을 하겠습니다

 

text_classification_from_scratch - Colaboratory (google.com)  (콜랩주소)

 

import tensorflow as tf
import numpy as np

 

텐서플로우는 tf로 변수지정 numpy는 np로 변수지정을 했습니다

 

!curl -O https://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz
!tar -xf aclImdb_v1.tar.gz

curl은 파일을 가지고 오는거고 tar -xf는 가지고 온 파일을 압축해제 한다는 의미입니다

어디서 많이 본것 같은 명령어인것 같은데라고 할수있습니다

바로 리눅스 명령어와 같기 때문이죠 tar는 추가적으로 참고할만한 사이트 남겨 드리겠습니다

 

nota's story :: [리눅스] 리눅스 tar, gz 압축 및 해제 (tistory.com)

 

[리눅스] 리눅스 tar, gz 압축 및 해제

리눅스를 사용하다 보면, tar 혹은 tar.gz로 압축을 하거나 압축을 풀어야 할 경우가 자주 생긴다. 이를 처리하기 위해 리눅스에서는 tar 라는 명령어를 사용하게 되는데, tar 명령어도 여러가지 옵

nota.tistory.com

 

!ls aclImdb
!ls aclImdb/test
!ls aclImdb/train

모두 각 위치에 맞는곳에 파일을 확인하는 명령어 입니다

 

/train 이하의 파일을 확인하게 되면 pos(긍정적인것만 담김)와 neg(부정적인것만 담김)이 보이실겁니다

 

이 둘은 각각 리뷰를 포함하고 있습니다

 

!cat aclImdb/train/pos/6248_7.txt

pos밑에 있는 한 txt파일을 열게 되면은 

Being an Austrian myself this has been a straight knock in my face. Fortunately I don't live nowhere near the place where this movie takes place but unfortunately it portrays everything that the rest of Austria hates about Viennese people (or people close to that region). And it is very easy to read that this is exactly the directors intention: to let your head sink into your hands and say "Oh my god, how can THAT be possible!". No, not with me, the (in my opinion) totally exaggerated uncensored swinger club scene is not necessary, I watch porn, sure, but in this context I was rather disgusted than put in the right context.<br /><br />This movie tells a story about how misled people who suffer from lack of education or bad company try to survive and live in a world of redundancy and boring horizons. A girl who is treated like a whore by her super-jealous boyf

어쩌구 저쩌구 쏼라쏼라 라고 뜨게 됩니다

!rm -r aclImdb/train/unsup

그 외에 있는건 필요없는거니 전부 제거해줍시다

 

 

자 이제 다음부터가 훈련을 시킬 혹은 그 대상을 받아들이는 일련의 과정이 필요하게 됩니다

 

batch_size = 32
raw_train_ds = tf.keras.preprocessing.text_dataset_from_directory(
    "aclImdb/train",
    batch_size=batch_size,
    validation_split=0.2,
    subset="training",
    seed=1337,
)
raw_val_ds = tf.keras.preprocessing.text_dataset_from_directory(
    "aclImdb/train",
    batch_size=batch_size,
    validation_split=0.2,
    subset="validation",
    seed=1337,
)
raw_test_ds = tf.keras.preprocessing.text_dataset_from_directory(
    "aclImdb/test", batch_size=batch_size
)

print(f"Number of batches in raw_train_ds: {raw_train_ds.cardinality()}")
print(f"Number of batches in raw_val_ds: {raw_val_ds.cardinality()}")
print(f"Number of batches in raw_test_ds: {raw_test_ds.cardinality()}")

여기서 말하는 batch_size는 앞으로 수도 없이 보게될 변수입니다

 

batch_size란 몇개의 관측지를 예측을하고 레이블과 몇개를 비교할것인지 나타내는 수입니다

32라는것은 32개에 대해서만 예측비교를 한뒤 계산과정을 끝내게 됩니다

배치사이즈가 적으면 후에 학습하기 때문에 정확성면이 증감되겠지만 시간이 오래걸리고

반대로 크면 용량이크게 필요하고 정확성면이 떨어질수 있지만 시간이 적게걸립니다

 

다음편에