[Week 14] Day 3 - TIL

Topics

  • Topic modeling
  •  

 

Topic modeling

  • Topic : 문서 집합 안에서 논의되는 주제나 개념을 의미함.
  • Modeling : 통계적인 방법으로 데이터의 패턴을 추출하는 과정을 의미함.

따라서, Topic modeling 은 대규모 텍스트 데이터 안에 존재하는 다양한 주제를 자동으로 식별하고 분류하는 과정으로, 이를 통해 데이터 안에 숨겨진 주제 구조를 발견하고 이해하려고 한다. 텍스트 마이닝, 자연어 처리, 정보 검색 등 다양한 분야에서 활용한다.

 

 

Topic modeling 주제

  • 토픽 모델링의 주제는 일반적으로 단어의 집합으로 표현한다.
  • 텍스트 내의 특정 패턴이나 빈도를 기준으로 선택한다.
  • 데이터 소스에 따라서 주제의 범위가 결정되고, 하나의 문서에 다수의 주제가 포함될 수 있다.
  • 데이터의 트렌드와 특정 이벤트를 반영하는 경향이 있다
  • 선택된 주제는 다른 텍스트 분석에 긍정적인 도움이 되는 방향으로 사용될 수 있다. (ex 특정 주제와 비슷한 텍스트 추려내기, 분석 결과를 해석하는 과정에서 토픽과 관련된 부분만 취하기 등)

Topic modeling 사례

1. 직원 복지를 위해 설문 결과를 분석하는 Dell 회사

이 회사는 많은 직원들의 고민과 생각을 알고 싶어하는데, 이를 위해 직원 만족도 설문 조사를 분석하여 약 10,000개가 넘는 텍스트 설문 조사를 진행하였다. 이 과정에서 토픽 모델링을 활용하여 직원들의 의견을 빠르고 직관적으로 파악이 가능하였고, 운영 효율이 증가하였다.

 

2. Naver 검색어 트렌드

네이버에서 제공하는 인기 검색어는 사람들의 관심도와 전반적인 트렌드를 확인할 수 있다. 이를 통해 사업 인사이트, 마케팅 아이디어 등을 얻을 수 있다.

 

 

 

Topic modeling 대표 모델

LDA

LDA (Latent Dirichlet Allocation) 은 문서에 내재되어있는 토픽을 찾아가는 알고리즘으로, 전체 문서는 여러 개별적인 문서들의 집합으로 구성되며 하나의 개별 문서는 여러 개의 주제로 구성되고, 하나의 주제는 여러 단어들로 구성된다는 가정을 기반으로 한다.

 

예를 들어, 아래와 같은 문장이 존재한다고 가정해보자.

문서 1 : 우리 부모님은 건강을 위해 아침마다 수영을 하시고 저녁에는 산책을 합니다. 

문서 2 : 나와 동생은 햄버거를 좋아합니다. 특히 치킨이 들어간 햄버거를 좋아하고, 어제는 피자를 먹었습니다.

문서 3 : 오늘은 나의 생일이라 햄버거를 먹었습니다. 그런데 살이 너무 많이 쪄서 산책수영을 시작했습니다.

 

문서 내에 몇 개의 토픽이 존재할지는 사용자가 정의한다. 위의 예에서는 2개의 토픽이 있다고 가정하였다. 이를 토대로 LDA를 진행하면 다음과 같다.

  • 문서 1은 A 토픽이 존재한다.
  • 문서 2는 B 토픽이 존재한다.
  • 문서 3은 A 토픽과 B 토픽이 혼재한다. 할당된 단어를 확인한 결과, A 결과는 "운동", B 결과는 "먹거리" 로 이름을 정할 수 있다.

각 문서를 구성하는 토픽의 구성은 다음과 같다.

  • 문서 1 : 100% 토픽 A / 문서 2 : 100% 토픽 B / 문서 3: 67% 토픽 A & 33% 토픽 B

또한, 각 토픽을 구성하는 단어는 다음과 같다.

  • 토픽 A : 건강 (20%) / 수영 (40%) / 산책 (40%)
  • 토픽 B : 햄버거 (60%) / 치킨 (20%) / 피자 (20%)

이렇게 확률이나 비율의 집합을 분포로 나타낸 것을 Dirichlety 분포라고 한다. LDA는 문서 표면에 드러나지 않은 숨어있는 토픽의 확률 분포(Latent Dirichlet)를 가정하고 각 단어를 토픽에 할당(Allocation)하는 분석 방법이다.

 

LDA Algorithm

LDA 알고리즘을 결정짓는 중요한 두 확률값이 존재한다.

 

1. 문서에 어떤 토픽이 들어있는가 : P(토픽 t | 문서 d)

특정 문서 d 에서 토픽 t가 차지하는 비율로, 문서에서 각 토픽이 얼마나 중요한지를 나타낸다.

2. 각 토픽에 어떤 단어가 들어있는가 : P(단어 w | 토픽 t)

특정 토픽 t 에서 단어 w가 차지하는 비율로, 토픽에 특정 단어가 나타낼 확률이다.

 

최종적인 LDA의 목적은 P(토픽 t | 문서 d, 단어 w) 를 구하는 것이다. 이것은 특정 단어가 어떤 문서의 주제에 속할 확률이다. 즉, 어떤 단어가 문서의 주제와 얼마나 잘 맞는지를 나타내는 것이다. 이 값이 크면 특정 단어가 그 문서의 주제와 매우 밀접한 관련이 있음을 의미한다.

이 값이 LDA 에서 최종적으로 유추해야 하는 값이지만 직접적으로 구하기 어렵다. 그래서 이와 비례하는 값인 P(토픽 t | 문서 d) x P(단어 w | 토픽 t) 의 값을 구하여 대체한다.

 

알고리즘 적용 과정 

1. 토픽 개수 K 설정한다. (이것은 사용자가 정의한다)

 

2. 문서 내 모든 단어에 무작위로 토픽 K개 중 하나를 할당한다.

 

3. 단어 w의 토픽 할당을 결정하기 위해 나머지 단어들의 할당 결과를 활용한다. 여기서, P(토픽 t | 문서 d) x P(단어 w | 토픽 t) 의 값을 계산한다. 이 값이 제일 커지는 t를 w에 재할당하고, 전체 문서의 모든 단어들을 대상으로 연산을 진행해 종료 시점에 도달할 때까지 반복적으로 진행한다. 종료 시점은 "w에 할당된 t의 변화가 없는 시점까지", "정해진 업데이트 횟수 도달까지" 등 다양한 시점을 적용하는데, 단어가 너무 많아지면 변화가 미미하게라도 발생하여 사용자의 경험이 중요하다.

 

4. 토픽에 존재하는 단어를 보고 토픽이 의미하는 주제를 사용자가 정의하고, 할당된 토픽을 기준으로 문서에 존재하는 토픽을 분석하는 최종 결과를 분석한다.

 

 

'Bootcamp' 카테고리의 다른 글

[Week 14] Day 2 - TIL  (1) 2024.02.28
[Week 14] Day 1 - TIL  (0) 2024.02.23
[Week 11] Day 2 - TIL  (0) 2024.02.06
[Week 11] Day 1 - TIL  (0) 2024.02.05
[Week 10] Day 1 - TIL  (1) 2024.02.05