Я работаю с несколькими текстовыми сообщениями, используя пакет quanteda. Мои тексты содержат теги, некоторые с уникальными значениями, такими как URL. Я хочу удалить не только теги, но и все, что находится внутри тегов.
Пример:
<oa>
</oa>
<URL: http://in.answers.yahoo.com/question/index;_ylt=Ap2wvXm2aeRQKHO.HeDgTfneQHRG;_ylv=3?qid=1006042400700>
<q>
<ad>
</ad>
Я не уверен, как их удалить при работе с пакетом quanteda
. Мне кажется, что функция dfm
была бы местом для ее использования, я не думаю, что stopwords
будет работать из-за уникальных URL-адресов. Я могу использовать следующее gsub
с выражением регулярного выражения для успешного таргетинга на теги, которые я хочу удалить:
x <- gsub("<.*?>", "", y)
Я просмотрел документацию по gfm и попробовал несколько вещей с аргументами типа remove и value, но, возможно, я не очень хорошо понимаю документацию.
Также, как показывает ответ в на этот вопрос Я попробовал функцию dfm_select
, но также без кубиков.
Вот мой код:
library(readtext)
library(quanteda)
#create directory
data_dir <- list.files(pattern="*.txt", recursive = TRUE, full.names = TRUE)
#create corpus
micusp_corpus <- corpus(readtext(data_dir))
#add field 'region'
docvars(micusp_corpus, "Region") <- gsub("(\\w{6})\\..*?$", "", rownames(micusp_corpus$documents))
#create document feature matrix
micusp_dfm <- dfm(micusp_corpus, groups = "Region", remove_punct = TRUE, remove_numbers = TRUE, remove_symbols = TRUE)
#try to remove tags
micusp_dfm <- dfm_select(micusp_dfm, "<.*?>", selection = "remove", valuetype = "regex")
#show top tokens (note the appearence of the tag content "oa")
textstat_frequency(micusp_dfm, n=10)