AIchemist

[9주차] 텍스트 분석

양윤서_Ewha 2024. 11. 18. 16:00

NLP (National Language Processing) : 머신이 인간의 언어를 해석하는 데 더 중점을 두고 기술을 발전하기 위해 통계학과 다양한 딥러닝 기술들을 적용하여 연구하는 분야

텍스트 분석

  • 자연어처리의 결과물인 언어모델을 활용하여 텍스트 형태로 된 비정형 텍스트에서 고객의 경향성이나 선호도 등 유의미한 정보를 얻어내기 위한 분석 기법
  • 텍스트 분류
  • 감성 분석
  • 텍스트 요약
  • 텍스트 군집화

01 텍스트 분석 이해

머신러닝 알고리즘은 숫자형의 피처 기반 데이터만 입력받을 수 있다. 따라서 비정형 데이터에서 피처 형태로 추출하고 추출된 피처에 숫자값을 부여할 수 있어야  한다.

  1. 텍스트 사전 준비 작업 (텍스트 전처리) : 클렌징, 대/소문자 변경, 특수문자 삭제, 토큰화, 텍스트 정규화
  2. 피처 벡터화 / 추출 : 가공된 텍스트에 피처를 추출하고 벡터값을 할당
  3. ML 모델 수립 및 학습 예측 평가

텍스트 분석 패키지

  • NLTK : 파이썬의 가장 대표적인 NLP 패키지. 수행 속도 측면에서 아쉬움이 있다
  • Genism : 토픽 모델링 분야에서 두각을 나타내는 패키지
  • SpaCy : 뛰어난 수행 성능으로 최근 가장 주목받음. 많은 어플리케이션에서 사용

 

02 텍스트 전처리

텍스트 정규화 작업

  • 클렌징 : 텍스트 분석에 방해가 되는 불필요한 문자, 기호 등을 사전에 제거
  • 토큰화 : 주어진 텍스트를 단어나 문장 단위로 분
  • 필터링 / 스톱 워드 제거 / 철자 수정 : 분석에 큰 의미가 없는 단어를 제거
  • Stemming : 문법적 또는 의미적으로 변화하는 단어의 원형을 찾는 과정. 어간 찾기
  • Lemmatization : 동일한 표제어 찾기

 

03 Bag of Words

Bag of Words

  • 모든 단어를 문맥이나 순서를 무시하고 일괄적으로 단어에 대해 빈도 값을 부여해 피처 값을 추출하는 모델
  • 장점 : 쉽고 빠른 구축, 문서의 특징을 잘 나타낼 수 있는 모델
  • 단점 : 문맥 의미 반영 부족, 희소 행렬 문제
  • 희소 행렬 문제 : 대규모의 칼럼으로 구성된 행렬에서 대부분의 값이 0으로 채워지는 행렬

Bow 피처벡터화

  • 단어 빈도 값을 피처에 값으로 부여해 각 문서를 단어 피처의 발생 빈도값으로 구성된 벡터로 만드는 기법
  • 카운트 기반 벡터화, TF-IDF 기반 벡터화 등이 있다.

TF-IDF : 개별 문서에서 자주 사용되는 단어에 높은 가중치를 주되, 모든 문서에서 전반적으로 자주 나타나는 단어에 대해서는 패널티를 주는 방식으로 값을 부여

CountVectorizer : 카운트 기반의 벡터화 구현 클래스

BOW 벡터화를 위한 희소 행렬

  • COO : 0이 아닌 데이터만 별도의 데이터 배열에 저장하고, 그 데이터가 가리키는 행과 열의 위치를 별도의 배열로 저장
  • CSR : 행렬의 비-0 요소들을 행의 순서대로 나열, 열 인덱스를 따로 저장. 각 행의 첫 번째 요소가 저장된 인덱스 위치를 별도의 배열에 저장하여 특정 행을 참조하는 데 필요한 정보를 제공

 

04 텍스트 분류 실습

  1. 텍스트 정규화 (key 값 확인, target 클래스 확인, 개별 데이터 확인)
  2. 피처벡터화 변환과 머신러닝 모델 학습 예측 평가 (피처 벡터화 변환, 로지스틱 회귀 적용)
  3. stopwords 및 GridSearchCV
  4. Pipeline 사용 : 피처 벡터화와 ML 알고리즘 학습 예측을 위한 코드 작성을 한번에 진행할 수 있

'AIchemist' 카테고리의 다른 글

[10주차] 텍스트 분석 (2)  (1) 2024.11.25
[9주차] Discuss Question  (0) 2024.11.18
[8주차] Discuss Question  (2) 2024.11.11
[8주차] 군집화  (0) 2024.11.11
[7주차] Discuss Question  (0) 2024.11.04