Article Review

[LLM/정치학] Kangaslahti et al (2025) 온라인 텐서 LDA: 수억 개 정치 텍스트를 다루는 새로운 방법론

Dr. Julia 2025. 3. 30. 07:01

 

📚 온라인 텐서 LDA: 수억 개 정치 텍스트를 다루는 새로운 방법론

안녕하세요! 오늘은 2025년 Harvard, Caltech, NVIDIA 등의 연구진이 함께 발표한 흥미로운 논문 하나를 소개하고자 합니다. 논문 제목은 《Analyzing Political Text at Scale with Online Tensor LDA》인데요, 간단히 말하면 "정치 관련 수억 건의 트윗이나 텍스트를 주제별로 분석하는 아주 빠르고 정확한 방법"을 제안한 논문입니다.

특히 이 논문은 기존 LDA(잠재 디리클레 할당) 방식의 한계를 극복하면서도, 정확성 보장대규모 데이터 처리 능력을 동시에 갖춘 새로운 토픽 모델링 기법을 소개합니다. 오늘은 이 방법론이 왜 중요한지, 어떻게 작동하는지를 중심으로 차근차근 설명드릴게요.


🧠 왜 이 논문이 중요한가요?

정치학자나 사회과학자들은 요즘 트위터, 뉴스 기사, 의회 연설, 시위 슬로건 같은 엄청난 양의 텍스트 데이터를 다룹니다. 그런데 문제는 기존의 LDA 방법이 이런 "수백만~수십억 개 문서"를 분석하기엔 너무 느리고, 메모리도 많이 먹고, 정확성에 대한 이론적 보장이 없다는 점이었어요.

이 논문에서는 이를 해결하기 위해 **Tensor LDA(TLDA)**를 GPU 기반으로 온라인화(Online) 한 새로운 방법을 제안합니다.


 

⚙️ TLDA는 어떻게 작동하나요?

TLDA는 한마디로 말해서,
**“수많은 문서 안에 숨어 있는 주제(topic)를 찾아주는 똑똑한 도구”**예요.
하지만 기존 LDA보다 훨씬 빠르고, 정확하고, 똑똑하죠.

그럼 이 TLDA가 도대체 무슨 순서로, 무슨 일을 하길래 그렇게 강력한 걸까요?
아주 쉽게 설명해볼게요.


🧩 전체 구조 요약

  1. 문서를 숫자로 바꾼다 (Bag-of-Words)
  2. 전체 평균을 계산해서, 그걸 빼준다 (Centering / Demeaning)
  3. 차원을 줄인다 (PCA로 Whitening)
  4. 세 단어가 같이 등장하는 패턴을 본다 (3차 텐서 만들기)
  5. 그 텐서를 분해해서, 주제를 뽑아낸다 (Tensor Decomposition)
  6. 원래 단어들과 주제를 다시 연결한다 (Unwhitening + Re-centering)

🔢 1단계: 문서를 숫자로 바꾸기 (Bag-of-Words)

먼저, 트윗이나 뉴스 기사 같은 텍스트는 컴퓨터가 이해하기엔 너무 애매한 “글자”들이잖아요? 그래서 우리는 그걸 숫자 형태의 데이터로 바꿔야 해요.

가장 흔한 방식은 Bag-of-Words입니다.

  • 각 문서를 단어로 나누고(tokenizing),
  • 그 문서에 어떤 단어가 몇 번 나왔는지를 세요.
  • 예: "나는 학교에 간다" → {나는:1, 학교:1, 간다:1}

이렇게 하면 각 문서가 **“단어 개수 리스트”**로 표현돼요.
이걸 다 모으면 “문서-단어 행렬(document-term matrix)”이 됩니다.
행은 문서, 열은 단어, 값은 등장 횟수예요.


➖ 2단계: 평균을 빼서 ‘중심화’하기 (Centering = Demeaning)

모든 문서에 공통으로 많이 나오는 단어들이 있어요.
예: “사람”, “사회”, “문제” 같은 단어는 어떤 주제에도 나올 수 있죠.

그래서 우리는 각 단어의 **평균 등장 횟수(M1)**를 계산한 다음,
각 문서에서 그 평균값을 빼줍니다.

왜냐하면 이렇게 하면…

  • "모든 문서에서 공통적인 단어"의 영향력을 줄이고
  • "주제별로 특이하게 많이 등장하는 단어"가 더 잘 드러나거든요!

📌 이렇게 평균을 뺀 데이터를 centered data라고 부르고,
계산도 훨씬 간단해집니다. (수학적으로도 계산량을 크게 줄여줌!)


🔄 3단계: 차원을 줄여서 계산을 쉽게 만들기 (Whitening)

우리가 가진 단어는 수천수만 개가 될 수 있어요.
그런데 우리가 뽑고 싶은 주제(topic)는 보통 10
100개 정도죠.

그러면 굳이 수만 개 차원의 복잡한 계산을 할 필요가 없잖아요?
그래서 **PCA(주성분 분석)**를 이용해서 차원을 줄입니다.

이걸 Whitening(백색화)이라고 하는데, 핵심은:

  • 데이터를 "주제 수(K)" 차원으로 줄여서
  • 서로 독립적이고(=중복이 없고)
  • 평균이 0, 분산이 1인 데이터로 바꾸는 것

📌 이렇게 줄여야 이후의 텐서 계산이 현실적으로 가능해져요.
(안 그러면 메모리도 터지고, 속도도 느림!)


🧱 4단계: 세 단어가 함께 나오는 패턴 보기 (3차 텐서 만들기)

