컴퓨터공학/데이터과학기초

[데이터과학기초] 텍스트 분석

NIMHO 2023. 1. 10. 16:30
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

비정형 데이터 : Unstructured Data

미리 정의된 데이터 모델이 없거나, 미리 정의된 방식으로 정리되지 않은 정보

- 이미지, 텍스트, 사운드, 동영상, 기타 등등

 

비정형 데이터의 처리 : Embedding

- 비정형 데이터의 특징을 추출하여 정형 데이터로 바꾸기

- 이미지 임베딩 : ImageNet

- 텍스트 임베딩 : Bag of Words, Word2Vec

 

 

자연어 처리 : NLP (Natural Language Processing)

자연어 : 사람이 일상생활에서 사용하는 언어

자연어 처리 : 번역, 요약, 분류, 감성 분석, 챗봇, 기타 등등

자연어의 구성 : 문서, 문장, 단어

- 문서 : 문장들의 집합 (Document)

- 문장 : 단어들의 집합

- 단어 : 텍스트 분석의 기본 단위 (Word = Term)

 

 

텍스트 전처리 : Text Preprocessing

코퍼스(Corpus): 말뭉치. 텍스트 분석을 위한 데이터셋

텍스트 분석을 위한 전처리 과정

- 변환 : Transformation

          • Text Cleansing : 텍스트에서 불필요한 요소를 제거하고 수정

          • Lowcase, Remove Accents, Parse html, Remove urls

- 토큰화 : Tokenization

          • 문서에서 문장을 분리, 또는, 문장에서 단어를 분리

          • 정규 표현식 : Regular Expression

                    - 규칙을 기반으로 토큰을 분리할 수 있다.

- 정규화 : Normalization

          • 불용어 (Stopwords) 처리 : 분석에 필요하지 않은 단어를 제거

          • 출현 빈도수가 높은 단어만 선택

- 필터링 : Filtering

          • 형태소 분석 : 같은 의미지만 서로 다른 단어들을 하나의 단어로 일반화

                    - 어간 추출 : Stemming

                    - 표제어 추출 : Lemmatization

- N-그램 : N-grams Range

          • 분석 결과의 단위를 연속적인 N개의 토큰으로 구성

- 품사 태깅 : POS Tagger

          • 각 단어의 품사를 태그 하여 단어의 의미 파악

                    - fly : 파리 / 날다

                    - 파리 : 프랑스 파리, 곤충 파리

 

 

단어 가방 : Bag of Words, BoW

문서(Document)에 포함되어 있는 단어(Word)의 빈도 수로 특징 추출

순서나 문맥을 무시하고 가방에 단어를 담기 때문에 처리가 간단함

 

D.1 : John likes to watch movies. Mary likes movies too.

D.2 : Mary also likes to watch football games.

 

BoW.1 : John:1, likes:2, to:1, watch:1, movies:2, Mary:1, too:1

BoW.2 : Mary:1, also:1, likes:1, to:1, watch:1, football:1, games:1

 

 

단어 빈도 : TF, Term Frequency

특정 단어가 문서 내에서 얼마나 자주 등장하는가?

 

BoW.1 : John:1, likes:2, to:1, watch:1, movies:2, Mary:1, too:1

BoW.2 : Mary:1, also:1, likes:1, to:1, watch:1, football:1, games:1

 

 

문서-단어 행렬 : DTM, Document-Term Matrix

문서별로 해당 단어가 몇 번 나타나는가를 표시한 행렬

Term Frequency

- Count : 단어가 나타나는 횟수로 만드는 경우

- Binary : 단순하게 단어가 포함되어 있는가의 여부

- Sublinear : 단어 빈도(TF)의 로그값

 

 

문서 빈도 : DF, Document Frequency

단어의 빈도수만으로 벡터화를 할 경우, 단어의 중요성을 간과하게 된다.

- 예) The anatomy of a large-scale hypertextual web search engine.

 

특별한 단어에 가중치를 주는 방법 : 단어의 희소성을 고려

- 개별 문서에 자주 나타나는 단어는 높은 가중치를 주되,

- 모든 문서에 전반적으로 자주 나타나는 단어에 대해서는 페널티를 부여

 

Document Frequency

- IDF : Inverse Document Frequency

- Smooth IDF : Divide-by-Zero 방지를 위해 DF에 1을 더한 값을 사용한다.

 

 

TF-IDF : Term Frequency - Inverse Document Frequency

텍스트 마이닝과 정보 검색에서 많이 이용하는 가중치 부여 방법

TF-IDF는 단어 빈도(TF)와 역 문서 빈도(IDF)를 곱한 값

