-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathlab_6_2-z_opisami.R
More file actions
59 lines (44 loc) · 2.1 KB
/
Copy pathlab_6_2-z_opisami.R
File metadata and controls
59 lines (44 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
install.packages(c("topicmodels", "tm", "ggplot2", "dplyr", "tidyr"))
install.packages("SnowballC")
library("topicmodels")
library("tm")
library("ggplot2")
library("dplyr")
library("tidyr")
library("SnowballC")
tekst_topic <- c("I had a peanut butter sandwich for breakfast.",
"I like to eat almonds, peanuts and walnuts.",
"My neighbor got a little dog yesterday.",
"Cats and dogs are mortal enemies.",
"You mustn’t feed peanuts to your dog.")
zrodlo_topic <- VectorSource(tekst_topic)
korpus_topic <- VCorpus(zrodlo_topic)
# w tym wypadku wagi powinny byc liczebnosciowe, nic nie zmieniac
dtm_topic <- DocumentTermMatrix(korpus_topic,
control = list(stemming = TRUE,
stopwords = TRUE,
removeNumbers = TRUE,
removePunctuation = TRUE))
as.matrix(dtm_topic)
dim(dtm_topic)
# funckja LDA uruchamia funkcje, ktora znajduje tematy. 2 oznacza ile tematow chcemy odnalezc. Beta, Gamma to rozklady prawdopodobienstwa czym charakteryzuja sie poszczegolne tematu
lda_topic <- LDA(dtm_topic, 2, control = list(seed = 1652))
# ktory temat zostal zdefiniowany dla ktorego dokumentu
(tematy <- topics(lda_topic))
# ktory numer to ktory temat
(tematy_term <- terms(lda_topic))
# wyswietl mi 4 najistotniejsze slowa dla danego tematu
(tematy_termy4 <- terms(lda_topic, 4))
# @beta to wartosci czestotliwosci wystepowania danego slowa, ale ma wartosci ujemne. Im mniejsza liczba, tym czesciej wystepuje
lda_topic@beta # exp() lub abs()
# dzieki uzyciu exp, zostaje zastosowana funkcja wykladnicza zostaja usuniete minusy, male roznice zwiekszamy (przy logarytmicznym duze roznice zmniejszamy)
beta_df <- data_frame(term = lda_topic@terms, w¹tek1 = exp(lda_topic@beta[1, ]), w¹tek2 = exp(lda_topic@beta[2, ]))
x <- -10:1
y <- exp(x)
plot(x, y)
beta_tidy <- gather(beta_df, w¹tek, beta, -term)
beta_top <- beta_tidy %>%
group_by(w¹tek) %>%
top_n(5, beta) %>%
ungroup() %>%
arrange(w¹tek, -beta)