프디아를 수료하고 지도교수님께 몇 번 졸업논문 지도를 받고 나니 벌써 졸업시험이 코앞으로 다가왔다.
그래서 졸업시험 대비도 할 겸 대학원 강의를 통해 학습했던 내용을 블로그에 간단하게나마 정리해보려고 한다.
소셜 리스닝 (Social Listening) 이란?
소셜 미디어 플랫폼에서 고객 의견과 피드백을 모니터링 하고 분석하는 것
소셜 리스닝을 위한 크롤러 개발 시 자주 사용되는 라이브러리
Python 크롤링 라이브러리
- BeautifulSoup: HTML 문서를 구조적으로 파싱할 수 있는 라이브러리로, 정적 웹 페이지 크롤링에 적합하다.
- Selenium: 브라우저를 제어할 수 있어 동적 웹 페이지 크롤링에 효과적이다. 사용자의 행동도 시뮬레이션 할 수 있어 복잡한 페이지도 수집 가능하다.
Node.js 크롤링 라이브러리
- Cheerio: BeautifulSoup처럼 HTML 파싱을 위한 라이브러리로, 정적 웹 페이지 크롤링에 적합하다.
- Puppeteer: Selenium처럼 Chrome 브라우저를 제어할 수 있어 동적 웹 페이지 크롤링에 효과적이다.
텍스트 데이터 전처리 (Text Preprocessing) 과정
일반적으로 아래의 과정을 통해 텍스트 데이터를 전처리한다. 순서는 언어나 도구에 따라 바뀔 수 있다.
- 정제 (Cleaning): 특수문자, 중복 문자, HTML 태그, 불필요한 기호 등을 제거하여 텍스트를 깔끔하게 정리한다.
- 정규화 (Normalization): 대소문자 통일, 줄임말 변환 등 텍스트를 일관된 형태로 정리하며, 이 과정에는 어간 추출(Stemming)과 표제어 추출(Lemmatization) 같은 방법이 포함된다.
- 토큰화 (Tokenization): 분석 기준에 따라 텍스트를 토큰 단위로 분리한다.
- 불용어 제거 (Stopwords Removal): 분석에 불필요한 단어를 제거한다.
- 벡터화 / 인코딩 (Vectorization / Encoding): 텍스트 데이터를 컴퓨터가 이해할 수 있는 형태로 변환한다.
텍스트 인코딩 방법론 Tree 구조
├── 1. Local Representation (국소 표현)
│ ├── One-hot Encoding
│ ├── Bag of Words (BoW)
│ ├── TF-IDF
│ └── n-gram
│
├── 2. Distributed Representation (분산 표현)
│ ├── Word2Vec
│ │ ├── CBOW
│ │ └── Skip-gram
│ │
│ ├── Doc2Vec
│ │ ├── PV-DM (Distributed Memory)
│ │ └── PV-DBOW (Distributed Bag of Words)
│ │
│ ├── FastText
│ └── GloVe (Global Vectors)
│
└── 3. Contextualized Representation (문맥 기반 표현)
├── ELMo
└── BERT
TF-IDF (Term Frequency-Inverse Document Frequency)
- TF (단어 빈도): 특정 문서에서 특정 단어의 등장 횟수
- DF (문서 빈도): 특정 단어가 등장한 문서의 수, 흔히 등장하는 단어일 수록 DF 값이 커짐
- IDF (역문서 빈도): 전체 문서에서 얼마나 희귀한 단어인지를 나타냄
TF-IDF는 문서 내 단어의 상대적 중요도를 수치화하는 가중치 기반 벡터화 방법으로, 단어 빈도(TF)와 역문서 빈도(IDF)를 곱하여 계산한다. 특정 단어가 한 문서에서는 자주 등장하지만 전체 문서에서는 드물게 나타날수록 더 높은 중요도가 부여된다.
Word2Vec
단어 간의 관계를 통해 단어에 의미 행렬을 부여하는 방법론
- CBOW: 주변 단어들을 보고 중심 단어를 예측하는 방식
- Skip-gram: 중심 단어를 보고 주변 단어들을 예측하는 방식
텍스트 데이터 군집분석 (Clustering)
텍스트 데이터에서 유사한 주제나 의미를 가진 문서를 분류하기 위해 군집 분석을 사용한다.
대표적인 군집분석 방법론
- K-Means: 문서 또는 데이터를 벡터화한 후, 사용자가 지정한 k개의 중심(centroid)을 기준으로 데이터를 군집화한다. 각 데이터는 가장 가까운 중심에 할당되며 중심 위치는 반복적으로 업데이트된다.
- DBSCAN: 밀도 기반 군집화 기법으로 데이터의 밀집도(density)에 따라 군집을 형성한다. 노이즈(이상치)를 별도로 식별할 수 있으며 군집 수를 사전에 지정할 필요가 없다.
- Hierarchical Clustering: 데이터 간 유사도를 기준으로 점차적으로 데이터를 묶어가며 계층적 구조의 군집을 형성한다. 결과는 덴드로그램(dendrogram) 형태로 시각화할 수 있으며 계층 구조를 기준으로 원하는 군집 수를 선택할 수 있다.