- 전체 문서를 D, 문서를 d, 단어를 t라 할 때

- TFIDF(t, d, D) = TF(t, d) ∗ IDF(t, D)

- TF(t, d) = 0.5 + 0.5 * f(t, d)  / max {f(w, d) : w∈d}

- IDF(t, D) = log |D| / {d∈D : t∈d}

 

 

단어 가방의 한계

희소 행렬 : Sparse Matrix

- 많은 문서에서 많은 단어를 추출하면 단어 집합의 크기가 커지고,

- 각 문서에 포함된 단어의 수는 일정하므로, 매우 큰 희소 행렬이 된다.

- 희소 행렬의 연산에 적절한 행렬 처리가 필요하다.

 

문맥과 의미 : Contexts and Semantics

- BoW는 단어의 순서를 고려하지 않으므로 문맥적 의미를 무시한다.

- 단어와 문장의 순서를 고려하여 문맥과 의미를 반영할 필요가 있다.

728x90

 

텍스트 분류 : Text Classification

주어진 문서를 특정 카테고리로 분류하는 기법

- 예) 뉴스 기사 자동 분류, 스팸 메일 필터링

 

 

나이브 베이지안 분류기: Naïve Bayesian Classifier

특징변수(feature)가 서로 독립사건이라는 순진한 가정하에

- 베이즈 정리를 적용하여 확률적으로 목적변수(target)를 추론하는 분류기

 

• 예) 스팸 메일 분류기, 암 진단

 

확률 : Probability

시행, 사건, 확률: trial, event, and probability

- 시행 = 동전 던지기, 사건의 집합: S = {𝐻, 𝑇}

- 확률 : 𝑃 𝐻 = 동전 던지기를 했을 때, 앞면(𝐻)이 나올 확률

- 사건 : 상호배타적이고 포괄적(mutually exclusive and exhaustive)

 

 

결합 확률 : Joint Probability

𝑃(𝐴 ∩ 𝐵) : 두 사건 𝐴와 𝐵가 동시에 일어날 확률

 

독립 사건 : Independent Events

- 사건 𝐴가 일어나는 것과 무관하게 사건 𝐵가 일어나는 경우

- 예) 𝐴 : 동전의 앞면이 나오는 사건, 𝐵 : 주사위의 짝수가 나오는 사건

 

종속 사건 : Dependent Events

- 두 사건 A와 B가 독립사건이 아닌 경우

- 예) 𝐴 : 주사위의 홀수가 나오는 사건, 𝐵 : 주사위의 소수가 나오는 사건

 

두 사건 A, B가 독립사건일 경우

- 𝑃(𝐴 ∩ 𝐵) = 𝑃(𝐴) × 𝑃(𝐵)

 

 

조건부 확률 : Conditional Probability

𝑃(𝐴 | 𝐵): 사건 𝐵가 발생한 경우, 사건 𝐴가 발생할 확률

두 사건 A와 B가 독립사건이라면,

- 𝑃(𝐴 | 𝐵) = 𝑃(𝐴∩𝐵) / 𝑃(𝐵)

- 𝑃(𝐵 | 𝐴) = 𝑃(𝐴∩𝐵) / 𝑃(𝐴)

- 따라서, 𝑃(𝐴 | 𝐵) × 𝑃(𝐵) = 𝑃(𝐵 | 𝐴) × 𝑃(𝐴)

 

오피니언 마이닝과 감성 분석 : Opinion Mining & Sentiment Analysis

문서의 감정을 긍정/중립/부정 등으로 파악하기 위한 방법

소셜 미디어, 온라인 리뷰, 영화 댓글 분석 등에 다양하게 활용

 

 

감성 분석을 위한 지도 학습

학습 데이터에 긍정/부정/중립 등의 벨이 포함되어 있다.

기존의 텍스트 기반 분류 알고리즘과 동일한 방법으로 분석 가능하다.

 

 

감성 분석을 위한 비지도 학습

어휘 사전(Lexicon)을 기반으로 텍스트의 감성을 분석

 

감성 지수(극성 점수) : Polarity Score

- 부정(-1)에서 긍정(+1)까지, 감성의 정도를 의미하는 점수

- 단어의 위치, 주변 단어, 문맥, 품사(POS) 등을 고려해서 점수 부여

 

감성 분석을 위한 라이브러리

- Liu-Hu : NLTK에 포함된 Lexicon 기반의 감성 분석 모듈

- VADER : 소셜 미디어의 텍스트에 특화된 감성 분석 모듈

- SentiArt : VSM(Vector Space Model) 기반의 감성 분석 모듈

728x90