이제 중심화된 데이터에서
단어 3개가 같이 등장하는 조합들을 본격적으로 계산합니다.

예를 들어, 이런 걸 보는 거예요:

  • "성폭력", "피해자", "용기"가 자주 같이 등장하면, 이 셋은 같은 주제겠죠?

이렇게 세 단어의 동시 등장(co-occurrence)을 보면,
단어 간의 숨겨진 관계나 흐름을 더 정교하게 잡을 수 있어요.

📌 이걸 수학적으로 표현하면 3차원 배열 = **3차 텐서(M3)**예요.
하지만 Whitening 덕분에 크기가 작아졌기 때문에 계산이 가능한 거예요.


🔍 5단계: 텐서를 분해해서 주제를 뽑는다 (Tensor Decomposition)

자, 이제 만들어진 3차 텐서를 분해해서
‘주제별 단어 분포’를 찾아내는 단계예요.

어떻게 하냐면?

  • 텐서를 여러 개의 “작은 벡터들의 곱”으로 표현해요.
  • 이걸 CP 분해 (CANDECOMP/PARAFAC) 라고 해요.
  • 반복적으로 정답에 가까운 벡터를 찾기 위해
    **Stochastic Gradient Descent (SGD)**로 학습해요.

한 줄 요약:

자주 같이 나오는 단어들의 패턴을 학습해서, "이게 하나의 주제다!" 라고 묶어주는 작업


♻️ 6단계: 다시 원래대로 돌리기 (Unwhitening & Re-centering)

이제 마지막 단계입니다!

  • 앞에서 Whitening과 Centering을 했잖아요?
  • 그럼 이제 Unwhitening(원래 차원으로 되돌리기)
  • 그리고 **Re-centering(평균값 다시 더해주기)**를 해야
  • 원래 단어들이랑 잘 연결된 ‘진짜 주제 분포’를 얻을 수 있어요.

최종적으로 얻는 건 두 가지:

  1. 주제별 단어 분포 (이 주제는 어떤 단어들로 구성됐는지?)
  2. 문서별 주제 분포 (이 문서는 어떤 주제들로 구성됐는지?)

✅ TL;DR 요약하면...

단계하는 일왜 중요한가요?
1단계 문서를 숫자로 바꿈 (단어 등장 횟수) 컴퓨터가 텍스트를 다루게 하기 위해
2단계 평균 단어 분포 빼기 (Centering) 공통 단어 제거, 계산 효율성 향상
3단계 차원 축소 (Whitening) 계산 용이성, 데이터 압축
4단계 단어 3개 조합 계산 (M3) 더 풍부한 주제 정보 포착
5단계 텐서 분해로 주제 추출 주제-단어 구조 학습
6단계 다시 원래 차원으로 변환 실제 단어와 연결된 주제 완성

🔁 온라인 학습이란?

이 방법의 또 다른 장점은, 데이터를 한 번에 다 불러오지 않고도, 조금씩 받아들이면서 계속 업데이트할 수 있다는 점이에요.

예를 들어, 1억 개의 트윗이 있다고 해봅시다. 이걸 한꺼번에 컴퓨터에 불러오기 어렵죠. 대신에, 10만 개씩 조금씩 읽어오면서 중간 결과를 업데이트하면 메모리도 적게 쓰고, 처리 속도도 훨씬 빨라요.

이걸 **온라인 학습(Online Learning)**이라고 부릅니다. TLDA는 이걸 완전히 지원합니다.


💻 GPU로 더 빨라진다

이 논문에서는 모든 계산을 GPU에서 돌릴 수 있도록 구현했어요. CPU보다 훨씬 빠르고 병렬 연산이 가능하니까, 수억 건의 문서도 몇 시간 만에 분석이 가능해졌죠.

논문에서 제시한 예시로는:

  • #MeToo 관련 트윗 800만 개 분석 → 단 2분 내외
  • 10억 개 문서 분석도 약 13시간이면 완료!

🎯 실제 정치 연구에 어떻게 쓰였나?

이 방법을 사용해 두 가지 실제 데이터를 분석했어요.

  1. #MeToo 운동의 트윗 800만 개 분석
    • 시간이 지남에 따라 주제가 어떻게 진화했는지를 추적
    • 초기엔 정치적 이슈(카바노 청문회), 후기엔 개인 증언 중심
  2. 2020 미국 대선 후 선거 조작 관련 트윗 2900만 개 분석
    • 선거 불복, 법적 대응, 선거 결과 수용 등 세 가지 주제로 분류
    • 1월 6일 의사당 폭동 즈음, 불복 메시지가 급증한 것도 포착

이처럼, 기존에는 어려웠던 시계열적 토픽 변화 분석이 이제 가능해졌습니다.


📦 오픈소스 Python 패키지도 제공!

마지막으로, 이 방법은 오픈소스로도 제공되며, 누구나 사용할 수 있게 되어 있습니다. 이름은 TensorLy-TLDA, 설치도 간편합니다:

👉 https://tensorly.org/tlda/dev/


✍️ 마무리

요약하자면, 이 논문은 다음과 같은 점에서 정말 의미가 큽니다.

  • 기존 LDA보다 훨씬 빠르고 효율적
  • 수억 건의 문서도 분석 가능
  • 이론적 정확성 보장
  • 완전한 오픈소스와 GPU 구현
  • 정치학 등 사회과학 연구에 실질적인 도움

특히 정치학에서 실시간 SNS 데이터를 활용한 연구는 점점 중요해지고 있는데, 이제는 방대한 텍스트 데이터를 실시간에 가깝게 다룰 수 있는 길이 열린 셈이죠.