일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SW Expert Academy
- hackerrank
- 편스토랑
- Baekjoon
- 코로나19
- PYTHON
- 데이콘
- dacon
- Kaggle
- 백준
- 우분투
- Git
- ubuntu
- 프로그래머스
- github
- gs25
- programmers
- 편스토랑 우승상품
- 파이썬
- 더현대서울 맛집
- 자연어처리
- leetcode
- 프로그래머스 파이썬
- Docker
- Real or Not? NLP with Disaster Tweets
- 캐치카페
- 맥북
- 금융문자분석경진대회
- AI 경진대회
- ChatGPT
- Today
- Total
목록
반응형
DACON (34)
솜씨좋은장씨
한국어 문장 관계 분류 경진대회 - DACON 좋아요는 1분 내에 한 번만 클릭 할 수 있습니다. dacon.io # 데이콘 ( DACON ) # 한국어 문장 관계 분류 경진대회 # pororo # 자연어처리 경진대회 아직 한창 진행중인 한국어 문장 관계 분류 경진대회를 예전 부터 관심을 가지고 있던 kakaobrain의 pororo 라이브러리를 활용하여 결과를 만들고 제출해본 내용을 공유해보고자 합니다. 기존에 대회에 참가한다고 하면 데이터를 구축하고 -> 모델을 만들고 -> 학습시키고 -> 결과를 도출하고 -> 이걸 제출 형식으로 만들어 제출 이렇게 진행하였다면 이 pororo 라이브러리를 활용하는 방식은 pororo 라이브러리를 설치하고 -> 결과를 도출하고 -> 제출 하는 방식으로 정말 간단하게 ..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 소설 작가 분류 AI 경진대회 16일차! 오늘은 DACON 코드공유 페이지에서 LA오빠님께서 공유해주신 코드에서 StarifiedKFold 를 참고하여 시도해보았습니다. 소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 그리고 전처리 과정에서 아직 남아있던 프랑스어를 조금 더 찾아서 영어로 번역하여 전처리를 진행하였습니다. sorted_keys = sorted(keys_with_length, key=lambda x : -x[1]) sorted_keys = [ key[0] for key in sorted_keys] sorted_k..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 애플 이벤트를 시청하며 진행했던 13일차! 오늘도 역시 NIPA에서 지원받은 V100 GPU 서버를 활용하여 도전해보았습니다. 13일차는 12일차에서 열심히 전처리 했던 데이터를 바탕으로 시도해보았습니다. 왜냐하면 12일차에서는 결과를 도출하고 다 제출하고 나서야 전처리한 데이터를 활용하지 않았다는 것을 깨달았기 때문입니다. 여러 모델 중에서 가장 validation loss 가 좋아보이는 세개를 골라서 제출해보았습니다. Bi-LSTM, Baseline model, LSTM 모델을 활용해 보았습니다. 예전에 금융 문자 분석 경진대회에서는 LSTM 모델이 성능이 괜찮게 나왔었는데 아직 전처리 ..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 11월 애플 이벤트를 기다리면서 진행한 12일차! 이번엔 베이스라인 코드에서 벗어나서! 새로운 전처리방식과 모델을 활용해보기로 했습니다. 그 과정에서 아래의 링크를 참고하였습니다. 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net 이번 시도도 NIPA에서 지원해준 수시사용자 지원 V100 GPU 환경에서 실시하였습니다. 올 초 금융문자분석경진대회에서는 Colab을 활용하였어서 런타임에 엄청 고통 받았었는데 덕분에 정말 편하게 대회를 진행하는 것 같습니다. 지원해주셔서 정말 감사드립니다. import pandas as pd import numpy as np import ..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 소설 작가 분류 AI 경진대회 9일차! 9일차는 베이스라인 코드에서 좀 벗어나 다른 방법을 활용해보고자 했습니다. BERT와 같은 pre-trained 모델은 활용할 수 없지만 전처리 과정에서는 사전 학습을 사용해도 된다고 하여 Glove 임베딩을 활용하여 도전해보기로 했습니다. 방법은 아래의 위키독스에서 활용한 방법을 바탕으로 도전해보겠습니다. 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 대회 커버가 바뀌어 뭔가 새로운 대회를 참가하는 것 같은 느낌의 도전 8일차 입니다. 먼저 fasttext로 결과를 도출해보고자 열심히 시도해보았으나 제 시간 내에 validation_loss 값을 0.78 아래로 떨어지는 것을 확인하지 못하여 이번에도 아쉽지만 7일차에서 조금씩만 변형하여 도전해보았습니다. PorterStemmer로 어간추출 후 WordNetLemmatizer로 표제어 추출을 하여 나온 데이터를 바탕으로 시도해보았습니다. train_dataset = pd.read_csv("./train.csv") test_dataset = pd.read_csv("./test_x.csv") ..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 7일차! 7! 뭔가 행운이 찾아올 것 같은 기분이 들었던 7일차 도전의 날이었습니다. 오늘도 역시 aihub에서 지원받은 GPU서버 환경에서 진행하였습니다. 오늘은 생각보다 시간이 없어서 원래는 Glove 임베딩을 활용해서 결과를 내보려했지만 잠시 뒤로 미뤄두고 표제어추출도 활용해보고 학습데이터에서 validation 데이터를 비율을 줄여보기도하고 이것저것 여러 하이퍼 파라미터를 변경해보면서 시도해보았습니다. 첫번째 시도해 보았던 것은 앞의 전처리 과정은 6일차와 동일하고 가장 좋았던 모델에서 임베딩 차원만 128 -> 256 으로 변경하여 시도해보았습니다. 여러 시도 중에 가장 valida..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 소설 작가 분류 AI 경진대회 7일차! 7! 뭔가 기분좋아지는 숫자입니다. 이번 대회에서는 BERT와 같은 사전학습 모델 사용이 불가합니다. 그런데 전처리 과정에서는 사용을 해도 된다고하여 정보의 보고인 Kaggle로 향하여 Glove 임베딩을 활용한 노트북을 찾아 따라해보기로 하였습니다. 모든 개발은 aihub에서 지원 받은 GPU 서버 환경에서 진행하였습니다. 일반 수시 사용자에게도 아낌없이 지원해주셔서 정말 감사합니다. NLP using GloVe Embeddings(99.87% Accuracy) Explore and run machine learning code with Kaggle ..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 소설 작가 분류 AI 경진대회 6일차! 오늘도 퇴근 후 즐거운 DACON 도전의 시간이 다가왔습니다. 오늘은 전처리 방법에서 Stemmer를 LancasterStemmer 에서 Porterstemmer로 바꾸고 임베딩 차원을 16 -> 128로 늘렸습니다. import pandas as pd import re train_dataset = pd.read_csv("./train.csv") test_dataset = pd.read_csv("./test_x.csv") 먼저 데이터를 불러옵니다. from nltk.corpus import stopwords def alpha_num(text): retu..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 소설 작가 분류 AI 경진대회 5일차! 요즘 오랜만에 NLP 대회가 열려 퇴근 후가 즐거운 나날입니다. 오늘은 전처리 방법을 바꾸고 베이스라인 코드에있는 모델을 활용하여 결과를 도출해보았습니다. 모든 과정은 aihub에서 지원받은 GPU 환경에서 진행하였습니다. 먼저 첫 번째로 전처리 방식에서 아주 작은 변화를 주었습니다. 먼저 영어 대문자 소문자만 제거해주는 alpha_num 함수에 stopwords에 ' 이 포함되어있는 것들이 alpha_num을 거쳤을때 '이 삭제되지 않아 you've 같은 불용어가 제대로 제외되도록 \' 를 추가했습니다. def alpha_num(text): retur..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 소설 작가 분류 AI 경진대회 4일차! 오늘은 먼저 DACON 에서 제공해주는 베이스라인을 먼저 시도해보았습니다. 개발은 NIPA에서 지원받은 GPU 서버환경에서 진행하였습니다. 소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io import pandas as pd import warnings warnings.filterwarnings(action='ignore') import numpy as np import tensorflow as tf from tensorflow.keras.preprocessing.sequence impor..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io DACON에서 금융문자 분석 경진대회 이후 오랜만에 NLP대회가 열렸습니다. 이 글에서는 첫날, 두번째날, 세번째날 시도해본 내용을 적어보려합니다. 이 3일간에는 별다른 EDA 없이 그저 기존에 해보던 방법과 베이스라인을 참고하고 간단한 전처리만 활용하여 시도해보았습니다. 개발환경은 NIPA에서 지원받은 GPU서버를 활용하여 진행하였습니다. 먼저 첫 날! import pandas as pd train_dataset = pd.read_csv("./train.csv") test_dataset = pd.read_csv("./test_x.csv") 먼저 제공받은 학습데이터를 pandas를 활용하여 ..
소설 작가 분류 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 요즘 여러 사정으로 인하여 다른 공모전 참가도 제대로 못하고 결과물 제출도 하지 못하였습니다. 어느 정도 정리를 하고 둘러보던 중 DACON에서 드디어 NLP대회가 오픈하여 이번엔 그동안 여러 공모전을 도전하며 듣고 보고 해보았던 노하우를 녹여보고자 합니다. 데이터는 영어 데이터로 구성되어있습니다. 자연어처리에 관심 있는 분들은 도전해보셔도 좋을 것 같습니다. 상금으로는 100만원에 애플워치가 제공된다고 합니다. 공모전 진행은 NIPA에서 지원해주는 GPU를 지원받아 Ubuntu + V100 + TF2 환경에서 진행하였습니다. 비싼 GPU! 지원 받아 무료로 사용해보자! Ai Hub GPU ..
심리 성향 예측 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 3일차 4일차에 시도해본 내용을 정리한 글입니다. 3일차에는 tensorflow를 활용하여 결과를 내보기로 했습니다. import numpy as np import tensorflow as tf from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.utils import to_categorical from tensorflow.keras import metrics from tensorflow.keras import optimizers from tensorflow...
심리 성향 예측 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 심리성향 예측 AI 경진대회 2일차! 오늘은 먼저 지난번에 GridSearchCV를 통해 얻은 최적의 파라미터 값을 바탕으로 결과를 내보기로 했습니다. 너무 욕심을 많이 부려서 너무 많은 파라미터를 넣은 탓인지 최적의 파라미터를 도출하는데까지 약 23시간의 시간이 소요되었습니다. GridSearchCV에 관한 코드는 지난 1일차 게시물에 포함되어있습니다. 23시간이 소요된 끝에 얻은 파라미터는...! Fitting 5 folds for each of 5460 candidates, totalling 27300 fits [Parallel(n_jobs=1)]: Using backend Sequen..
심리 성향 예측 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 심리 성향 예측 AI 경진대회 1일차! 오늘은 먼저 베이스라인 코드와 토론에 나와있는 AutoML 코드를 돌려보기로 했습니다. 심리 성향 예측 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 베이스라인 코드는 위의 링크에서 확인해보시면 됩니다. 베이스라인의 결과는! 0.6801542453 의 결과를 얻을 수 있었습니다. 베이스라인 코드가 LightGBM 모델로 작성되어있어 GridSearchCV 를 활용하여 최적의 파라미터를 찾아 성능을 높여 보자! 라고 생각하게 되었고 예전에 다른 대회를 진행해보면서 활용했던 코드를 가져와서 실행해보았습니다..
심리 성향 예측 AI 경진대회 출처 : DACON - Data Science Competition dacon.io 군에서 근무할 당시에 이런 심리 성향을 예측하는 것에 관심이 있었는데 최근 DACON( 데이콘 ) 에서 관련한 예측 경진대회가 열렸다고 하여 한 번 도전해보려고 합니다. 이상한 이유지만 무엇보다도 배경색이 제가 좋아하는 노란색이어서 그것이 마음에 들어 더더욱 도전해봐야겠다라는 생각이 들었습니다. 사실 처음엔 자연어처리 대회인 것 같아 관심이 갔던 부분이 더 컸기에 조금 아쉬운 부분이 있지만 그동안 나태해진 것 같았던 저를 돌아보며 열심히 해보려고 합니다. 심리 성향 예측에 관심이 있었거나 이런 대회를 해보고 싶었던 분이 있었다면 한 번 도전해보셔도 좋을 것 같습니다~ 그럼 앞으로 시간 날때마..
[문자] 청와대 청원 : 청원의 주제가 무엇일까? 출처 : DACON - Data Science Competition dacon.io 그동안 Elasticsearch를 활용하여 검색 시스템을 개발하면서 자연어처리에 대해서 공부를 좀 소홀히 한 느낌이있어 다시 기존에 공부했던 내용을 리마인드 시킬 겸! 데이콘에서 교육용으로 열려있는 청와대 청원 분류 문제를 풀어보기로 했습니다. 이 문제는 청와대 청원이 0 : 인권 / 성평등 | 1 : 문화 / 예술 / 체육 / 언론 | 2 : 육아 / 교육 이 세가지 중 어떤 카테고리에 속하는지 분류를 하면되는 문제입니다. 모든 과정은 Google Colab의 GPU 환경에서 진행하였습니다. 먼저 pandas의 read_csv로 데이터를 불러와 각 카테고리마다 데이터가 ..
데이콘 온도추정 경진대회 도전 7, 8회차입니다. [공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 첫번째 시도 오늘은 LightGBM모델의 하이퍼 파라미터를 늘려서 시도해보았습니다. Y18 데이터는 비어있는 구간은 Y06, Y09, Y12, Y16, Y17을 평균 낸 값을 넣어주어 비어있지않은 구간의 데이터와 함께 사용했습니다. data_for_graph = train.loc[:, ['Y06', 'Y09', 'Y12', 'Y16', 'Y17']].dropna() plt.figure(figsize=(20, 10)) plt.plot(data_for_graph) import numpy as np new_Y_18 = [] for ..
데이콘 온도추정 경진대회 도전 5, 6회차입니다. [공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 첫번째 시도 Y18의 앞쪽 30분간의 없는 데이터를 Y06, Y09, Y12, Y16, Y17 의 평균으로 채워넣고 기상청 데이터는 X00, X07, X28, X31, X32 기온데이터, X11, X34 일일 누적 일사량 데이터를 사용하였습니다. data_for_graph = train.loc[:, ['Y06', 'Y09', 'Y12', 'Y16', 'Y17']].dropna() plt.figure(figsize=(20, 10)) plt.plot(data_for_graph) import numpy as np new_Y_18 =..
데이콘 온도추정 경진대회 도전 4회차입니다. [공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 오늘은 그동안 계속 해보고 싶었던 방법을 도전해보았습니다. 30일 동안의 Y00 ~ Y17까지의 센서 데이터를 가지고 Y18 센서의 데이터만 존재하는 3일동안의 Y00 ~ Y17 센서 데이터를 예측한 후 가장 비슷한 센서데이터를 선택하여 그 데이터를 바탕으로 앞쪽에 30일 가량 비어있는 Y18데이터를 채워넣어 학습하고 결과를 도출해보았습니다. 먼저 ligthGBM의 LGBMRegressor를 활용하여 3일간의 Y00 ~ Y17센서 데이터를 예측해보았습니다. 최적의 파라미터를 구하는데에는 GridSearchCV를 활용하였습니다. lg..
데이콘 온도추정 경진대회 도전 3회차 입니다. [공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 오늘은 lightGBM 모델을 사용하여 제출해 보았습니다. [Ensemble] Colab에서 LightGBM 사용하기! 원자력 발전소 상태판단 알고리즘을 도전해보면서 머신러닝을 공부하며 Gradient Boosing알고리즘 중의 하나인 LightGBM 알고리즘을 알게되었고 DACON KB 금융문자분석경진대회에서도 수상자들이 사용했다는 것을.. somjang.tistory.com 먼저 Colab에 LightGBM을 설치해주었습니다. 데이터는 2회차와 동일하게 3일치의 기상청 측정데이터, Y18 센서 데이터를 사용하였습니다. 기상청 ..
데이콘! 온도추정 경진대회! 도전 2회차입니다. [공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 오늘은 사용하는 데이터를 늘려보고 다중 선형회귀 분석 방법도 활용해보았습니다. 먼저 어떤 데이터를 추가할까 고민해보면서 대회 설명으로가서 대회의 배경을 다시 읽어보았습니다. 저가의 센서로 온도를 측정하였고 우리는 그 저가의 센서들 중 하나의 결과를 예측해야합니다. 주어진 데이터는 다음과 같습니다. 대회 도전 전에 히트맵을 통해서 센서와 기온의 상관관계가 높다는 것을 알게되었고 Y18센서의 데이터가 있는 3일치의 기온데이터와 센서 데이터를 가지고 첫날 결과를 내고 제출을 해보았습니다. 먼저 상관 관계가 낮은 데이터도 예측에 많이 ..
[공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 데이콘! 온도추정 경진대회 도전 1회차! 오늘은 저번에 분석해본 결과를 바탕으로 한번 도전해보았습니다. DACON AI프렌즈 시즌1 온도 추정 경진대회 데이터 이해하고 분석해보기 (feat. DACON YOUTUBE) 3월 ! 이번 달은 지난 금융문자분석경진대회와 원자력 발전소 상태판단 알고리즘 경진대회에 이어 DACON과 AI프렌즈가 함께 개최한 AI프렌즈 시즌 1 온도 추정 경진대회에 참가해보려합니다. 이 대회는 시즌 3까.. somjang.tistory.com 지난 분석을 통해 센서 측정데이터와 기상청의 기온데이터의 상관관계가 높다는 것을 알게되었습니다. 오늘은 이를 바..
이번 2020년 3월은 코로나 바이러스로 밖으로 나가는 시간도 많이 줄어 집에있는 시간이 많아진 만큼 Kaggle에서 진행하는 NLP관련 대회인 Real or Not? NLP with Disaster Tweets 대회와 데이콘에서 진행하는 AI 프렌즈 시즌 1 온도 추정 경진대회 [공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 그리고 스타크래프트 게임 플레이 데이터를 바탕으로 진행되는 데이콘 월간 데이콘 3 행동 데이터 분석 대회를 진행해보려고 합니다. [게임] 월간 데이콘 3 행동 데이터 분석 대회 출처 : DACON - Data Science Competition dacon.io 총 상금은 250만원! 하루에 최대 3번..
3월 ! 이번 달은 지난 금융문자분석경진대회와 원자력 발전소 상태판단 알고리즘 경진대회에 이어 DACON과 AI프렌즈가 함께 개최한 AI프렌즈 시즌 1 온도 추정 경진대회에 참가해보려합니다. 이 대회는 시즌 3까지 나올 예정이라고 하여 앞으로 어떤 대회가 계속 개최될지 궁금해 더 기대가 되는 대회입니다. [공공] AI프렌즈 시즌1 온도 추정 경진대회 출처 : DACON - Data Science Competition dacon.io 오늘은 첫날로 데이터에 대해서 이해하고 분석해보고자 합니다. 위의 유튜브 내용을 보면서 이해한 내용과 그 후 분석해본 내용에 대해서 적어보았습니다. 대회 목적 기상청 데이터로 특정 지역 또는 지형지물의 온도를 추정하는 모델 생성 모델 생성을 위해 기상청에서 관측한 기상 데이터..
공덕에 있는 서울 창업허브에서 오디오 처리 교육을 마치고! 오늘은 저번 2월 6일 합정에서 진행하기로 했었다가 취소가 되어 너무너무너무너무너무나도 아쉬웠던! KB 금융문자분석경진대회 밋업을 다녀왔습니다. 취소가 되고 수상하신 팀이나 저보다 더 좋은 결과가 나왔던 분들은 도대체 어떤 모델을 사용했길래! 어떤 방법으로 전처리를 했길래! 100퍼센트에 가까운 모델을 만들었는지 너무나도 궁금했습니다. 자연어처리 관련 오픈채팅방, 페이스북, 7위로 대회를 마치신 김웅곤님이 하시는 BERT강의까지 정말 여기저기! 그 비결을 수소문하러 다녔었습니다. 그 결과 임베딩까지의 과정에서 n-gram 방법을 많이 사용하고 모델링에서는 주로 LSTM같은 딥러닝 모델 보다는 머신러닝 모델 중 앙상블 모델인 lightGBM 모델이..
idEANS 팀원들과 함께 진행했던 후기입니다. 자세한 내용은 idEANS 팀 블로그에 포스팅 하였습니다. 아래의 링크를 참고해 주시기 바랍니다. 대회 링크 [산업] 원자력발전소 상태 판단 대회 출처 : DACON - Data Science Competition dacon.io 데이터 불러오기 / 이해하기 제공 데이터 이해하고 학습데이터/테스트 데이터 load 해보기! 라벨링은 어떻게 해야할까? train.zip : 각각의 csv파일은 feature에 대한 내용만 저장되어있음. train_label.csv : 각각의 csv파일에 대한 label 값은 train_label.csv에 저장되어있음. 참가자가 직접 라벨링을.. ideans.tistory.com 도전 1, 2일차 원자력 발전소 상태 판단 알고리즘..
첫번째 제출 (Google Colab -TPU)오늘은 형태소 분석기에서 morphs 메소드가아닌 nouns 메소드를 사용해보기로 했습니다.형태소 분석기는 Mecab 메소드는 nouns를 사용하여 전처리한 데이터를 학습시켜 보았습니다.model3 = Sequential() model3.add(Embedding(max_words, 100)) model3.add(LSTM(128)) model3.add(Dense(2, activation='sigmoid')) model3.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) history3 = model3.fit(X_train, y_train, epochs=2, batch_size..
가장 먼저 Okt 형태소 분석기를 활용하여 토큰화 시 stem항목을 True에서 False로 바꾸어 만든 학습데이터셋으로 학습을 시켜 보았습니다.from tqdm import tqdm X_train = [] for i in range(len(train_data['clear_text2'])): temp_X = [] temp_X = okt.morphs(train_data['clear_text2'].iloc[i], stem=False) # 토큰화 temp_X = [word for word in temp_X if not word in stopwords] # 불용어 제거 X_train.append(temp_X) 첫번째 제출 모델 (Google Colab -TPU)model4 = Sequential() model4..