운동하는 공대생
[NLP] 텍스트 분석이란? 본문
NLP vs 텍스트 분석
텍스트 분석 분야를 크게 나누자면 NLP와 텍스트 분석으로 나눌 수 있다.
- NLP: National Language Processing의 약자로 보통 인간의 언어를 이해하는 쪽으로 발전하였으며 텍스트 마이닝(Text Minning)이라고도 한다.
- 텍스트 분석: 텍스트 분석은 데이터를 기반으로 모델을 수립하고 정보를 추출하여 예측 분석 등의 분석 작업을 하는 것이다. 보통 텍스트 분류, 감성 분석, 텍스트 요약, 텍스트 군집화와 유사도 측정에 주로 쓰인다.
Text Analysis Process
- 텍스트 전처리: 클렌징, 대/소문자 변경, 특수문자 삭제 등의 클렌징 작업, 단어 등의 토큰화 작업, 의미 없는 단어 제거 작업, 어근 추출 등의 텍스트 정규화 작업
- 피처 벡터화/추출: 사전 준비 작업으로 가공된 텍스트에서 피처를 추출하고 여기에 벡터 값을 할당합니다. 대표적인 방법은 BOW와 Word2 Vec이 있으며, BOW는 대표적으로 Count 기반과 TF-IDF 기반 벡터화가 있습니다.
- ML 모델 수립 및 학습/예측/평가
1. 텍스트 전처리- 텍스트 정규화
텍스트 데이터 자체만으로 피처를 생성하는것이 불가능 함으로 머신러닝 알고리즘이나 NLP 패키지에서 사용이 가능하도록 데이터를 정규화시켜주는 작업이다.
- 클렌징: 텍스트 분석에 방해되는 불필요한 문자, 기호 등을 사전에 제거하는 작업 ex) HTML, XML 태그나 특정 기호 등을 사전에 제거
- 토큰화: 문장 토큰화(마침표(.), 개행 문자(\n) 등 문장의 마지막을 뜻하는 기호에 따라 분리), 단어 토큰화( 보통 공백, 콤마(,), 마침표(.), 개행문자 등으로 단어를 분리)
- 필터링/스톱 워드 제거/철자 수정: 스톱 워드는 영어로 예를 들면 is, the, a, will처럼 단어의 뜻이 문장에서 큰 의미가 없는 단어들을 의미하는데 이 단어를 제거하거나 수정한다.
- Stemming : 문자의 문법적 변형의 원형을 찾아준다. 영어를 예로 들면 과거/현재, 3인칭 단어를 판단하고 원래 단어로 변형해 준다.
- Lemmatization : Stemming 기법보다 조금 더 정교한 작업이 가능하며 원형 단어를 추출하기 위해서 품사도 함께 입력하여 원형을 찾아준다.
1.1 자연어 처리 기법 종류
자연어를 처리하는 기법에는 현재도 활발하게 연구를 진행하고 있지만 현재에는 크게 '횟수 기반'과 '예측 바탕'으로 나눌 수 있다.
- 워드 임베딩(Word Embedding) 기법 : 빈도수를 이용한 방법
- 횟수 기반 임베딩(Frequency-based Embedding): 단어의 빈도수를 바탕으로 하는 NLP방식. BOW, Count Vector, TF-IDF Vector
- 예측 기반 벡터(신경망 언어 모형): 단어의 빈도를 바탕으로 하는 NLP 방법은 문서에 나타난 단어를 통해 특징을 파악할 수 있지만, 단어 간의 유사성을 찾기는 어렵다. 단어 간의 곤계를 벡터로 표현된 다차원 공간에서 유사도를 측정하고, 수치적 계산을 이용해 추론하는 방법이 이 기법이다. Word2 Vec, CBOW, Skip - Gram
- 구조 분석 : 문장의 구조 분석을 이용한 방법
- 단어 열로 구성된 어구를 통해 구조를 파악하는 방법으로, '어구 구조 분서거', '할당 분석', '술어절 구조 분석' 등이 있다.
2. 피처 벡터화/추출- BOW(Bag of Words)
BOW 방식은 Bag of Words의 약자로 문장의 단어들을 모두 분류하여 빈도수를 나타내는 방식의 모델이다.
-작동방식
문장에서 중복되는 단어를 제거하고 단어를 추출하여 각 단어별로 칼럼 형태로 나열하여 각 단어의 인덱스를 부여한다. 그 후 각 단어별로 빈도수를 부여하여 단어를 다 타내는 방식이다.
-장점
빠른 구축과 문서의 특징을 잘 나타내어 전통적으로 활용도가 높다.
-단점
단어의 순서를 고려하지 않아서 문맥의 의미 반영이 부족하다. 그리고 대규모의 문장 구조에서 단어의 총개수가 많아지면 피처를 벡터화하여 수행하는 방식인 BOW에서 희소 행렬 문제가 발생한다. 이는 대부분의 행렬 값이 0으로 채워진 상태를 말하며 예측 성능을 떨어뜨린다.
BOW 피처 벡터화
위의 사진처럼 두 문장을 BOW 모델을 사용하여 나타내면 각 단어들을 피처로 하여 빈도수를 표시하게 된다. 이렇게 각각 피처들에 대하여 칼럼의 형태로 표현하는 방식을 BOW 피처 벡터화를 한 것이다.
그렇다면 이런 BOW의 피처 벡터화에는 두 가지 방식이 있다.
-카운트 기반의 벡터화: 사용된 빈도수를 카운트하여 값이 높을수록 중요한 단어라고 인지. 하지만 문자 특성상 자주 나오는 단어도 중요하다고 판단한다.
-TF-IDF(Term Frequency - Inverse Document Frequency) 기반의 벡터화: 카운트 기반 방식의 단점을 보안하는 방식으로 개별 문서에서 자주 나타나는 단어에는 가중치를 부여하고 모든 문서에서 전반적으로 자주 나타나는 단어에는 페널티를 부여한다.
'Deep Learning > NLP' 카테고리의 다른 글
[Deep Learning] GNN - Graph Neural Networks(미완) (0) | 2023.07.01 |
---|---|
[NLP] 워드 임베딩(Word Embedding 2/2)- 예측 기반 벡터(Word Embedding, Word2Vec) (0) | 2022.12.28 |
[NLP] 워드 임베딩(Word Embedding 1/2)-BOW,Count Vector (0) | 2022.12.28 |
[NLP] 워드 임베딩(Word Embedding 1/2) - TF-IDF(Term Frequency - Inverse Document Frequency) (0) | 2022.12.01 |
[NLP] 레벤슈타인 거리(Levenshtein Distance) (0) | 2022.11.17 |