Lecture Notes Week 6

Topics

Literature

Video

Furter reading

Notebook

Notes on the tutorial

Assignment

Warm up

  1. Doe alle 4 de delen uit Local copy of topic_modeling_tutorial
  2. Herhaal de stappen met een eigen corpus.

De opgave die je moet inleveren

Notes

Ons model van het schrijven van een stuk

Goal of topic modeling

Topic modeling = unsupervised learning

Wat leren we dan?

Uitgelegd met behulp van het voorbeeld:

  1. De topics:
    1. De gekleurde lijsten van woorden links
    2. Elk topic is een taalmodel (Prob. dist. over woorden)
    3. De $\beta$ parameter
  2. De verdeling van topics over elk document.
    1. Het histogram rechts
    2. de $\theta$ parameter
  3. De verdeling van de topics over de woorden in elk document.
    1. "Welke kleurstift we gebruiken"

Het model anders gezegd:

De taak anders gezien:

Topic model = soort samenvatting

Wat kunnen we met een topic model?

  1. Enorme text collecties beter behappen.
  2. Semantisch zoeken.
  3. Patronen in grote collecties ontdekken

Software

  1. Malet, veel gebruikt door sociale wetenschappers en historici. Makkelijk te gebruiken.
  2. Gensim, Python pakket. Wat lastiger.

Data die wij kunnen gebruiken

Deze data is beschikbaar op de UvA. Vraag Maarten Marx. Bij een paar datasets hebben we wat voorbeeld onderzoeksvragen gezet.

  1. 60 jaar Telegraaf.
    1. Waar gaan de mini-advertenties over?
    2. Hoe verandert dat door de tijd?
    3. Bijv. Kunnen we sex advertenties zien opkomen?
  2. Politieke debatten en toespraken.
    1. Wie blijft er "on topic" en wie niet?
    2. Hebben partijen hun eigen topics?
  3. Nog veel meer
    1. AirBnB
    2. NY Times
    3. Wikipedia
    4. ....

Notes on the tutorial

Het maken van een model uit een verzameling text documenten gaat in een aantal stappen. Het is belangrijk die stappen goed te snappen, want je moet ze steeds doorlopen.

Die stappen zijn zo om stromende applicaties te kunnen maken, applicaties die werken op heel veel documenten, zonder ze allemaal tegelijk in geheugen te hebben.

Hieronder leg ik niet de stromende stappen uit. Zie daarvoor de tutorial.

stappen

  1. Maak van je documenten lijsten van woorden.
    1. Sla die op in een lijst of een generator.
  2. Maak daarmee een id2word dictionary
    1. Dit is een dict die woorden naar integer ids mapped.
    2. En voor elk woord telt hoe vaak het voorkomt.
  3. Met de id2word.doc2bow methode kan je nu je documenten in "bag of words" veranderen.
  4. Maak daarmee een corpus:
    1. politics_corpus = [id2word_politics.doc2bow(d[0]) for d in dutch_docs]
  5. Sla dat desgewenst op
    1. gensim.corpora.MmCorpus.serialize(filename, politics_corpus)
  6. Haal desgewenst op
  7. Train een model op basis van dit corpus.
    1. lda_model = gensim.models.LdaModel(mm_corpus, num_topics=13, id2word=id2word_politics, passes=4)
    2. Dit zijn de topics dus de prob dists over woorden.
  8. Doe de dimensionality reduction. Map elk document naar een prob dist over de lda topics.
      • politics_lda_mm=lda_model[mm_corpus]
  9. Maak nu bijvoorbeeld een index over het "nieuwe corpus" en ga semantische zoeken.