Прогнозування теми за допомогою прихованого розподілу Діріхле


17

Я використав LDA на корпусі документів і знайшов деякі теми. Вихід мого коду - дві матриці, що містять ймовірності; ймовірності однієї док-теми та інші ймовірності слова-теми. Але я фактично не знаю, як використовувати ці результати, щоб передбачити тему нового документа. Я використовую вибірку Гіббса. Хтось знає як? Спасибі


1
Що ви маєте на увазі під "прогнозуванням теми нового документа"? Ви хочете знайти, з якої однієї теми був створений цей документ? Ви хочете знайти суміш тем для документа? Ви хочете позначити кожне слово в новому документі за темою, з якої воно походить?
SheldonCooper

Ви хочете знайти, з якої однієї теми був створений цей документ? Ви хочете знайти суміш тем для документа? - Я хочу відповісти на обидва ці питання фактично ... але мій корпус справді великий, тому я не можу дозволити собі повторно тренувати всю свою модель кожен раз, коли новий документ оглядається
Хоссен

Відповіді:


21

Я б спробував "скласти". Це стосується взяття одного нового документа, додавання його до корпусу, а потім запуску вибірки Гіббса лише на словах у цьому новому документі , зберігаючи однакові тематичні завдання старих документів. Зазвичай це швидко сходиться (можливо, 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

pшiшijшj

jpшji

дякую за вашу відповідь Я прочитав деякі речі про, але все ще трохи розгублений з приводу "складання". Ви говорите, що я повинен зберігати тематичні завдання старих документів однаковими, це означає, що завдання для слів теми повинні бути перераховані? Чи можна для вас дати більш детальні кроки, що потрібно зробити? або, можливо, посилаєтесь на папір або посилання, які насправді можуть допомогти мені прояснити цей процес "складання". Перший мій варіант - зробити "складання". Якщо це не вдалося, я піду для другого запропонованого вами методу (не впевнений, наскільки добре він працює порівняно із складанням). Спасибо.
Hossein

@SheldonCooper: Якщо я вас правильно зрозумів, тоді я сумніваюся, що це так, як це зробити: те, що ви робите, це ніби ви вимірюєте продуктивність SVM на новому тестовому зразку, надаючи алгоритму оптимізації ще кілька кроків від поточне рішення, включаючи тестовий зразок, а потім оцінити його на цьому зразку ... але: при машинному навчанні ви ніколи не можете тестувати на своєму навчальному наборі ... і, включаючи тестовий зразок у модель, ви робите саме це: тестуйте на навчальний зразок ...
Фабіан Вернер

@FabianWerner Я вважаю, що рішення не оновило матрицю слів із початкових тренувань. Він просто запускає пробовідбірник Гіббса, починаючи з навченої матриці слів-тем, і створює нову матрицю-тему документа. У будь-якому випадку, чи знаєте ви інший спосіб зробити те, про що просив ОП (правда, кілька років тому)? Я дивлюся на ту саму проблему.
thecity2

@ thecity2 Хоча я маю певну проблему з цією проблемою, я мушу, на жаль, сказати, що у мене поки немає рішення. Якщо ви знайдете його, то, будь ласка, повідомте мене !!!
Фабіан Вернер

@FabianWerner У вас не встановлено поїзд і тест у цій проблемі - ваш коментар тут не має значення. Це непідконтрольне навчання, як і кластеризація.
emem
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.