본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python | 분석 | 감성분석 Intro

728x90
반응형

이미지와 영상은 픽셀 사이즈만 맞추면(영상은 프레임 단위로 쪼개는 것이 중요) 된다.

그리고 딥러닝 학습 시 입력값이 수치로 변환되어야 한다(output 또한 수치).

 

또한 딥러닝, 머신러닝에서 중요한 것은 데이터 품질관리이다.

모델링도 중요하지만 데이터 품질관리가 더 중요하다.

 

 

문장의 감성분석의 경우, 긍정/부정을 나누는 것은 분류모델로 모의한다.

인간이 직접 리뷰를 전부 읽고(평점이 있는 경우 긍/부정을 쉽게 구분할 수 있음), 긍정인지 부정인지의 라벨링 작업을 직접 진행하여야 한다. 즉 사람의 눈을 거치는 작업이 필요한 것이다.

평점이 1~5점이 있는 경우, 다섯 개의 라벨링을 거쳐야 한다. 

1, 2 점을 부정, 3을 삭제, 4, 5는 긍정 등으로 Y 라벨링의 분석 목적에 맞게 구분할 수도 있다.

모델링을 하는 경우 1, 2, 3, 4, 5 점수 예측 보다는 긍정/부정 예측을 하는 것이 더 모델링 결과가 좋게 나온다. 결과는 확률 모델로 나타나며, 긍정이 몇 %, 부정이 몇 % 판별하는 모델이 나타난다.

이 때 X 데이터들의 전처리가 매우 중요하다.

 

전처리 과정은 다음과 같다.

1. 형태소 분석(= 말뭉치 분석): 토크나이즈를 통해 단어화 하는 것으로, 구글에서 제공하는 knop(한국어 자연어 처리), 세종사전 등이 있다.

2. 일반화: 조사가 어떻게 붙느냐에 따라 의미가 달라진다.

3. 불용어 제거: 문맥에 필요없다고 생각하는 단어가 불용어이다.

 

문자 데이터를 수치로 변환하는 작업은 벡터라이저(벡터화)라고 한다. 이 부분을 많이 연구하여야 하는데, 제일 접근하기 쉬운 과정은 count vectorizer이다. 이 과정은 단어의 수를 세는 것으로, 강조하고자 하는 단어가 중복적으로 나타나는 것이 특징이다. 특정 단어가 반복되는 건 분명 그 단어에 의미가 있을 것이라는 전제를 가지고 있다.

 

 

 

 

자연어 처리 과정

 

1. 데이터 수집

  - 감성 분석, 텍스트 분류: Y의 라벨링 필수

 

 

2. 형태소 분석

  - 형태소: 일정한 의미를 갖는 가장 작은 단위의 말의 단위(= 단어)

                 혼자 자립하여 사용할 수 있는 말의 단위(독립적인 의미를 가짐)

                 예) 책가방 → 책 + 가방 

  - 형태소 분석: 문장을 쪼개서 여러 단위로 분리하는 과정(토큰화)

  - 형태소 분석기: 형태소 분석을 수행하는 모델(토큰화를 진행하지만 때에 따라 일반화를 진행해주는 모델도 있음)

                             mecap(C/C++), konlp(R), konlpy(python), khaiii(C/C++),  khaiii는 리눅스 기반으로 돌아감

 

 

3. 불용어 제거

  - 불용어 사전(회사의 경우 자사 불용어 사전을 이용함)  ** 중요

  - 딥러닝 모델 사용

 

 

4. 벡터화 **

  - 언어 모델에 학습시키기 위해 수치로 변환하는 작업

  1) count 기반

  - BoW(bag of words): 단어들의 순서를 무시하고 단순히 단어의 포함 횟수를 기반으로 DTM(Document-Term-Matrix) 구성

  ex) sklearn의 count Vectorizer

  - TF-IDF(Inverse Document Frequency) 변환: 단어 횟수 기반으로 가중치를 부여하나 특정 문장에만 포함되어 있는 단어는 역가중치 부여

  count 기반이기는 하나, 많이 반복되는 단어일수록 높은 가중치를 부여하는데, 항상 높은 빈도로 감성 분석에 영향을 주는 것은 아니다.

 

  2) 임베딩(Embedding): 단어를 카운트 기반보다 저차원 공간선상에 매핑하는 과정

 

예) 

문장 1: 옷이 너무 별로네요

문장 2: 배송이 너무 빠르고 옷도 마음에 듭니다.

  1) count Vectorizer

          너무(0)   든다(1)   마음(2)   별로(3)   빠르다(4)...

문장 1    1           0             0              1            1

문장2     1           1             1              0            1

 

  2) Embedding

                     1차원                                  2차원

      너무          0.37                                    0.9                 (다른 단어와는 구별되는 공간 부여)

      마음          0.8                                      0.1

 

장점: 문장 학습할 때 차원이 늘어나지 않음(Count Vectorizer는 새로운 단어가 등장하면 차원이 확장됨)

 

 

5. 모델링

  1) 나이브 베이즈: 텍스트 마이닝에 특화된 머신러닝 모델

나이브 베이즈만으로도 메일 스팸분류가 잘 되긴 하다. 스팸일 가능성이 많은 단어일수록 거르는 모델이기 때문(문맥 보지 않음)

  2) RNN

  3) LSTM

  4) 기타 파생 모델들

 

반어법 또는 부정일 때 자주 사용하는 단어들이 긍정이랑 사용되면 해석이 잘못되는 경우가 많다. 그러면 더 많은 데이터를 학습시켜야 한다.

 

 

 

중심 과정은 아래와 같다.

STEP 1) 토큰화 및 일반화

 

 

STEP 2) 숫자, 특수기호 제거

 

STEP 3) 불용어 제거

 

 

728x90
반응형