2016-12-15 4 views
-2

Я хотел бы разделить все документы на 10 тем, и это хорошо сочетается с конвергентным результатом, за исключением размеров распределений и ковариационной матрицы темы.
Почему распределение тем представляет собой 9-мерный вектор вместо 10, а их ковариационная матрица - 9 * 9, вместо 10 * 10?Различные размеры распределений тем

У меня есть library(topicmodels) и функция CTM() для реализации модели темы на китайском языке.

мой код ниже:

library(rJava); 
library(Rwordseg); 
library(NLP); 
library(tm); 
library(tmcn) 
library(tm) 
library(Rwordseg) 
library(topicmodels) 

installDict("C:\\Users\\Jeffy\\OneDrive\\Workplace\\R\\Law.scel","Law"); 
installDict("C:\\Users\\Jeffy\\OneDrive\\Workplace\\R\\NationalInstitution.scel","NationalInstitution"); 
installDict("C:\\Users\\Jeffy\\OneDrive\\Workplace\\R\\Place.scel","Place"); 
installDict("C:\\Users\\Jeffy\\OneDrive\\Workplace\\R\\Psychology.scel","Psychology"); 
installDict("C:\\Users\\Jeffy\\OneDrive\\Workplace\\R\\Politics.scel","Politics"); 
listDict(); 

#read file 
d.vec <- segmentCN("samgovWithoutID.csv", returnType = "tm") 
samgov.segment <- read.table("samgovWithoutID.segment.csv", header = TRUE, fill = TRUE, stringsAsFactors = F, sep = ",",fileEncoding='utf-8') 
fix(samgov.segment) 

# create DTM(document term matrix) 
d.corpus <- Corpus(VectorSource(samgov.segment$content)) 
inspect(d.corpus[1:10]) 
d.corpus <- tm_map(d.corpus, removeWords, stopwordsCN()) 
ctrl <- list(removePunctuation = TRUE, removeNumbers= TRUE, wordLengths = c(1, Inf), stopwords = stopwordsCN(), wordLengths = c(2, Inf)) 
d.dtm <- DocumentTermMatrix(d.corpus, control = ctrl) 
inspect(d.dtm[1:10, 110:112]) 

# impletment topic models 
ctm10<-CTM(d.dtm,k=10, control=list(seed=2014012692)) 
Terms10 <- terms(ctm10, 10) 
Terms10[,1:10] 

ctm20<-CTM(d.dtm,k=20, control=list(seed=2014012692)) 
Terms20 <- terms(ctm20, 20) 
Terms20[,1:20] 

В результате в R Studio (см Выделенная часть):

enter image description here

Помощь документа:

enter image description here

+3

Просьба указать [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – figurine

+0

Thx для вашего комментария! – Jeffy

ответ

1

А вероятность распределение более 10 ва lues имеет 9 свободных параметров: как только я скажу вам вероятность первых 9, вероятность последнего значения должна быть равна минусе суммы этих вероятностей.

10-мерное логическое нормальное распределение эквивалентно выборке 10-мерного вектора из гауссова распределения, а затем «выкалыванию» этого вектора путем его возведения в степень и нормализации его до 1,0. Существует бесконечное число 10-мерных векторов, которые будут экспоненциально и нормализованы к одному и тому же распределению вероятностей 10-мерного размера - вам просто нужно добавить произвольную константу c к каждому значению. Это потому, что среднее значение гауссова имеет 10 свободных параметров, что больше, чем более ограниченное распределение.

Существует несколько способов сделать гауссово «опознаваемым». Один из них заключается в том, чтобы зафиксировать один из элементов среднего вектора равным 0.0. Вот почему вы видите 9-мерную среднюю и ковариационную матрицу: 10-е значение всегда равно 0 без отклонения.

Смежные вопросы