У меня есть набор текста, состоящий из нескольких файлов MS Word, который я хотел бы проанализировать.Поскольку корпус большой (~ 10000 строк) и анализ nlp (с использованием пакета cleanNLP
) занимает много времени и часто дает сбой, я подумал, что мог бы циклически проходить по тексту и анализировать каждый по отдельности.
Я написал следующий цикл, целью которого является взять каждую строку исходного текста, извлечь любые объекты местоположения и сохранить детали в следующей пустой строке матрицы text_mat
.
#read in text corpus
all <- read_dir("N:/data/All")
#convert into dataframe usable by text packages
all_df <- tibble(line = 1:nrow(all), text = all$content)
#loop through every line for location extraction
#create unpopulated matrix
text_mat <- matrix(NA, nrow = nrow(all_df), ncol = 3)
#loop through each line, fill matrix with location output
for (i in nrow(all_df)) {
line <- all_df[i, ]
obj_line <- cnlp_annotate(line, as_strings = TRUE)
loc <- cnlp_get_entity(obj_line) %>%
filter(entity_type == "CITY" | entity_type == "LOCATION") %>%
group_by(entity) %>%
tally() %>%
arrange(desc(n)) %>%
rename("Count" = "n")
text_mat[i, ] <- c(i, loc$entity, loc$Count)
next
}
#convert matrix to data frame
entity_df <- as.data.frame(text_mat)
Когда я запускаю цикл, он завершается очень быстро - я ожидаю, что это займет не менее нескольких минут, а матрица text_mat
останется пустой.Это заставляет меня думать, что цикл анализирует только первую строку текста и затем завершается, но я не уверен, почему.Любая помощь в том, почему это так, будет принята с благодарностью.