Pakiety R do wykonywania modelowania tematów / LDA: po prostu `topicmodels` i` lda` [zamknięte]

29

Wydaje mi się, że tylko dwa pakiety R są w stanie wykonać Latent Dirichlet Allocation :

Jednym z nich jest ldaautor Jonathan Chang; drugim jest topicmodelsBettina Grün i Kurt Hornik.

Jakie są różnice między tymi dwoma pakietami pod względem wydajności, szczegółów implementacji i możliwości rozszerzenia?

pytanie bitowe
źródło

Odpowiedzi:

26

Implementacja: Pakiet topicmodels zapewnia interfejs do kodu GSL C i C ++ dla modeli tematów autorstwa Blei i in. oraz Phan i in. Wcześniej wykorzystuje zmienną EM, w tym ostatnim próbkowanie Gibbsa. Zobacz http://www.jstatsoft.org/v40/i13/paper . Pakiet działa dobrze z narzędziami z pakietu TM.

Pakiet lda wykorzystuje zwinięty Gibbs Sampler dla wielu modeli podobnych do tych z biblioteki GSL. Zostało to jednak wdrożone przez samych autorów pakietu, a nie przez Blei i in. Ta implementacja różni się zatem zasadniczo od techniki szacowania zaproponowanej w oryginalnych artykułach wprowadzających te warianty modeli, w których zwykle stosuje się algorytm VEM. Z drugiej strony pakiet oferuje więcej funkcji niż drugi pakiet. Pakiet zapewnia również funkcję eksploracji tekstu.

Rozszerzalność: Jeśli chodzi o rozszerzalność, kod model tematu ze swej natury może zostać rozszerzony o interfejs innego kodu modelu tematu napisanego w C i C ++. Pakiet lda wydaje się bardziej polegać na konkretnej implementacji dostarczonej przez autorów, ale tam sampler Gibbs może pozwolić na określenie własnego modelu tematu. Jeśli chodzi o kwestie związane z rozszerzalnością, pierwsza z nich jest licencjonowana na licencji GPL-2, a druga LGPL, więc może zależeć od tego, dla czego musisz ją rozszerzyć (GPL-2 jest bardziej rygorystyczny pod względem open source, tzn. Nie możesz go używać w oprogramowaniu prawnie zastrzeżonym).

Wydajność: nie mogę ci pomóc, do tej pory używałem tylko modeli tematycznych.

Wniosek:
ja osobiście używam topicmodels, ponieważ jest dobrze udokumentowany (patrz powyżej artykuł JSS) i ufam autorom (Grün również zaimplementował flexmiks, a Hornik jest głównym członkiem R).

Momo
źródło
7
Po pierwsze, jestem pewien, że modele tematyczne to doskonały pakiet i zgadzam się, że jest bardzo dobrze udokumentowany. Jeśli chodzi o „ufanie” autorom pakietu LDA, Jonathan Chang był moim doktorantem i całkowicie ufam jego kodowi. Jest zarówno doskonałym inżynierem oprogramowania, jak i naukowcem. Jego pakiet jest łatwy, dobrze skaluje się do dość dużych kolekcji i miło jest eksplorować wyniki w R. (Lubię i jestem przyzwyczajony do rzadkiej macierzowej reprezentacji dokumentów.) Warto zauważyć, że LDA implementuje inne modele, w tym relacyjne modele tematyczne, nadzorowany LDA (z GLM) i stochastyczny model blokowy z mieszanym członkostwem.
Dzięki za ważenie. Jestem pewien, że ldaopakowanie jest świetne, nie chciałem sugerować, że ldama on gorszy kod. Wyraziłem swoje osobiste wrażenie (dokumentacja wydawała się nieco niechlujna). Ponieważ było to> 2 lata temu, nieznacznie zredagowałem odpowiedź (literówki na stronie CRAN wciąż tam są, myślę, że dobrze byłoby je naprawić, ale ten e-mail zgubił się).
Momo
Wydaje mi się, że masz duże doświadczenie z obydwoma pakietami i wiesz najwięcej na ten temat, co powiesz na podanie niektórych zalet i wad obu pakietów? Nie korzystałem lda, więc nie mogłem dać empirycznej oceny tego. Zapewnienie tego z pewnością pomogłoby OP i wszystkim innym, a także skorygowało wszelkie możliwe niesprawiedliwości (które nie były zamierzone). Dzięki!
Momo
1
Próbowałem także obu i znalazłem ldapakiet zawierający więcej opcji. Jednak trudno jest zrozumieć, jak sformatować dane, aby pasowały do ​​modelu. topicmodelsPakiet działa dobrze z tmpakietu, a ldapakiet zwraca listę, która nie jest jasne, w jaki sposób stworzyć.
Omri374,
12

+1 za modele tematyczne . Odpowiedź Momo jest bardzo wyczerpująca. Chciałbym tylko dodać, że topicmodelspobiera dane wejściowe jako matryce terminów dokumentu, które można łatwo wykonać za pomocą tmpakietu lub używając Pythona. ldaPakiet używa bardziej ezoterycznych form wejścia (na podstawie Blei za LDA-C), a ja nie miałem szczęścia przy użyciu wbudowanej funkcji do konwersji DTM karne ldaformatu pakietu (dokumentacja LDA jest bardzo słaba, jak zauważa Momo).

Mam trochę kodu, który zaczyna się od nieprzetworzonego tekstu, wstępnie go przetwarza tmi przepuszcza topicmodels(w tym znalezienie optymalnej liczby tematów z góry i praca z danymi wyjściowymi) tutaj . Może być przydatny dla kogoś, kto przyjeżdża topicmodelspo raz pierwszy.

Ben
źródło
3
Dla tych, którzy jeszcze nie używają tm i chcą grać z lda , JFreq umieszcza również zwykłe teksty w preferowanym formacie LDA-C.
conjugateprior
Dobrze wiedzieć o JFreq, nie widziałem go wcześniej. Dzięki za wskazówkę!
Ben
1
Właśnie zauważyłem read_dtm_Blei_et_alfunkcję w tmpakiecie, która robi to samo.
Ben
3

Pakiet R Structural Topic Model (STM) autorstwa Molly Roberts, Brandon Stewart i Dustin Tingley jest również doskonałym wyborem. Zbudowany na pakiecie TM jest ogólną strukturą do modelowania tematów z informacjami towarzyszącymi na poziomie dokumentu.

http://structuraltopicmodel.com/

Pakiet STM obejmuje szereg metod (wyszukiwanie siatki) i miary (spójność semantyczna, reszty i wyłączność) w celu ustalenia liczby tematów. Ustawienie liczby tematów na 0 pozwoli również modelowi określić optymalną liczbę tematów.

Pakiet stmBrowser jest doskonałym uzupełnieniem wizualizacji danych do wizualizacji wpływu zmiennych zewnętrznych na tematy. Zobacz ten przykład związany z debatami prezydenckimi w 2016 r .: http://alexperrier.github.io/stm-visualization/index.html .

Alexis Perrier
źródło
0

Użyłem wszystkich trzech bibliotek, spośród wszystkich 3 mianowicie, topicmodels, lda, stm; nie wszyscy pracują z gramami. Biblioteka topicmodels jest dobra w szacowaniu, a także działa z n gramami. Ale jeśli ktoś pracuje z uni gramami, lekarz może preferować stm, ponieważ daje uporządkowaną wydajność.

Ganesh Sonawane
źródło