지금은마라톤중

멋사 AI스쿨 TIL - (27) 본문

멋쟁이사자처럼/Python

멋사 AI스쿨 TIL - (27)

달리는중 2023. 4. 18. 22:30

2023.03.28

 

자연어처리 학습

 

● CountVectorizer와 BOW(bag of words)차이

-CountVectorizer

: 단어를 횟수 기반으로 벡터화해줌

- BOW(bag of words)

: 텍스트를 담는 가방, 순서를 고려하지 않고 출현 빈도만 고려하는 텍스트 데이터의 수치화 표현 방법 , 단어의 순서가 완전히 무시됨

 

 

질문🙋🏻‍♂️: [^가-힣ㄱ-ㅎㅏ-ㅣa-zA-Z0-9] 이 정규표현식을 어떻게 해석할 수 있을까요?
1) 가-힣 2) ㄱ-ㅎ 3) ㅏ-ㅣ 4) a-z  5) A-Z  6) 0-9


 

질문🙋🏻‍♂️:[^조건식] <= 대괄호 안의 ^ 은 무엇을 의미할까요?
^ 바깥에 있을 때는 시작을 나타내지만 [대괄호] 안에서 가장 앞에서 쓰이면 부정(제외)를 의미합니다

 

질문🙋🏻‍♂️: 조사, 어미, 구두점 등을 제거하면 어떤 효과가 있을까요?
메모리 절약할 수 있고, 문장에서 중요한 의미만 추출할 수 있기 때문이다.

 

 

 OKt Class 이용해 형태소 분석하기

morphs -> 구문을 형태소로 구문 분석합니다.

nouns -> 명사 추출

pos -> 품사 태깅

norm=True 옵션 -> 토큰 정규화 (되나욬 -> 되나요)

stem=True 옵션 -> 어간 추출 (되나욬 -> 되다)

 

 

질문🙋🏻‍♂️: "버스의 운행시간을 문의한다. 어?!" =>  버스 운영 시간 문의 하다 
위 결과를 이렇게 만들려면 어떻게 하면 좋을까요?
1) 특정 품사 선택 
2) 특정 품사 제거
 

 

 TF - IDF 기반의 벡터화

- 카운트 기반 벡터화의 문제를 보완하기 위해 자주 나타나는 단어에 높은 가중치를 주는 방식

- 모든 문서에서 전반적으로 자주 나타는 단어에 대해서는 패널티를 부여한다.



질문🙋🏻‍♂️: 교차검증, 학습과 예측에 다른 실습보다 시간이 오래 걸립니다. 왜냐하면 피처의 수가 18,000개가 넘습니다.
너무 오래 걸릴 때 성능과는 무관하게 잘 동작하는지 정도 먼저 확인하고 싶다면 어떻게 하면 좋을까요?

데이터, 학습시간 조정 => 벡터화 할 때 max_features 제한, 모델의 max_depth 제한, hold-out-validation 등 사용

 

 

 PCA의 목적

PCA란 ?

고차원 -> 저차원으로 환원 데이터의 정보(변동)의 손실을 최소화하면서 2개 혹은 3개의 새로운 수치형 변수로 만드는 기법

1) 차원의 저주 해결 - 차원 축소

2) 다중공선성 문제 해결

-> 주성분 분석은 "변수가 너무 많을 때" "데이터(자료) 축약이 필요한 경우", "다중 공선성이 발생할 때", 해결 방안으로 사용해볼 수 있습니다

 

 

  다중공선성 문제(Multicollinearity)는 통계학의 회귀분석에서 독립변수들 간에 강한 상관관계가 나타나는 문제이다

sparse한(희소한) 텍스트 데이터에 대해서는 trunkated SVD를 사용

 

 

질문🙋🏻‍♂️: max_features=2000를 지정해주면 상위 2000개를 사용하는건가요? 아니면 샘플 2000개를 사용하는건가요?
TfidfVectorizer(max_features=2000) max_features 파라미터를 설정해 말뭉치 전체에서 용어 빈도에 따라 정렬된 상위 max_features만 고려하는 어휘를 구축합니다. 여기서는 상위 2000개가 사용됩니다!

 

  n_components -> output값의 차원

scr_matrix -> Compressed Sparse Row matrix(압축 희소 행 행렬)

희소행렬을 메모리 낭비가 적게 변환할 때 scr 행렬을 사용합니다.

 

 

 .todense()와 .toarray()

toarray는 ndarray를 반환하고,

todense는 행렬을 반환합니다. 압축을 풀어서 dense matrix를 만들어 줍니다.

 

 

  SVD, PCA, tSNE

SVD => 이미지, 텍스트 압축 및 토픽모델링(LDA)

PCA => 피처가 많을 때 예를 들어 제조업 데이터

tSNE => 데이터 시각화 할 때 다차원 데이터를 2차원으로 표현하고자 할 때

 

 Numpy 용어정리

스칼라 : 크기만으로 나타낼수 있는 물리량 숫자 하나로 구성 ex(1,2,3)

백터 : 두개 ,세개 가능 ex) [1,2]

 

팁❗️ : 

스칼라의 집합은 백터

백터 의 집합은 행렬

행렬의 집합은 텐서

 

1) csr_matrix() 함수를 사용하여 X_train_tfidf 행렬을 희소 행렬로 변환하고, fitting -> 행렬의 차원을 1000으로 축소한 후, 남은 차원에서의 주요한 성분을 학습 

2) transform() 메서드를 사용하여 X_train_tfidf 행렬을 SVD 차원 축소합니다. 

- todense() 메서드는 csr_matrix 클래스로 나타낸 희소 행렬을 numpy 모듈의 ndarray로 변환 

3) X_test도 X_test_tfidf 행렬을 svd 객체에 맞게 차원 축소 -> 행렬의 형태를 확인

 

'멋쟁이사자처럼 > Python' 카테고리의 다른 글

멋사 AI스쿨 TIL - (29)  (0) 2023.04.18
멋사 AI스쿨 TIL - (28)  (0) 2023.04.18
멋사 AI스쿨 TIL - (26)  (0) 2023.04.18
멋사 AI스쿨 TIL - (25)  (0) 2023.03.23
멋사 AI스쿨 TIL - (24)  (0) 2023.03.23
Comments