Как spark LDA обработва броя на нецелите токени (напр. TF-IDF)

Провеждах серия от експерименти за моделиране на теми в Spark, като променях броя на темите. И така, като се има предвид RDD docsWithFeatures, правя нещо подобно:

for (n_topics <- Range(65,301,5) ){
    val s = n_topics.toString
    val lda = new LDA().setK(n_topics).setMaxIterations(20) // .setAlpha(), .setBeta()
    val ldaModel = lda.run(docsWithFeatures)
    // now do some eval, save results to file, etc...

Това работи чудесно, но също така искам да сравня резултатите, ако първо нормализирам данните си с TF-IDF. Сега, доколкото ми е известно, LDA стриктно очаква формат на пакет от думи, където честотите на термините са цели числа. Но по принцип (а аз съм виждал много примери за това), математиката работи добре, ако първо преобразуваме целочислени честоти на член в плаващи TF-IDF стойности. Подходът ми в момента да направя това е следният (отново предвид моя docsWithFeatures rdd):

val index_reset = docsWithFeatures.map(_._2).cache()
val idf = new IDF().fit(index_reset)
val tfidf = idf.transform(index_reset).zipWithIndex.map(x => (x._2,x._1))

След това мога да стартирам същия код като в първия блок, замествайки tfidf с docsWithFeatures. Това работи без никакви сривове, но основният ми въпрос тук е дали това е добре да се направи. Тоест, искам да се уверя, че Spark не прави нищо странно под капака, като преобразуване на плаващите стойности, излизащи от TFIDF, в цели числа или нещо подобно.


person moustachio    schedule 07.12.2015    source източник
comment
Не вярвам, че кодът на Spark преобразува теглата в цели числа в който и да е момент. Въпреки това ми е трудно да разбера как използването на тегла, получени от TF-IDF, има много смисъл, като се има предвид вероятностният модел, който е в основата на LDA.   -  person Jason Lenderman    schedule 13.12.2015
comment
Е, предполагам, че зависи от това как се прилага. Рових се наоколо и изглежда наистина има някакъв прецедент за нормализиране на честотите на термините с TF-IDF преди прилагането на LDA (оттук и въпросът ми).   -  person moustachio    schedule 13.12.2015
comment
Имате ли препратки или примери? Със сигурност има интерпретации на нецелочислени тегла, към които LDA може разумно да се обобщи (и много реализации ще се справят с това по подразбиране), но не го виждам за тегла, получени чрез TF-IDF.   -  person Jason Lenderman    schedule 14.12.2015
comment
Не намерих много официални препратки, но изглежда има хора, които го опитват с инструменти като Gensim (напр. тук и тук)   -  person moustachio    schedule 14.12.2015
comment
Но ако казвате, че можем разумно да обобщим LDA до нецелочислени тегла, какво е специалното или проблематичното за TFIDF? По същество мисля да го използвам като схема за повторно претегляне, за да санкционирам особено често срещани думи по по-добър начин от спирането (защото се интересувам от случаите, когато често срещаните думи са особено често срещани в даден документ, нещо спиращо няма да те разберат).   -  person moustachio    schedule 14.12.2015
comment
LDA няма да има разумна вероятностна интерпретация за какъвто и да е възможен начин за получаване на нецелочислен брой токени, дори ако алгоритъмът все пак приключи и даде резултат.   -  person Jason Lenderman    schedule 14.12.2015
comment
Между другото, използвате ли EMLDAOptimizer или OnlineLDAOptimizer? Предлагам да използвате последното, тъй като то оптимизира параметрите на априора за теглата на смесване на теми за всеки документ (докато EMLDAOptimizer не го прави.) Но дори и тогава априорът на Дирихле може да е твърде ограничителен, което води до по-малко от звездно изглеждащи теми.   -  person Jason Lenderman    schedule 14.12.2015
comment
Всъщност не съм сигурен.... кое е по подразбиране? Не посочвам ръчно оптимизатора освен това, което виждате по-горе   -  person moustachio    schedule 14.12.2015
comment
Вярвам, че по подразбиране е EMLDAOptimizer. Може да откриете, че темите, които получавате от използването на OnlineLDAOptimizer изглеждат по-разумно. Вижте този документ: papers.nips.cc/paper/3854- rethinking-lda-why-priors-matter .   -  person Jason Lenderman    schedule 15.12.2015
comment
Нека продължим тази дискусия в чата.   -  person moustachio    schedule 15.12.2015