Как я могу выбрать один текст в корпусе в R? - PullRequest
0 голосов
/ 23 мая 2019

В магистерской работе я анализирую количество националистических слов в президентских речах.Основываясь на словаре «dict» (здесь он состоит только из 3 групп слов), я хотел бы создать векторы, в которых сохраняется количество совпадающих слов в процентах от общего количества слов, «vPercentCoop».Расчет процента работает при анализе всего корпуса.Тем не менее, я не заставить его работать для каждого текста в корпусе в отдельности.Кто-нибудь может помочь?Заранее спасибо!

Я пытался использовать [], чтобы получить один текст из tCorpus, но это не работает.Это дает мне сообщение:

kwic <- tc $ kwic (hit, ntokens = 3) Ошибка в <code>$<-.data.frame (*tmp*, "is_kw", значение = логическое (0)):замена имеет 0 строк, данные имеют 7

Вот мой код:

library(readtext)  
library(quanteda)
library(corpustools)
library(tm)
library(stringr)

folder <- "C:/Users/nienk/OneDrive/Documents/VU/Master Political Science/Thesis/Text Analysis R/Data/testsample"
rt <- readtext(folder, text_field = "text") 
filelist <- list.files(path=folder, pattern="*.txt")
filelist <- paste(folder, "\\", filelist, sep="")

# cleaning data
a <- lapply(filelist, FUN=readLines)
corpus <- tolower(corpus)
corpus <- removePunctuation(corpus)
corpus <- removeWords(corpus, stopwords("english"))
corpus <- stripWhitespace(corpus)
wordbags <- str_split(corpus, pattern="\\s+")

dict <- c('"work together"~5', '"world democ*"~5', '"freedom americ*"~5')

iN <- length(rt$doc_id)
vCoop <- replicate(iN, 0)
vLengthTot <- replicate(iN, 0)
vPercentCoop <- replicate(iN, 0)
vDummyCoop <- replicate(iN, 0)

# for loop
tc <- create_tcorpus(rt, doc_column = "text")
hits <- tc$search_features(dict)
kwic <- tc$kwic(hits, ntokens = 3) 

vCoop[1] <- length(kwic$kwic)
vLengthTot[1] <- length(wordbags[[1]])
vPercentCoop[1] <- vCoop[1] / vLengthTot[1] * 100
# end for loop
...