R: номер документа text2vec DTM не соответствует номеру исходного документа

Я студент, который очень часто использует text2vec.

До прошлого года я без проблем пользовался этой программой.

Но сегодня, когда я создаю DTM с использованием функции Parallel, номер документа DTM не совпадает с номером исходного документа.

Номер документа DTM совпадает с номером исходного документа, разделенным на зарегистрированное ядро. Таким образом, есть подозрение, что результаты не были объединены после параллельной обработки.

прилагаемые коды, которые я тестировал.

library(stringr)
library(text2vec)
library(data.table)
library (parallel)
library (doParallel)

N <- detectCores()
cl <- makeCluster (N)
registerDoParallel (cl)

data("movie_review")

setDT(movie_review)
setkey(movie_review, id)

##number of document is 5000
IT <- itoken_parallel (movie_review$review,
                       ids          = movie_review$id,
                       tokenizer    = word_tokenizer,
                       progressbar  = F)


VOCAB <- create_vocabulary (
    IT, 
    ngram = c(1, 1)) %>%
    prune_vocabulary (term_count_min = 3)

VoCAB.order <- VOCAB[order((VOCAB$term_count), decreasing = T),]

VECTORIZER <- vocab_vectorizer (VOCAB)

DTM <- create_dtm (IT,              
                   VECTORIZER,      
                   distributed = F)

##DTM dimension is not 5000. number is 5000/4(number of Cores) = 1250
dim(DTM)

Я проверил функцию text2vec itoken в Vignette. Я нашел пример для проверки параллельной обработки в itoken, и он был обработан без ошибок.

Как в этом процессе использовать стоп-слова и функцию минимальной частоты?

N_WORKERS = 1 # change 1 to number of cores in parallel backend
if(require(doParallel)) registerDoParallel(N_WORKERS)
data("movie_review")
it = itoken_parallel(movie_review$review[1:100], n_chunks = N_WORKERS)
system.time(dtm <- create_dtm(it, hash_vectorizer(2**16), type = 'dgTMatrix'))

Жду искреннего ответа.

Спасибо за внимание.


person 유승환    schedule 19.01.2018    source источник


Ответы (1)


Здравствуйте, удалите distributed = F. Это ошибка (distributed = F записано в многоточие здесь ). Я починю это. Спасибо за отчет!

Что касается второго вопроса - хорошего решения нет. Вы можете вычислить частые/нечастые слова (фактически хэши) вручную с помощью функции colSums, но я не рекомендую идти по этому пути.

UPDисправлено.

person Dmitriy Selivanov    schedule 19.01.2018