728x90
반응형
1. 언어 모델 (Language Model) 개요
- 언어 모델은 단어 시퀀스(문장)에 확률을 할당하는 모델로, 주어진 문맥에서 가장 자연스러운 단어의 조합을 찾는 데 사용됩니다.
- 예를 들어, 기계 번역, 오타 수정, 음성 인식 등에서 다음에 올 단어를 예측하는 데 사용됩니다.
- 조건부 확률을 사용하여 단어가 등장할 확률을 계산합니다. 예를 들어, 문장 "나는 버스를 탔다"와 "나는 버스를 태운다"에서 확률이 더 높은 쪽을 선택합니다.
2. 통계적 언어 모델 (SLM)
- 통계적 언어 모델은 조건부 확률 (Conditional Probability)과 연쇄 규칙 (Chain Rule)을 사용하여 문장의 확률을 계산합니다.
- 예를 들어, 문장 "A little boy is smiling"의 확률은 각 단어가 이전 단어들에 따라 나올 확률로 계산됩니다:
- P(A little boy is smiling) = P(A) × P(little | A) × P(boy | A little) × P(is | A little boy) × P(smiling | A little boy is).
- 카운트 기반 확률 계산: 코퍼스에서 단어들의 빈도를 카운트하여 확률을 계산합니다.
- 예: "A little boy"가 100번 등장했을 때 "is"가 그 뒤에 나오는 경우가 30번이라면, P(is | A little boy) = 0.3입니다.
한계 - Sparsity 문제
- 방대한 학습 데이터가 필요하고, 모든 가능한 단어 조합을 포함하지 못해 **희소 문제(sparsity problem)**가 발생할 수 있습니다.
3. N-gram 언어 모델
- N-gram 모델은 통계적 언어 모델의 일종으로, 이전에 등장한 일부 단어만을 고려하여 다음 단어를 예측합니다.
- Unigram: 단일 단어로 확률 계산.
- Bigram: 이전 단어 한 개와 현재 단어의 관계로 확률 계산.
- Trigram: 이전 두 개의 단어와 현재 단어의 관계로 확률 계산.
- N을 선택하는 트레이드오프:
- N이 크면 특정한 n-gram을 코퍼스에서 관찰하기 어려워지고,
- N이 작으면 모델의 근사 정확도가 낮아질 수 있습니다.
- 권장 N 값: 보통 5 이하로 설정하는 것이 좋습니다.
4. 언어 모델의 성능 평가 - Perplexity (PPL)
- Perplexity (PPL)은 언어 모델의 성능을 평가하는 지표로, 낮을수록 성능이 좋은 모델을 의미합니다.
- PPL은 분기계수(branching factor)로 생각할 수 있는데, 이는 언어 모델이 평균적으로 몇 개의 단어 중에서 선택하는지를 나타냅니다.
- 예를 들어, PPL(W) = 10이라면 해당 언어 모델은 평균적으로 10개의 단어 중에서 정답을 찾는다는 의미입니다.
5. 토픽 모델링 개요
- 토픽 모델링 (Topic Modeling)은 문서 집합에서 추상적인 주제(토픽)를 발견하기 위한 통계적 모델입니다.
- 텍스트의 숨겨진 의미 구조를 찾는 데 사용되며, 대표적인 방법으로 LSA (Latent Semantic Analysis)와 LDA (Latent Dirichlet Allocation)가 있습니다.
5.1 Latent Semantic Analysis (LSA)
- 잠재 의미 분석으로, 문서-단어 행렬 (Document-Term Matrix, DTM)이나 TF-IDF를 통해 단어의 빈도를 수치화하고, 이를 통해 문서 간의 잠재적 주제를 분석합니다.
- SVD (Singular Value Decomposition)를 활용하여 DTM의 차원을 축소하고, 문서와 단어 사이의 관계를 추출합니다.
- 장점: 구현이 쉽고, 문서의 유사도 계산에 유용.
- 단점: 새로운 데이터 추가 시 처음부터 다시 계산해야 하므로 업데이트가 어려움.
5.2 Latent Dirichlet Allocation (LDA)
- LDA는 문서가 토픽의 혼합으로 구성되어 있다고 가정하며, 각 토픽은 확률 분포에 기반해 단어들을 생성합니다.
- 알고리즘 과정:
- 사용자로부터 토픽의 개수(k)를 입력 받습니다.
- 모든 단어를 k개의 토픽 중 하나에 랜덤으로 할당합니다.
- 각 단어를 적절한 토픽에 할당하며 p(topic | document)와 p(word | topic)을 기반으로 반복합니다.
- 이항 분포, 베타 분포, 다항 분포, 디리클레 분포 등의 다양한 통계적 개념을 활용하여 문서에서 토픽을 추출합니다.
6.1 Scikit-Learn을 활용한 실습
- Scikit-Learn의 Twenty Newsgroups 데이터를 사용하여 20개의 서로 다른 주제의 뉴스를 토픽 모델링합니다.
- LDA를 사용해 각 뉴스 그룹의 토픽을 추출하고, pyLDAvis를 통해 결과를 시각화할 수 있습니다.
728x90
반응형
'소셜네트워크' 카테고리의 다른 글
[소셜네트워크] 정규 표현식 (Regular Expression, RE)에 대하여 (0) | 2024.11.10 |
---|---|
[소셜네트워크] 감성 분석(Sentiment Analysis)에 대하여 (4) | 2024.11.09 |
[소셜네트워크] 자연어 처리 #2 (0) | 2024.10.23 |
[소셜네트워크] 자연어 처리 #1 (1) | 2024.10.23 |
[소셜네트워크] 연결성&중심성에 대하여 (0) | 2024.10.23 |