[Python]Top2Vec 각 Document 별 Topic 찾기

배경

  • Top2Vec으로 토픽 모델링 이후 각 Document 별 해당되는 토픽을 알고자 할 때

해결책

  • Top2Vec의 Github 코드를 확인해보니, Single Underscore Function으로 있는 _calculate_documents_topic의 Return Value로 doc_top, doc_dist를 갖는데, doc_top은 각각 Document 별 Topic에 대한 List이다. 그리고 doc_dist는 Topic Vector와의 Distance 값이다.
  • "model.search_documents_by_topic(0, num_docs=1)" 형태로 Topic 0에 해당하는 Document 1개를 가지고 오라고 할 때 doc_top,doc_dist를 통해 가지고 온다.
  • 아직 모델이 개발중이라서 그런 것인지, 해당 변수에 대해서 model.doc_top, model.doc_list 형태로 바로 접근이 가능하다.
import numpy as np
import pandas as pd
from top2vec import Top2Vec
from sklearn.datasets import fetch_20newsgroups

np.random.seed(0)

# Data Loading
newsgroups = fetch_20newsgroups(subset='all', remove=('headers', 'footers', 'quotes'))

# Modeling 
model = Top2Vec(newsgroups.data, workers=4, embedding_model='universal-sentence-encoder')

model.search_documents_by_topic(0, num_docs=1)

위에까지 실행하고 나면 아래와 같은 결과를 볼 수 있다.

#(array(['Well, the Patrick Division got a little more interesting last night. ...dtype=object), array([0.7826741], dtype=float32), array([17864]))

위 내용은 17864번 인덱스 Document가 Topic Vector로부터 가장 가까이 있고 거리 값은 0.7826741이라는 것이다. 위 Document는  model.doc_top[17684], model.doc_list[17684]에서 확인할 수 있다.

Topic Vector은 다음과 같이 동일한 Cluster를 가지고 있는 Document Vector의 평균 값을 이용해서 생성하는 듯하다.(자세히 보지는 않았음)

self.topic_vectors = self._l2_normalize(
            np.vstack([self.document_vectors[np.where(cluster_labels == label)[0]]
                      .mean(axis=0) for label in unique_labels]))

Read more

DataFrame은 Pandera로, 모델은 Pydantic으로 데이터를 검증한다.

DataFrame은 Pandera로, 모델은 Pydantic으로 데이터를 검증한다.

Pandera: 데이터프레임 검증에 최적화된 도구 주요 장점 * Pandas와 통합: Pandas 데이터프레임에 대해 스키마 기반 검증을 수행합니다. * 유연한 검증 조건: 열 데이터 타입, 값 범위, Null 여부 등 다양한 검증 조건을 정의할 수 있습니다. * 명확한 오류 메시지: 스키마 불일치에 대한 명확한 오류 메시지를 제공합니다. 단점 * 대용량 데이터 검증에서는 속도가 느릴 수

Tobit Regression은 Censored Data에 적합한 Regression이다.

Tobit Regression은 Censored Data에 적합한 Regression이다.

Tobit Regression * Tobit 회귀(Tobit Regression)는 종속 변수가 특정 값에서 절단(Censored)된 상황에서 데이터를 분석하기 위해 사용되는 통계 기법입니다. * James Tobin이 처음 제안한 이 모델은 경제학과 사회과학 분야에서 자주 사용되며, 일반 선형 회귀로는 설명할 수 없는 상황에서 효과적으로 적용할 수 있습니다. Tobit Regression 수식 1. 관측된 종속 변수