1장 텍스트 마이닝 기초
1.1. 텍스트 마이닝의 정의
- 무엇인가?
- 텍스트에서 고품질 정보를 추출하는 과정
- 이렇게 추출한 대규모 데이터에서 패턴을 찾는 것.
- 패턴이란?
- 예시) 어떤 물건을 선택한 고객이 다른 물건을 함께 구매할 확률을 알아내서 그에 따른 쿠폰이나 상품을 보여주는 것
- 어떻게?
- 통계적 패턴 학습
- 다만 머신러닝은 정형화된 데이터가 필요하기에 비정형화된 데이터를 정형화 하는 작업이 필요
- 정리
- 자연어 처리 기법을 이용해 텍스트를 정형화된 데이터로 변환하고, 머신러닝 기법을 적용해 우리가 관심이 있는 어떤 사건을 예측하고자 하는 방법론
- 정형화된 데이터의 형태는 일정 길이의 벡터
- 이렇게 일정 길이의 벡터로 변환 하는 것을 **
임베딩**이라고 함
1.2. 텍스트 마이닝 트렌드 변화
- 여기서는 어떤 것이 있는지만 얘기. 자세한 것은 다른 장에서 다룰 예정
- 카운트 기반 문서 표현
- 딥러닝 전 얘기이며, 문장에 있는 단어들의 개수를 세고, 주로 사용된 단어들을 이용해 그 문장의 내용을 파악하는것
- 단어들의 빈도를 이용한 하나의 벡터로 단번에 문서 전체를 표현
- 벡터화
- 단어 : [A, B, C, D, E]
- 횟수 : [3, 7, 4, 2, 5]
- 단점으로는 사용된 단어가 많으면 벡터의 크기가 많이 커진다.
- 시퀀스 기반의 문서 표현
- 카운트 기반 문서 표현의 문제점을 해결
- 사람이 글을 읽고 이해하는 것과 유사한 방법으로 텍스트의 문맥을 이해하고자 하는 방식
- 각 단어를 먼저 벡터화 하고, 벡터의 연속된 나열 혹은 시퀀스로 문서 표현
- 원 핫 인코딩 : 단어를 일정 규칙에 따라 정렬하고 단어의 수만큼의 벡터를 만들고 단어 자신의 위치만 1로 표시 하는것.
- 예시
- 단어 : [A, B, C, D, E]
- A : [1, 0, 0, 0, 0]
- B : [0, 1, 0, 0, 0]
- AB: [[1, 0, 0, 0, 0],[0, 1, 0, 0, 0]]
- 단점
- 단어를 벡터로 변환 했을때 벡터가 지나치게 커진다.
- 문서 또는 문장이 가변의 길이인 단어로 되어 있기에 벡터의 시퀀스 길이가 제각각임
- 머신러닝이나 딥러닝은 가변 길이의 입력을 보통은 허용하지 않으며, 일정 길이를 기준으로 짧은것은 null이나 0으로 채우고 길면 짤라서 사용한다.
- 용어 정리
- 텍스트, 문서, 문장
- 텍스트, 문서 : 하나의 일관된 목적 혹은 주제를 가지고 쓰여진 글
- 문장 : 생각이나 감정을 말로 표현할때 완결된 내용을 나타내는 최소 단위
- 말뭉치 : 언어 연구를 위해 컴퓨터가 텍스트를 가공, 처리, 분석 할 수 있는 형태로 모아놓은 자료의 집합 or 자연언어 연구를 위해 특정한 목적을 가지고 언어의 표본을 추출한 집단
1.3. 텍스트 마이닝에 필요한 지식과 도구
- 자연어 처리 기법
- 컴퓨터를 이용해 사람의 자연어를 분석하고 처리하는 기술
- 위키에서는 아래와 같이 처리 기법을 얘기함
- 형태소 분석
- 품사 부착
- 구절 단위 분석
- 구문 분석
- 이 책에서는 텍스트 전처리를 위한 기법을 아래와 같이 얘기함
- 토큰화 (tokenize)
- 어간 추출 (stemming)
- 표제어 추출(lemmatize)
- 정규화 (Normalization)
- 품사 태킹 (POS-tagging)
- 라이브러리
- NLTK (Natural Langauge Tool-kit)
- KoNLPy
- 통계학과 선형대수
- 텍스트로부터 고품질의 정보를 추출하는데 다양한 통계적 분석 방법 쓰임
- 회귀분석, SVM과 같은 머신러닝 방법론을 이해하기 위해서는 통계학이 필수
- 대용량의 데이터를 다루려면 행렬도 잘 알아야함.
- 라이브러리
- 시각화 기법
- 전달하고자 하는 내용을 한눈에 쉽게 이해시키려고 사용
- 텍스트 마이닝에서는 막대그래프와 워드클라우드와 같은 기법을 많이 사용
- 라이브러리
- 머신러닝
- 공통적인 알고리즘을 데이터에 적용해 주어진 데이터에 적합한 문제해결 방안을 생성하는 방식
- 기계학습
- 라이브러리
- 딥러닝
- 머신러닝의 한 분류에 속하는 인공신경망에서 은닉층을 깊게 쌓은 신경망 구조를 활용해 학습하는 알고리즘
- 이미지 인식, 자연어 처리, 음성 처리 등에서 뛰어난 결과를 보이고 있음
- 매우 어려움
- 초기에는 RNN, LSTM, CNN등 단순하고 쉬운 방법론이 있었지만
- 트랜스포머(Transformer)가 등장하면서 BERT, GPT와 같은 복잡한 기술이 등장
- 누군가가 미리 학습된 모형을 가져와서 사용하기에 학습 부담이 많이 줄어듬
- 전체 학습을 하지 않아도 되어서 시간도 절약됨
- 기본 학습 모델에 나의 데이터를 이용해 미세조정(Fint-tunning)을 수행하면 자원 소모가 줄어든다.
- 라이브러리
- Keras
- Pytorch
- huggingface에서 제공하는 SDK
- 이건 책에 없지만 더 간단하게 허깅페이스에 등록된 모델을 쉽게 가져와 쓰기 좋아서 쓸 예정
1.4. 텍스트 마이닝의 주요 적용 분야
- 문서 분류
- 문서 생성
- 문서요약
- 질의응답
- 기계번역
- 토픽 모델링
1.5. 이 책의 실습 환경과 사용 소프트웨어
- win 10
- python 3.8
- NLTK
- scikit-learn
- Numpy
- Pandas
- Anaconda
- KoNLPy
- TextBlob
- AFINN
- VADER
- Gensim
- Tensorflow
- Pytorch