각 문서마다 20개의 토픽이 들어있는 비율. Term-Document matrix

load("data/smpl_lda_df.RData")
df <- smpl_lda_df
head(df)
##       Topic_1   Topic_2 Topic_3 Topic_4 Topic_5 Topic_6 Topic_7   Topic_8
## Doc_1       0 0.0000000       0       0       0       0       0 1.0000000
## Doc_2       0 0.0000000       0       0       0       0       0 0.0000000
## Doc_3       0 0.0000000       0       0       0       0       0 0.0000000
## Doc_4       0 0.0000000       0       0       0       0       0 0.3333333
## Doc_5       0 0.0000000       0       0       0       0       0 0.0000000
## Doc_6       0 0.6666667       0       0       0       0       0 0.0000000
##       Topic_9  Topic_10 Topic_11  Topic_12 Topic_13 Topic_14 Topic_15
## Doc_1       0 0.0000000        0 0.0000000        0        0        0
## Doc_2       0 0.0000000        0 0.0000000        0        1        0
## Doc_3       1 0.0000000        0 0.0000000        0        0        0
## Doc_4       0 0.3333333        0 0.0000000        0        0        0
## Doc_5       1 0.0000000        0 0.0000000        0        0        0
## Doc_6       0 0.0000000        0 0.3333333        0        0        0
##       Topic_16 Topic_17 Topic_18  Topic_19 Topic_20
## Doc_1        0        0        0 0.0000000        0
## Doc_2        0        0        0 0.0000000        0
## Doc_3        0        0        0 0.0000000        0
## Doc_4        0        0        0 0.3333333        0
## Doc_5        0        0        0 0.0000000        0
## Doc_6        0        0        0 0.0000000        0
dim(df)
## [1] 143  20
# 1. 확률이 0 보다 큰 토픽의 갯수 리턴
fCountTopic <- function(x) {
    tPositions <- which(x>0)          # 확률이 0 이상인 컬럼의 위치
    return( length(tPositions) )      # position 갯수 리턴
}


# 2. 확률이 0 보다 큰 토픽의 토픽명 리턴
fTopicNames <- function(x) {
    tPositions <- which(x>0)                    # 확률이 0 이상인 컬럼의 위치
    tNames <- rownames(as.matrix(tPositions))   # 해당 postion의 데이터를 matrix로 변환 후 rowname(토픽명) 확인
    return( paste(tNames, collapse=" ") )       # 토픽명 여러개인 경우 합치기
}


# 각 문서별 토픽의 갯수와 해당 토픽명 표시.
df$Ntopic <- apply(df[,1:20], 1, fCountTopic)
df$Tname <- apply(df[,1:20], 1, fTopicNames)
answer <- df[21:22]
head(answer)
##       Ntopic                     Tname
## Doc_1      1                   Topic_8
## Doc_2      1                  Topic_14
## Doc_3      1                   Topic_9
## Doc_4      3 Topic_8 Topic_10 Topic_19
## Doc_5      1                   Topic_9
## Doc_6      2          Topic_2 Topic_12
# write.csv(answer, file = "Quiz09.csv", row.names = T)