r - 用 R 对 twitter 用户进行排名
问题描述
您好我正在做一项数据挖掘工作,我尝试对 Twitter 用户进行分类以了解他们是否是教师,然后根据单词我必须复制他们的网名,然后在他们的描述中搜索如下代码:
library(twitteR)
library (tidyverse)
palabras = c("dolor", "cansado", "#agotado")
todosTwits = list()
for(i in seq((palabras))){
todosTwits[[i]] = searchTwitter(palabras[c(i)], n=100)
}
todosTwits %>%
map_df(as_tibble) #I become tbl
listaUsuarios = list()
#recorrer todos los twits:
#todosTwits$screenName
for(name in todosTwits$screenName){
if (!(name%in%listaUsuarios)){
append(listaUsuarios,name)
}
}
#buscar usuarios
usrs <- lookupUsers(listaUsuarios)
usrs
#convertir a dataset
usuarios <- data.frame(usrs)
#calcular el tamaño de filas
tam = dim(usuarios)[1]
listaDocentes = c()
for(i in seq(tam)){
print(usuarios[c(i,1)]$description)
if ("docente" %in% usuarios[c(i,1)]$description){
listaDocente.append(usuarios[c(i,1)]$screenName)
}
}
首先,我无法将todosTwits
列表转换为 tbl,因为我需要该格式才能获取用户名,然后显示其描述并对其进行分类。
在这种情况下,我希望你能帮助我或给我一些关于这项活动的建议。
解决方案
进行试错搜索我能够通过用户描述获得分类算法,我在这里分享它:
library("tm")
library("stringr")
library("caret")
library("twitteR")
library("tidyverse")
library("knitr")
library("httpuv")
appname<-" "
consumerKey = " "
consumerSecret =" "
accessToken = " "
accessSecret = " "
setup_twitter_oauth(consumer_key = consumerKey, consumer_secret = consumerSecret,
access_token = accessToken, access_secret = accessSecret)
#words to search
dolor<-tbl_df(map_df(searchTwitter("dolor", n=200),as.data.frame))
cansado<-tbl_df(map_df(searchTwitter("cansado", n=200),as.data.frame))
agotado<-tbl_df(map_df(searchTwitter("agotado", n=200),as.data.frame))
#joining searches
todosTwits<- bind_rows(dolor,cansado,agotado)
#check if there are no repeat users
n_occur <- data.frame(table(todosTwits$screenName))
#user list
listaUsuarios<-as.vector(n_occur$Var1)
#get user information
usrs <- lookupUsers(listaUsuarios)
usuarios <- tbl_df(map_df(usrs, as.data.frame))
limpiar_tokenizar <- function(texto){
# El orden de la limpieza no es arbitrario
# Se convierte todo el texto a minúsculas
nuevo_texto <- tolower(texto)
# Eliminación de páginas web (palabras que empiezan por "http." seguidas
# de cualquier cosa que no sea un espacio)
nuevo_texto <- str_replace_all(nuevo_texto,"http\\S*", "")
# Eliminación de signos de puntuación
nuevo_texto <- str_replace_all(nuevo_texto,"[[:punct:]]", " ")
# Eliminación de números
nuevo_texto <- str_replace_all(nuevo_texto,"[[:digit:]]", " ")
# Eliminación de espacios en blanco múltiples
nuevo_texto <- str_replace_all(nuevo_texto,"[\\s]+", " ")
# Tokenización por palabras individuales
nuevo_texto <- str_split(nuevo_texto, " ")[[1]]
# Eliminación de tokens con una longitud < 2
nuevo_texto <- keep(.x = nuevo_texto, .p = function(x){str_length(x) > 1})
return(nuevo_texto)
}
#Creamos un nuevo dataframe para usuarios y su descripción
tweets <- usuarios %>% select(screenName,description)
tweets <- tweets %>% rename(autor = screenName,texto=description)
#tokenizar y separar texto de la descripción
tweets <- tweets %>% mutate(texto_tokenizado = map(.x = texto,
.f = limpiar_tokenizar))
tweets %>% select(texto_tokenizado) %>% head()
#separar palabras en el dataframe
tweets_tidy <- tweets %>% select(-texto) %>% unnest()
tweets_tidy <- tweets_tidy %>% rename(token = texto_tokenizado)
lista_docente <-c("maestro","educador","maestra","educadora","docente","profesor","profesora")
docentes<- tweets_tidy %>% filter(token %in% lista_docente)
推荐阅读
- python - 如何将每一行数据帧转换为二维?
- django - 如何管理无效模型字段的消息和无效的recaptcha?
- sql-server - 不支持 AUTO_CLOSE'
- android - 使用自定义属性保存和恢复视图状态
- deep-learning - 替代 google colab 以加快执行速度
- python - 解决视图没有返回 HttpResponse 对象。它返回 None 而不是
- javascript - 获取触发事件的元素的 id
- ios - 来自 URL 的图像未加载
- node.js - node.js res.download() 使用不区分大小写的文件名
- forms - 如何通过自动完成(Vuetify)修复重叠文本?