Попытка удалить специальные символы и неанглийские слова из моих данных R - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь очистить свои данные для удаления; и.) специальные символы (например, + _), ii.) конкретные слова (например, ретвит, подписчики, не могли, лучше, человек) iii.) слова, которые не отображаются в словаре английского языка. Я использую библиотеку quanteda. Моя цель - собрать 50 лучших биграмм и нанести их на график.

install.packages("textcat")
library(tm)
library(textcat)
the_data <- read.csv("twitterData.csv")
tweets_data <- the_data$x
tweets_corpus <- Corpus(VectorSource(tweets_data))
subSpace <- content_transformer(function(x, pattern) gsub(pattern, 
                                                          " ", x))
twitterHandleRemover <- function(x) gsub("@\\S+","", x)
shortWordRemover <- function(x) gsub('\\b\\w{1,5}\\b','',x)
urlRemover <- function(x) gsub("http:[[:alnum:]]*","", x)
hashtagRemover <- function(x) gsub("#\\S+","", x)
tweets_corpus <- tm_map(tweets_corpus, subSpace, "/")
tweets_corpus <- tm_map(tweets_corpus, subSpace, "@")
tweets_corpus <- tm_map(tweets_corpus, subSpace, "\\|%&*#+_><")
tweets_corpus <- tm_map(tweets_corpus, content_transformer(tolower))
tweets_corpus <- tm_map(tweets_corpus, removeNumbers)
tweets_corpus <- tm_map(tweets_corpus, content_transformer(urlRemover))
tweets_corpus <- tm_map(tweets_corpus, 
                        content_transformer(shortWordRemover))
tweets_corpus <- tm_map(tweets_corpus, 
                        content_transformer(twitterHandleRemover))
tweets_corpus <- tm_map(tweets_corpus, 
                        content_transformer(hashtagRemover))
tweets_corp<- corpus(tweets_corpus)

tweets_dfm <- tokens(tweets_corp, remove_numbers = T, 
                     remove_hyphens = T) %>%
   tokens_remove("\\p{P}", valuetype = "regex", padding=TRUE) %>%
   tokens_remove(stopwords("english"), padding=TRUE) %>%
   tokens_remove("\\d+", padding = TRUE) %>%
   tokens_ngrams(n=2) %>% dfm()

topfeatures(tweets_dfm,50)

Это вывод из моего кода:

enter image description here

Редактировать

Я пытался использовать

specialChars <- function(x) gsub("[^[:alnum:]///']","", x)
tweets_corpus <- tm_map(tweets_corpus, 
content_transformer(specialChars))

для удаления специальных символов, но, похоже, для удаления всех символов - вывод числовой (0)

1 Ответ

0 голосов
/ 15 ноября 2018

Почему бы просто не сделать что-то вроде этого:

> x <- "je n'aime pas ça"
> Encoding(x)
[1] "latin1"
> iconv(x, from = "latin1", to = "ASCII//TRANSLIT")
[1] "je n'aime pas ca"

То же самое iconv(tweets_data, from = "latin1", to = "ASCII//TRANSLIT") при условии, что ваши данные в латинице1

И далее оставляйте только буквенно-цифровые символы или пробелы

gsub(pattern = "[^[:alnum:][:space:]]", " ", "<friends @symbols")
...