비정형 데이터 분석 · 텍스트마이닝·SNA
텍스트마이닝 전처리와 TDM·TF-IDF 계산, 토픽모델링과 감성분석, 사회연결망분석의 중심성 지표를 다룹니다.
비정형 데이터 분석의 범위
| 분석 | 대상 |
|---|---|
| 텍스트마이닝 | 문서, 리뷰, SNS 글, 뉴스 |
| 오피니언(감성) 마이닝 | 평가·의견이 담긴 텍스트의 긍·부정 |
| 사회연결망분석(SNA) | 관계·연결 구조 |
| 웹 마이닝 | 웹 내용 / 구조(링크) / 사용(로그) 마이닝 |
텍스트마이닝 절차
수집 → 전처리 → 구조화(TDM/DTM) → 분석(분류·군집·토픽·감성) → 시각화
전처리 단계
| 단계 | 내용 |
|---|---|
| 정제(cleansing) | 특수문자·HTML 태그·숫자 제거, 대소문자 통일 |
| 토큰화(tokenization) | 문장을 단어·형태소 등 의미 단위로 쪼갬 |
| 불용어 제거(stop words) | 조사·관사처럼 의미 기여가 적은 단어 제거 (은/는/이/가, the, a) |
| 어간추출(stemming) | 규칙으로 접사를 잘라냄. 빠르지만 사전에 없는 형태가 나올 수 있음 (studies → studi) |
| 표제어추출(lemmatization) | 품사·사전을 이용해 기본형(원형) 으로 환원 (studies → study, went → go) |
| 품사 태깅(POS tagging) | 각 토큰에 명사·동사 등 품사 부착 |
| 개체명 인식(NER) | 인명·지명·기관명 식별 |
단골 함정: 어간추출은 사전을 안 쓰고 규칙으로 자르므로 결과가 실제 단어가 아닐 수 있고, 표제어추출은 사전·품사를 써서 반드시 실제 단어가 됩니다. 속도는 어간추출이 빠릅니다. 둘을 뒤집어 놓은 선택지가 자주 나옵니다.
한국어는 교착어라 어절 단위로는 안 되고 형태소 분석이 필수입니다. N-gram은 연속한 n개 토큰을 하나로 묶어 문맥을 일부 담는 방법입니다(bi-gram, tri-gram).
TDM과 DTM
| 행렬 | 행 | 열 |
|---|---|---|
| TDM (Term-Document Matrix) | 단어 | 문서 |
| DTM (Document-Term Matrix) | 문서 | 단어 |
둘은 서로 전치(transpose) 관계입니다. 값에는 단순 출현 빈도(Bag of Words)나 TF-IDF 가중치를 넣습니다. 어휘 수만큼 열이 생기므로 대부분의 칸이 0인 희소행렬(sparse matrix) 이 되고, 차원 축소(SVD, LSA)가 필요합니다.
Bag of Words는 단어의 순서를 무시하고 빈도만 셉니다 — 이것이 BoW의 한계입니다.
TF-IDF 계산
문서 집합 전체에서 그 단어가 특정 문서를 얼마나 잘 대표하는가를 나타내는 가중치입니다.
- TF(단어 빈도): 한 문서 안에서 그 단어가 나온 횟수 (또는 문서 길이로 나눈 상대빈도)
- DF(문서 빈도): 그 단어가 등장한 문서의 개수
- IDF(역문서 빈도): log(전체 문서 수 N / DF)
- TF-IDF = TF × IDF
계산 예 1. 전체 문서 N = 1,000개. 단어 "머신러닝"이 100개 문서에 등장(DF = 100). 문서 A는 총 500단어이고 그중 "머신러닝"이 10회 등장. TF = 10 / 500 = 0.02 IDF = log(1000 / 100) = log(10) = 1 (상용로그) TF-IDF = 0.02 × 1 = 0.02
계산 예 2. 같은 문서 집합에서 단어 "하다"가 1,000개 문서 전부에 등장(DF = 1,000). IDF = log(1000 / 1000) = log(1) = 0 → TF가 아무리 커도 TF-IDF = 0.
핵심 성질을 문장으로 외웁니다.
- 한 문서에 많이 나오면 → TF↑ → 가중치↑
- 여러 문서에 골고루 나오면 → DF↑ → IDF↓ → 가중치↓
- 모든 문서에 나오는 단어의 가중치는 0
가장 자주 틀리는 지점: "TF-IDF는 전체 문서에서 많이 등장한 단어에 높은 값을 준다"는 오답입니다. TF-IDF는 흔한 단어를 깎아내리는 가중치입니다.
워드클라우드
단어의 빈도(또는 TF-IDF)를 글자 크기로 표현한 시각화입니다. 직관적이지만 정확한 수치 비교나 단어 간 관계 표현은 못 합니다 — 탐색용이지 분석 결론용이 아닙니다.
토픽 모델링
문서 집합에 숨어 있는 주제(토픽) 를 찾아내는 비지도 기법입니다.
| 기법 | 원리 |
|---|---|
| LSA / LSI | DTM에 특이값분해(SVD) 를 적용해 잠재 의미 차원 추출 |
| LDA (Latent Dirichlet Allocation) | 문서 = 토픽들의 확률 분포, 토픽 = 단어들의 확률 분포. 사전분포로 디리클레 분포 사용 |
LDA에서는 토픽 수 k를 분석자가 미리 지정해야 하고, 각 문서는 하나가 아니라 여러 토픽의 혼합으로 표현됩니다. 결과는 토픽별 상위 단어 목록으로 해석하며, 토픽의 이름은 사람이 붙입니다.
LDA는 선형판별분석(Linear Discriminant Analysis)의 약자와 같아서 헷갈립니다. 텍스트마이닝 문맥의 LDA는 잠재 디리클레 할당입니다.
감성분석(오피니언 마이닝)
텍스트의 긍정·부정·중립 성향과 강도를 판별합니다.
| 접근 | 방식 | 특징 |
|---|---|---|
| 어휘(사전) 기반 | 감성어 사전의 극성 점수를 합산 | 학습 데이터 불필요, 도메인 이동에 약함 |
| 머신러닝 기반 | 라벨된 데이터로 분류기 학습 | 정확도 높음, 라벨링 비용 발생 |
| 딥러닝 기반 | RNN·LSTM·트랜스포머로 문맥 반영 | 부정어·반전 표현 처리 유리 |
난점은 부정어("나쁘지 않다")·반어·비꼼(sarcasm)·도메인 의존성입니다.
워드 임베딩
단어를 밀집 벡터로 바꿔 의미적 유사도를 거리로 다루는 방법입니다.
- Word2Vec — CBOW(주변 단어로 중심 단어 예측), Skip-gram(중심 단어로 주변 단어 예측)
- GloVe — 전역 동시출현 통계 기반
- FastText — 단어를 부분 문자(subword)로 쪼개 미등록 단어(OOV) 에 강함
원-핫 인코딩은 차원이 어휘 수만큼 커지고 단어 간 유사도가 항상 0이라는 한계가 있습니다.
사회연결망분석(SNA)
개체를 노드(node), 관계를 링크(edge) 로 보고 연결 구조를 분석합니다. 분석 방법은 집합론적 방법 · 그래프 이론 · 행렬(매트릭스) 방법 세 가지입니다.
중심성(Centrality) — 4대 지표
| 중심성 | 정의 | 해석 |
|---|---|---|
| 연결정도 중심성 (Degree) | 한 노드에 직접 연결된 링크 수 | 활동적·인기 있는 노드 |
| 매개 중심성 (Betweenness) | 다른 두 노드의 최단경로 위에 놓이는 정도 | 정보 흐름의 중개자·브로커. 끊기면 네트워크가 분리됨 |
| 근접 중심성 (Closeness) | 다른 모든 노드까지의 거리 합의 역수 | 전체에 빠르게 도달하는 노드 |
| 위세 중심성 (Eigenvector) | 영향력 큰 노드와 연결될수록 커짐 | 연결 수보다 연결 상대의 질 |
연결정도 중심성 표준화: (연결된 노드 수) / (n − 1)
계산 예. 노드가 6개인 네트워크에서 A가 4개 노드와 직접 연결되어 있으면 연결정도 중심성 = 4 / (6 − 1) = 0.8
단골 함정: 매개 중심성 = 사이에 끼어 있는 정도, 근접 중심성 = 가까이 있는 정도, 위세 중심성 = 힘 있는 친구를 둔 정도. "연결 수가 가장 많은 노드가 항상 매개 중심성도 가장 높다"는 오답입니다. 연결 수는 적어도 두 클러스터를 잇는 유일한 다리라면 매개 중심성이 최고가 됩니다.
밀도와 응집력
밀도(density) = 실제 링크 수 / 가능한 최대 링크 수. 무방향 그래프에서 가능한 최대 링크는 n(n − 1) / 2입니다.
계산 예. 노드 5개, 실제 링크 6개. 가능한 최대 링크 = 5 × 4 / 2 = 10 → 밀도 = 6 / 10 = 0.6 방향 그래프라면 최대 링크가 n(n − 1) = 20이 되어 밀도 = 0.3
| 개념 | 의미 |
|---|---|
| 연결 정도(degree) | 노드에 연결된 링크의 수 |
| 포괄성(inclusiveness) | 전체 노드 중 연결된(고립되지 않은) 노드의 비율 |
| 밀도(density) | 가능한 연결 중 실제 연결의 비율 |
| 응집력(cohesion) | 하위 집단이 얼마나 강하게 뭉쳐 있는가 |
| 클리크(clique) | 모든 구성원이 서로 직접 연결된 완전 부분 그래프 |
| 군집계수(clustering coefficient) | 이웃끼리도 서로 연결되어 있는 정도 |
| 컴포넌트(component) | 내부적으로 모두 도달 가능한 연결 덩어리 |
밀도는 네트워크 전체의 성질이고 중심성은 개별 노드의 성질입니다. "밀도가 높은 노드"라는 표현은 성립하지 않습니다.