세로형
Recent Posts
Recent Comments
Link
04-25 01:17
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

[10주차] 새벽 5시 캐글(kaggle) 필사하기 - spooky-author data 본문

kaggle(캐글)

[10주차] 새벽 5시 캐글(kaggle) 필사하기 - spooky-author data

이수진의 블로그 2019. 3. 20. 11:30

이번에도 딥러닝으로 자연어 처리 하는 파트 입니다. 

deep learning Natural Language Processing(NLP)


kaggle에서 spooky-author 데이터가 있는데요. 글이 있으면 저자가 누군지 예측하는 그런 데이터입니다!

아마 캐글 자연어 처리 대회중 toxic, quora 이후 유명한 데이터가 아닌가 싶습니다

시작하죠!



역시 필요한 라이브러리를 먼저 불러옵니다

keras를 사용해서 딥러닝 모델을 구축하기에 keras library를 불러옵니다

그리고 사이킷런(scikit-learn)의 LabelEncoder도 사용합니다

카테고리 데이터를 라벨화 시켜주기 위해서요!



간단하게 EDA를 먼저 진행합니다.

카테고리 value_counts() 값은 거의 비슷합니다

완전 unbalanced하지는 않네요!



문장 길이를 가지고 히스토그램을 봤습니다.

거의 200글자 밑으로 길이가 몰려있고 300글자 이상의 길이는 적습니다.



그리고 단어를 split해서(띄어쓰기) 길이를 살펴보았는데요

대부분 10~40길이에 몰려 있는것을 볼 수 있습니다



그리고 통계값을 눈으로 확인하기 위해 numpy의 min, max, std, mean, percentile을 사용했습니다.

문장 전체 길이 평균은 150정도이고 단어를 기준으로 자르면 평균이 26정도 됩니다

나중에 케라스로 토크나이징할 때 단어 길이를 너무 크게 하면 안되겠네요



그리고 wordcloud를 사용해서 많이 사용된 단어를 살펴봅니다

위의 wordcloud는 전체 text를 가지고 봤습니다.

one, upon, will, now, time, said 등의 단어가보이네요


그럼 이번엔 저자 별로 살펴볼까요?



HPL 저자가 많이 사용한 단어를 살펴봅니다

now, one, thing 등이 있네요

time, seemed, old, man 등도 있구요



NMS 저자입니다.

will, one, now, life, love 단어가 보이네요!



다음 EAP 라는 저자입니다.

upon, one, now, will 등의 단어가 보입니다


기본적인 분석은 끝났습니다.

각 저자별로 쓰는 단어는 비슷합니다.

나중에 tf-idf도 분석을 해봐야겠네요!

하지만 love 등의 단어는 특장 저자가 많이 사용하는 것을 볼 수 있죠



그리고 scikit-learn의 LabelEncoder를 통해서 

라벨을 만들어줍니다.

A -> 1, B->2 이렇게 만들어주고

1 -> [1, 0]

2 -> [0, 1]

이렇게 만들어주는 과정이죠

fit과 transform 과정을 거치면 됩니다



그리고 keras의 tokenizer를 만들어줍니다

사용된 단어는 5000개를 사용했구요

최대 길이는 60으로 사용했습니다

그래서 단어를 pad_sequence하게 만들어줍니다



다음은 모델을 만들었습니다

Bidirectional을 이용한 LSTM 모델을 사용했습니다




그리고 훈련을 시켜줍니다!



epochs 개수가 3개뿐이라서 그래프가 초라하네요 ㅎㅎ



최종 결과물이 나왔고

제출을 하면



0.48이 나옵니다. 이것은 acc가 아니라 val_loss 값입니다. loss로 결과를 측정합니다. 그래서 상위 스코어는 0.1 등의 점수를 가지고 있습니다.

0.48정도면.. 한 50% 했겠네요 ㅠㅠ

다음엔 더 성능을 올려봐야겠어요


반응형
그리드형
Comments