일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GNN
- 파이썬
- TiL
- 멋쟁이사자처럼멋쟁이사자처럼
- intern10
- likelion
- 프로젝트
- folium
- ux·ui디자인
- 인턴10
- 멋사
- seaborn
- parklab
- 그리디
- BFS
- 알고리즘
- Plotly
- DFS
- likelionlikelion
- DP
- 시각화
- Join
- SQL
- 마이온
- 멋재이사자처럼
- pyhton
- GIS
- 멋쟁이사자처럼
- Python
- 마이온컴퍼니
- Today
- Total
지금은마라톤중
멋사 AI스쿨 TIL - (27) 본문
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 옵션 -> 어간 추출 (되나욬 -> 되다)
질문🙋🏻♂️: "버스의 운행시간을 문의한다. 어?!" => 버스 운영 시간 문의 하다
위 결과를 이렇게 만들려면 어떻게 하면 좋을까요?
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 |