221213 멋쟁이 사자처럼 AI스쿨 7기, 박조은 강사님 강의
원핫인코딩을 텍스트 데이터에 적용하면 BOW 가 된다.
순서는 고려하지 않고, 단어들의 출현 빈도에만 집중.
의미가 반대인 문장이 토큰화되면 같은 의미가 될 수 있다.
이것을 보완하기 위해 N-gram 사용
fit_transform() 하면 문서 단어 행렬을 반환
단어들의 빈도를 행렬로 표현한 것.
각 문서에 대한 BOW 를 하나의 행렬로 만든 것
max_df : 불용어 제거
min_df : 희소한 단어 제거
feature_extraction.text.CountVectorizer()
feature_extraction.text.TfidTransformer()
feature_extraction.text.TfidVectorizer() : 위의 두 개를 합쳐서 사용
❓ 왜 fit은 train 에만 해줄까? 어떤 대회는 test를 함께 fit 하는 것을 금지하고 있기도 하다.
◾ 현실 데이터는 알 수 없기 때문에
◾ 기준을 train 으로 해주어야 test 도 같은 방법으로 전처리 할 수 있다. train, test 각각 fit을 하게 되면 다른 기준으로 전처리 하게 된다.
◾ 텍스트 데이터를 각각 fit 하게 되면 다른 단어사전으로 전처리 되어 기준이 다르게 된다.
token_pattern : 띄어쓰기 기준이 아니라, 정규 표현식으로 컴마나 다양한 방법으로 구분할 수 있다.
analyzer : word, char, char_wb 지정 가능
max_features : 단어를 무한정 만드는 것이 아니라 어디까지 만들것인지
카운트 행렬을(count vertorizer) 정규화된 tf 또는 tf-idf 표현으로 변환
이미지를 다룰 때는 돈을 쓰지 않고 모델을 내 컴퓨터에서 돌리기 위해 이미지 사이즈, 레이어 개수 등을 조정했다. 텍스트 데이터에서 내 컴퓨터가 힘들어 한다면 여러 방법을 사용할 수 있는데 가장 간단한 방법이 max_features 를 작게 조정하는 것.
비지도학습의 차원축소를 사용하게 되면 데이터를 압축해서 사용할 수도 있다. 그런데 차원축소 과정에서도 메모리 오류가 발생할 수도 있는데 그럴 때 max_features 를 내 컴퓨터가 계산할 사이즈로 적당하게 조정해 주면 로컬 PC로도 어느정도 돌려볼 수 있다. 여기에서 조금 더 조정한다면 min_df, max_df, stop_words 등을 조정해볼 수 있다.
영어나 많이 사용되는 언어는 불용어가 NLTK, Spacy 와 같은 도구에서 목록을 제공하고 있지만 한국어는 제공하지 않는다.
한국어 전처리 도구에도 띄어쓰기, 맞춤법 검사 등의 다양한 API 가 있다.
📌 네이버 영화리뷰 감성 분류 : https://wikidocs.net/44249
📌 AI, 빅데이터 활용이 쉬워지는 142가지 데이터셋 https://needleworm.github.io/dataset/
📚 딥러닝을 이용한 자연어 처리 입문https://wikidocs.net/book/2155
전처리 병합
train['topic_idx'].values
ordinal encoding 이 되어 있다.
concat, merge
문자길이 : 파생변수 만들기
문장길이 displot, heatmap 으로 너무 긴 문장은 없는지 확인
정규표현식
불용어 제거
❓ 워드클라우드를 개발한 안드레아스 뮐러가 주로 참여한 프로젝트는 무엇이 있을까요?
◾ 사이킷런
❓ plt.imshow() 어디에서 사용했을까요?
◾ CNN
❓ df['title']을 하나의 문장으로 어떻게 만들까?
◾ .join(df['title'])
9/ 10문제
KLUE 데이터 셋에 'title'컬럼 데이터를 공백을 기준으로 나누어 'word_count'라는 단어 길이에 대한 파생변수를 만들고자 합니다. 그렇다면 다음 밑줄에 들어갈 코드로 알맞은 것을 골라주세요.
klue['word_count'] = klue['title'].apply(lambda x : len(x.split())
다음 정규표현식의 의미가 잘못된 것을 골라주세요.
max_df
ngram_range
다음 중 scikit-learn의 feature_extraction의 CountVectorizer의 파라미터 중 max_features에 대한 설명으로 옳지 않은 것을 선택해주세요.