잠재 된 디 리클 렛 할당을 사용한 주제 예측


17

나는 문서 모음에서 LDA를 사용했으며 몇 가지 주제를 발견했습니다. 내 코드의 출력은 확률을 포함하는 두 개의 행렬입니다. 하나의 의사 주제 확률과 다른 단어 주제 확률. 그러나 실제로 이러한 결과를 사용하여 새 문서의 주제를 예측하는 방법을 모르겠습니다. Gibbs 샘플링을 사용하고 있습니다. 아무도 방법을 알고 있습니까? 감사


1
"새 문서의 주제를 예측"한다는 것은 무엇을 의미합니까? 이 문서가 생성 된 단일 주제를 찾고 싶습니까? 문서에 대한 주제가 혼합되어 있습니까? 단어가 나온 주제로 새 문서의 각 단어에 레이블을 지정 하시겠습니까?
SheldonCooper

이 문서가 생성 된 단일 주제를 찾고 싶습니까? 문서에 대한 여러 주제를 찾고 싶습니까?-이 두 질문에 실제로 대답하고 싶습니다 ...하지만 내 말뭉치가 너무 커서 새 문서가있을 때마다 모든 모델을 재교육 할 수는 없습니다. 는 검사됩니다
Hossein

답변:


21

'접기'를 시도합니다. 이것은 하나의 새 문서를 가져 와서 코퍼스에 추가 한 다음 새 문서의 단어에 대해서만 Gibbs 샘플링을 실행 하여 이전 문서의 주제 할당을 동일하게 유지하는 것을 말합니다 . 이것은 일반적으로 빠르게 수렴되며 (아마도 5-10-20 회 반복) 오래된 코퍼스를 샘플링 할 필요가 없으므로 빠르게 실행됩니다. 마지막으로 새 문서의 모든 단어에 주제를 할당하게됩니다. 그러면 해당 문서에서 주제를 배포 할 수 있습니다.

Gibbs 샘플러에는 아마도 다음 코드와 비슷한 것이 있습니다.

// This will initialize the matrices of counts, N_tw (topic-word matrix) and N_dt (document-topic matrix)
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Assign current token to a random topic, updating the count matrices
    end
end

// This will do the Gibbs sampling
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Compute probability of current token being assigned to each topic
       Sample a topic from this distribution
       Assign the token to the new topic, updating the count matrices
    end
end

기존 행렬로 시작하여 새 문서의 토큰을 추가하고 새 토큰에 대해서만 샘플링을 수행한다는 점을 제외하면 접기는 동일합니다. 즉 :

Start with the N_tw and N_dt matrices from the previous step

// This will update the count matrices for folding-in
for token = 1 to N_Tokens_In_New_Document
   Assign current token to a random topic, updating the count matrices
end

// This will do the folding-in by Gibbs sampling
for token = 1 to N_Tokens_In_New_Document
   Compute probability of current token being assigned to each topic
   Sample a topic from this distribution
   Assign the token to the new topic, updating the count matrices
end

pwiwi제이제이

제이제이나는
(당신은 아마 로그 공간을 계산해야 함을 참고).

답변 주셔서 감사합니다. 나는 약간의 내용을 읽었지만 여전히 "접기"에 대해 약간 혼란 스러웠다. 이전 문서의 주제 할당을 동일하게 유지해야한다고합니다. 즉, 단어 주제 할당을 다시 계산해야합니까? 수행해야 할 작업에 대한보다 자세한 단계를 제공 할 수 있습니까? 또는이 "접기"프로세스를 명확히하는 데 도움이되는 문서 나 링크를 참조하십시오. 첫 번째 옵션은 "접기"를하는 것입니다. 실패하면 제안한 두 번째 방법을 사용합니다 (접는 것과 비교하여 얼마나 잘 작동하는지 잘 모르겠습니다). 감사합니다.
Hossein

@SheldonCooper : 내가 당신을 올바르게 이해한다면, 이것이 그것을하는 방법이라고 의심합니다 : 당신이하는 일은 최적화 알고리즘에 몇 가지 단계를 더 주어 새로운 테스트 샘플에서 SVM의 성능을 측정하는 것처럼 테스트 샘플을 포함한 현재 솔루션을이 샘플에서 평가하지만 ... 머신 러닝에서는 훈련 세트를 테스트 할 수 없으며 테스트 샘플을 모델에 정확히 포함시켜 테스트 할 수 있습니다. 훈련 샘플 ...
Fabian Werner

@ FabianWerner 솔루션이 원래 교육에서 단어 주제 매트릭스를 업데이트하지 않았다고 생각합니다. 훈련 된 단어-토픽 매트릭스로 시작하여 Gibbs 샘플러를 다시 실행하고 새로운 문서-토픽 매트릭스를 만듭니다. 여하튼, OP가 요청한 것을 수행하는 다른 방법을 알고 있습니까 (수년 전). 나는 같은 문제를보고있다.
thecity2

@ thecity2 나는이 문제에 대해 잠시 동안 어리석은 생각을했지만 슬프게도 아직 해결책이 없다고 말해야합니다. 하나를 찾으면 알려주세요 !!!
Fabian Werner

@FabianWerner이 문제에 대한 훈련 및 테스트가 없습니다. 귀하의 의견은 여기와 관련이 없습니다. 이것은 클러스터링과 마찬가지로 감독되지 않은 학습입니다.
emem
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.