2016-06-01 35 views

Antwort

1

Sie haben das Recht, die Konvergenz Ihrer Modellanpassung grafisch darzustellen. Gensim scheint dies leider nicht sehr geradlinig zu machen.

  1. Führen Sie das Modell so aus, dass Sie die Ausgabe der Modellanpassungsfunktion analysieren können. Ich möchte eine Protokolldatei einrichten.

    import logging 
    logging.basicConfig(filename='gensim.log', 
            format="%(asctime)s:%(levelname)s:%(message)s", 
            level=logging.INFO) 
    
  2. Stellen Sie den eval_every Parameter in LdaModel. Je niedriger dieser Wert ist, desto besser ist die Auflösung. Allerdings kann die Berechnung der Ratlosigkeit Ihre Passform stark verlangsamen!

    lda_model = 
    LdaModel(corpus=corpus, 
         id2word=id2word, 
         num_topics=30, 
         eval_every=10, 
         pass=40, 
         iterations=5000) 
    
  3. Analysieren Sie die Protokolldatei und machen Sie Ihre Handlung.

    import re 
    import matplotlib.pyplot as plt 
    p = re.compile("(-*\d+\.\d+) per-word .* (\d+\.\d+) perplexity") 
    matches = [p.findall(l) for l in open('gensim.log')] 
    matches = [m for m in matches if len(m) > 0] 
    tuples = [t[0] for t in matches] 
    perplexity = [float(t[1]) for t in tuples] 
    liklihood = [float(t[0]) for t in tuples] 
    iter = list(range(0,len(tuples)*10,10)) 
    plt.plot(iter,liklihood,c="black") 
    plt.ylabel("log liklihood") 
    plt.xlabel("iteration") 
    plt.title("Topic Model Convergence") 
    plt.grid() 
    plt.savefig("convergence_liklihood.pdf") 
    plt.close()