PYTHON

20221212 = CNN 복습 / 자연어처리 개념 정리

K.Y.PARK 2022. 12. 12. 17:08
CNN

- 왜 완전밀집연결층을 첫 레이어 부터 사용하지 않고 합성곱 연산을 했을까요? 
  완전밀집연결층은 flatten해서 이미지를 입력해주는데 그러면 주변 이미지를 학습하지 못 하는 문제가 생깁니다.
  합성곱, 풀링 연산으로 특징을 학습하고 출력층에서 flatten해서 완전연결밀집층에 주입해 주고 결과를 출력합니다.
- 기존에 사용했던 DNN 에서 배웠던 개념을 확장해서 합성곱 이후 완전연결밀집층을 구성하는 형태로 진행해 봤습니다.
- 이미지 전처리 도구는 matplotlib.pyplot 의 imread 를 통해 array 로 읽어올 수도 있고, PIL, OpenCV를 사용할 수도 있습니다.
- 이미지 증강 기법 등을 통해 이미지를 변환해서 사용할 수도 있습니다.
자연어 처리로 할 수 있는 일

- 음성 인식, 내용 요약, 번역
- 텍스트 분류 작업
- 질의 응답 시스템, 챗봇 등
Sklearn으로 자연어 처리 활용하는 방법

- 스팸메일 및 뉴스 기사 분류
- 뉴스 기사로 주가 예측
- 비슷한 문의 모으기
- 차원 축소 기법으로 시각화
자연어 분류 과정

1) 데이터 로드
2) 데이터 전처리
3) 데이터 벡터화
4) 데이터 나누기 ( train_test_split )
5) 학습, 예측 세트 나누기
6) 학습 ( fit )
7) 예측 ( predict )
8) 평가 ( evaluate )

3) 4)는 서로 데이터에 따라 바뀔 수 있음
데이터 전처리

- 기계가 텍스트를 이해할 수 있도록 텍스트를 정제하여 구분
- 이상치로 인한 오버피팅 방지
( 특수문자, 이모티콘, 정규표현식, Stopword, Stemming, Lemmatizing 등 )
정규표현식

- 정규식은 특정한 규칙을 가진 문자열의 집합을 의미
- 주로 패턴으로 부르는 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식
토큰화 ( Tokenization )

- 토큰화는 텍스트 조각을 토큰이라고 하는 더 작은 단위로 분리하는 방법
- 패턴을 찾는 데 매우 유용하며 형태소 분석 및 표제어를 위한 기본 단계로 간주함

정제 ( Cleaning )

- 갖고 있는 코퍼스로부터 노이즈 데이터를 제거

정규화 ( Normalization )

- 표현 방법이 다른 단어들을 같은 단어로 만듦

어간 추출 ( Stemming )

- 하나의 단어로 일반화시킬 수 있다면 하나의 단어로 일반화시켜 문서 내의 단어 수를 축소함

표제어 표기법 ( Lemmatization )

- 단어의 식별 단일 항목으로 분석 할 수 있도록 단어의 어형 변화 형태를 그룹화함
- 많은 언어에서 단어는 여러 변형 형태로 나타남
Bag of Words ( BOW )

- 가장 간단하지만 효과적이라 널리쓰이는 방법
- 구조와 상관없이 단어의 출현회수만 세기 때문에 텍스트를 담는 가방으로 생각할 수 있음
- BOW는 단어의 순서가 완전히 무시된다는 단점이 있음

매개 변수

- analyzer : 단어, 문자 단위의 벡터화 방법 정의
- ngram_range : BOW 단위 수 (1, 3) 이라면 1개~3개까지 토큰을 묶어서 벡터화
- max_df : 어휘를 작성할 때 문서 빈도가 주어진 임계값보다 높은 용어(말뭉치 관련 불용어)는 제외 (기본값=1.0)
  max_df = 0.90 : 문서의 90% 이상에 나타나는 단어 제외
  max_df = 10 : 10개 이상의 문서에 나타나는 단어 제외
- min_df : 어휘를 작성할 때 문서 빈도가 주어진 임계값보다 낮은 용어는 제외합니다. 컷오프라고도 합니다.(기본값=1.0)
  min_df = 0.01 : 문서의 1% 미만으로 나타나는 단어 제외
  min_df = 10 : 문서에 10개 미만으로 나타나는 단어 제외