Как извлечь хэштеги с помощью gsub - PullRequest
1 голос
/ 16 марта 2019

Я бы хотел извлечь только хэштеги из твитов с помощью gsub. Например:

sentence = tweet_text$text

И результат "The #Sun #Halo is out in full force today People need to look up once in awhile to see", \n "inspired #YouthStrikeClimate #FridayForFuture #FridaysFuture #ClimateChange", \n "Multiple warnings in effect for snow and wind with the latest #storm Metro"

Я пытаюсь получить только #Sun, #halo from the first one. \n #YouthStrikeClimate, #Friday~~ from the second one. #storm From the last one.

Я пытался сделать это с:

sentence = gsub("^(?!#)","",sentence,perl = TRUE) or 
sentence1 = gsub("[^#\\w+]","",sentence,perl = TRUE)

независимо. Я уже удалил ненужные слова, такие как Numbers или http: // и так далее

Как я могу извлечь их с помощью gsub?

Ответы [ 2 ]

2 голосов
/ 16 марта 2019

Мы можем использовать str_extract_all из stringr и извлечь все слова, за которыми следует хеш.(#).

stringr::str_extract_all(x, '#\\w+')

#[[1]]
#[1] "#Sun"  "#Halo"

#[[2]]
#[1] "#YouthStrikeClimate" "#FridayForFuture" "#FridaysFuture"  "#ClimateChange"

#[[3]]
#[1] "#storm"

Базовый подход R с минимальным регулярным выражением.Мы разбиваем строку на пробел и выбираем только те слова, которые startsWith #.

sapply(strsplit(x, "\\s+"), function(p) p[startsWith(p, "#")])

data

x <- c("The #Sun #Halo is out in full force today People need to look up once in", 
  "inspired #YouthStrikeClimate #FridayForFuture #FridaysFuture #ClimateChange", 
  "Multiple warnings in effect for snow and wind with the latest #storm  Metro")
1 голос
/ 16 марта 2019

В base R мы можем использовать regmatches/gregexpr

regmatches(x, gregexpr("#\\S+", x))
#[[1]]
#[1] "#Sun"  "#Halo"

#[[2]]
#[1] "#YouthStrikeClimate" "#FridayForFuture"    "#FridaysFuture"      "#ClimateChange"     

#[[3]]
#[1] "#storm"

Об использовании gsub, либо

trimws(gsub("(?<!#)\\b\\S+\\s*", "", x, perl = TRUE))

или

trimws(gsub("(^| )[A-Za-z]+\\b", "", x))

сохранит слова, начинающиеся с #, и отделит каждое слово пробелом

данные

x <- c("The #Sun #Halo is out in full force today People need to look up once in", 
"inspired #YouthStrikeClimate #FridayForFuture #FridaysFuture #ClimateChange", 
 "Multiple warnings in effect for snow and wind with the latest #storm       Metro"
 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...