R: квантеда удаление тегов из корпуса - PullRequest
1 голос
/ 30 марта 2019

Я работаю с несколькими текстовыми сообщениями, используя пакет 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)

1 Ответ

2 голосов
/ 01 апреля 2019

Хотя ваш вопрос не дает воспроизводимого примера, я думаю, что могу помочь. Вы хотите очистить тексты, которые входят в ваш корпус, прежде чем вы достигнете стадии построения dfm. Замените строку #create corpus на следующую:

# read texts, remove tags, and create the corpus
tmp <- readtext(data_dir)
tmp$text <- gsub("<.*?>", "", tmp$text)
micusp_corpus <- corpus(tmp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...