0

수천 개의 위키피디아 자료로 구성된 레이블이없는 데이터 세트가 있습니다.
이 기사는 내용면에서 밀접한 관련이있는 기사 모음으로 그룹화됩니다.
이 세트 중 하나가 주어지면 모든 기사가 속한 공통 주제를 결정하고 싶습니다.관련 위키피디아 기사의 공통 주제를 찾아보십시오.

예 :

{미적분, 행렬, 정수론}

내가 공통 주제 수학 것을 확인할 수 있습니다 자신의 제목으로 관련 기사의 다음과 같은 설정을 감안할 때
.

각 기사의 텍스트를 분석하여 프로그래밍 방식으로이 작업을 수행하는 간단한 방법이 있습니까?
매우 정확하고 정밀 할 필요는 없습니다.
이것이 가능하지 않은 경우 관련 기사 모음을 가장 정확하게 나타내는 단어 목록만으로 충분할 것입니다.

답변

1

클러스터 레이블을 지정하는 표준 방법은 tf-idf 점수로 기사의 용어를 내림차순으로 정렬 한 다음 해당 클러스터에 가장 적합한 설명어로 상위 3 개를보고하는 것입니다.

보다 정확하게, 다음 tf-idf 용어 점수를 사용할 수 있습니다. 여기서 tf (t, C)는 클러스터 'C'의 용어 't'의 가중치입니다. 여기

score(t, C) = log (1 + \lambda/(1-\lambda) * tf(t, C)/\sum_{t' in C} tf(t', C) * cs/cf(t)) 

, TF (t, C)/\ sum_ {t 'C에서} TF (t', C) 단순히 클러스터 C에서 샘플링 기간 (T)의 최대 가능성을 나타내고, CS/cf (t)은 용어 't'의 수집 빈도에 대한 수집 크기의 비율을 나타냅니다 (t가 다른 클러스터에서는 상대적으로 드문 경우이 값은 cf (t)이 낮기 때문에 높습니다).

따라서이 클러스터에는 더 자주 용어가 사용됩니다 (예 : '수학'은 예제 클러스터의 모든 문서에서 공통적 인 용어 임).이 용어는 나머지 클러스터에서는 흔하지 않습니다 '수학'은 다른 학문에서는 거의 사용되지 않을 것임)이 용어는 클러스터 레이블과 같은 대표 용어로 선택 될 것입니다.

람다을 사용하면 용어 빈도 구성 요소와 연결할 상대적인 중요도를 제어 할 수 있습니다. 람다의 좋은 선택은 0.6입니다.

+0

분명히 tf-idf는 문서 용어 행렬을 메모리에 저장해야합니다. 관련 문서를 하나의 문서로 결합하여 문서 수를 수백 개로 줄일 수는 있지만 위키의 용어 수는 잠재적으로 수십억입니다. 매트릭스에서 필요한 양을 줄이기 위해 용어를 사전 처리하는 방법이 있습니까? –

+0

용어의 수는 걱정하지 않아도됩니다 ... 문제가되는 어휘 크기 (# 용어)는 ... 백만 개 이내 여야합니다 ...이 번호가 너무 높다면 너무 낮은 수집 빈도 (가능한 잡음이 많은 용어) 또는 너무 높은 빈도 (비공식 용어 일 수도 있음)가있는 용어 ... 중지 단어 제거도 필수입니다 ... – Debasis

0

더 넓은 범위에서 동일한 문제를 해결하는 "Experiments on the English Wikipedia"이라는 좋은 자습서가 있습니다. gensim과 Python을 사용하는 솔루션을 제공합니다. 이 튜토리얼은 Wikipedia의 모든 기사를 읽고, 코퍼스를 만들고 LSA (Latent Semantic Analysis)와 LDA (Latent Dirichlet Allocation)를 사용하여 주제를 생성하는 전체 과정을 안내합니다.

+0

라이브러리를 사용하지 않고 tf-idf를 사용하여이 작업을 수행 할 수 있습니까? –