Programmēšana

Kā meklēt čivināt ar rtweet un R

Twitter ir lielisks ziņu avots par R - it īpaši tādu konferenču laikā kā useR! un RStudio konference. Pateicoties R un rtweet pakotnei, jūs varat izveidot savu rīku, lai lejupielādētu tweets, lai ērti meklētu, kārtotu un filtrētu. Apskatīsim soli pa solim.

Vispirms vēlaties instalēt jebkuru no rtweet projekta pakotnēm, kuru jums vēl nav: rtweet, reaģējams, līme, stringr, httpuv un dplyr. Pēc tam, lai sāktu, ielādējiet rtweet un dplyr.

# Ja jums jāinstalē kāds no šiem:

# install.packages ("rtweet")

# install.packages ("reaģējams")

# install.packages ("līme")

# install.packages ("stringr")

# install.packages ("httpuv")

# install.packages ("dplyr")

# install.packages ("purrr")

bibliotēka (rtweet)

bibliotēka (dplyr)

Autorizējiet Twitter API

Lai izmantotu rtweet, jums ir nepieciešams Twitter konts, lai jūs varētu pilnvarot rtweet izmantot jūsu īpašos konta akreditācijas datus. Tas ir tāpēc, ka ir noteikts ierobežojums, cik daudz tvītus var lejupielādēt 15 minūšu laikā.

Maikls Kērnijs, kurš uzrakstīja rtweet, lietotājiem rtweet dod divas iespējas. Vieglākais veids ir vienkārši pieprasīt dažus tvītus. Ja jūsu sistēmā nav saglabāti akreditācijas dati, jāatver pārlūkprogrammas logs, kurā tiek lūgts autorizēt pieprasījumu. Pēc tam autorizācijas marķieris tiks saglabāts jūsu .Renviron failā, tāpēc jums vairs nevajadzēs atkārtoti autorizēt.

Jūs varat doties uz vietni rtweet.info, lai skatītu citu metodi, kas ietver Twitter izstrādātāja konta izveidi un jaunu projektu autorizācijas akreditācijas datu ģenerēšanai. Ja jūs daudz izmantojat rtweet, jūs, iespējams, vēlēsities to darīt. Bet, lai sāktu, vieglāk ir, labi, vieglāk.

Importēt tvītus

Lai meklētu tvītus ar noteiktu atsauci (vai frāzi, kas nav hashtag), izmantojiet intuitīvi nosaukto search_tweets () funkciju. Tam nepieciešami vairāki argumenti, tostarp vaicājums, piemēram, #rstudioconf vai #rstats; vai vēlaties iekļaut retweets; un atgriezto tvītu skaits. Numurs pēc noklusējuma ir 100.

Lai gan 15 minūšu laikā jūs varat saņemt līdz pat 18 000 tvītus, ir būtisks ierobežojums, izmantojot vārdu Twitter vai vārda meklēšanai, izmantojot Twitter API: meklēšanas rezultāti atgriežas tikai sešas līdz deviņas dienas, ja vien jūs nemaksājat par premium Twitter API kontu. Atšķirībā no Twitter vietnes, jūs nevarat izmantot rtweet, lai meklētu tweets no konferences pagājušajā gadā. Jūs nevarēsiet meklēt divas nedēļas pēc konferences, lai saņemtu šos tvītus. Tāpēc jūs noteikti vēlaties saglabāt tos twītus, kurus esat izvēlējies tagad un kurus varētu vēlēties nākotnē.

Ir vairāk argumentu, kurus varat izmantot, lai pielāgotu meklēšanu, bet sāksim ar pamata meklēšanu: 200 tvīti ar #rstudioconf hashtag, bez retweets.

tweet_df <- search_tweets ("# rstudioconf", n = 200,

include_rts = FALSE)

Ja palaižat šo kodu un nekad iepriekš neizmantojāt rtweet, jums tiks lūgts autorizēt Twitter lietotni.

Ņemiet vērā, ka, pat ja jūs lūdzat 200 tvītus, jūs varētu saņemt mazāk. Viens no iemesliem ir tāds, ka pēdējo sešu līdz deviņu dienu laikā jūsu vaicājumam var nebūt 200 čivināt. Cits ir tas, ka Twitter, iespējams, sākotnēji patiešām ir ieguvis 200 tvītus, taču pēc retweet filtrēšanas mazāk bija palicis.

Datu ietvarā tweet_df tiek atgrieztas 90 datu kolonnas katram čivināt:

Sharon Machlis,

Kolonnas, kuras mani parasti visvairāk interesē status_id, izveidots_at, ekrāna_nosaukums, teksts, mīļākais_skaitlis, retweet_skaitlis, un urls_expanded_url. Jūs varētu vēlēties citas analīzes slejas; bet šai apmācībai es atlasīšu tikai šīs kolonnas.

Meklējiet, filtrējiet un analizējiet savus tvītus

Ir daudz interesantu vizualizāciju un analīžu, ko varat veikt ar Twitter datiem un R. Daži no tiem ir iebūvēti tieši rtweet. Bet es šo pamācību rakstu ar savu tehnoloģiju žurnālista cepuri. Es vēlos vienkāršu veidu, kā redzēt jaunas un foršas lietas, par kurām es, iespējams, nezinu.

Vislabāk patikušie konferences tvīti varētu palīdzēt. Un, ja es izmantoju rtweet un Twitter API, man nav jāpaļaujas uz Twitter populāro algoritmu. Es varu pats meklēt un noteikt savus kritērijus “populāriem”. Es varētu vēlēties meklēt populārākos tvītus tikai no pašreizējās dienas, kamēr notiek konference, vai filtrēt konkrētu tēmu, kas mani interesē, piemēram, “spīdīgs” vai “purrr” - sakārtot pēc lielākās daļas atzīmes Patīk vai Atkārtoti.

Viens no vienkāršākajiem veidiem, kā veikt šāda veida meklējumus un kārtojumus, ir šķirojamā tabula. DT ir viena populāra pakete tam. Bet pēdējā laikā es eksperimentēju ar citu: reaģējams.

Noklusējums reaģējams () ir sava veida bla. Piemēram:

tweet_table_data <- atlasiet (tweets, -user_id, -status_id)

bibliotēka (reaģējama)

reaģējams (tweet_table_data)

Šis kods rada tabulu, kas izskatās šādi:

Sharon Machlis,

Bet mēs varam pievienot dažus pielāgojumus, piemēram:

reaģējams (tweet_table_data,

filtrējams = TRUE, meklējams = TRUE, apmales = TRUE,

svītraina = TRUE, izcelšana = TRUE,

defaultPageSize = 25, showPageSizeOptions = PATIESA,

showSortable = TRUE, pageSizeOptions = c (25, 50, 75, 100, 200), defaultSortOrder = "desc",

kolonnas = saraksts (

izveidots_at = colDef (defaultSortOrder = "asc"),

screen_name = colDef (defaultSortOrder = "asc"),

text = colDef (html = TRUE, minWidth = 190, maināms lielums = TRUE),

favourite_count = colDef (filtrējams = FALSE),

retweet_count = colDef (filtrējams = FALSE),

urls_expanded_url = colDef (html = TRUE)

)

)

Rezultāts ir tabula, kas izskatās apmēram šādi:

Sharon Machlis,

Konfigurējiet reaģējamo datu tabulu

Augšējā koda fragmentā filtrējams = TRUE arguments pievienoja meklēšanas filtrus zem katras kolonnas galvenes, un meklējams augšējā labajā stūrī pievienoja kopējo tabulas meklēšanas lodziņu. Ieslēdzas robežojas, svītrainām, un izcelt dara to, ko jūs varētu sagaidīt: pievieno tabulas apmali, pievieno mainīgu rindu krāsu “svītras” un izceļ rindu, ja uz tās novietojat kursoru.

Es iestatīju savu defaultPageSize līdz 25. TheshowPageSizeOptions arguments ļauj man interaktīvi mainīt lapas garumu, un pēc tam es definēju lapas lieluma opcijas, kas tiks parādītas nolaižamajā izvēlnē zem tabulas (nav redzamas ekrānuzņēmumā). The showSortable arguments pievieno mazas bultiņu ikonas blakus kolonnu nosaukumiem, lai lietotāji zinātu, ka viņi var noklikšķināt, lai kārtotu. Un es iestatīju katru kolonnudefaultSortOrder uz lejupejošu, nevis uz augšu. Tātad, ja es noklikšķināšu uz sleju ar retweets vai patīk, es redzēšu, ka tas ir vismazāk, ne mazāk.

Visbeidzot, ir kolonnas arguments. Tas ir saraksts ar katras kolonnas kolonnas definīciju. Apskatiet reaģējamos palīdzības failus, lai iegūtu sīkāku informāciju par citām pieejamām opcijām. Šajā piemērā es iestatīju izveidots_at un ekrāna nosaukums kolonnām pēc noklusējuma kārtot augošā secībā. Priekš tekstu kolonnā, es to iestatīju rādīt HTML kā HTML, lai es varētu pievienot saites, uz kurām var noklikšķināt. Es arī iestatīju minimālo kolonnas platumu 190 pikseļus un padarīju kolonnas izmēru maināmu - lai lietotāji varētu noklikšķināt un vilkt, lai padarītu to platāku vai šaurāku.

Es arī izslēdzu filtru kastes mīļākais_skaits un atbildes_skaits. Tas tāpēc, ka diemžēl reaģējamie filtri nesaprot, kad kolonnas ir skaitļi, un tos filtrēs kā rakstzīmju virknes. Kaut arī reaģējams kārto numuru kolonnas pareizi, filtru kastes ir problemātiskas. Tas ir galvenais trūkums reaģējamam un DT pakotnei: DT saprot kolonnu tipus un attiecīgi filtrē. Bet šim nolūkam man pietiek ar šķirošanu skaitliski.

Lai uzzinātu, kā tas izskatās, kārtojot kolonnu vai padarot čivināt teksta kolonnu platāku un šaurāku, varat apskatīt videoklipu šī raksta augšdaļā.

Padariet savu datu tabulu noderīgāku

Pāris lietas padarīs šo tabulu noderīgāku. Šis kods nerāda attēlus vai videoklipus, kas iekļauti tvītos. Tas ir labi, jo mans mērķis šeit ir skenēt tekstu, nevis atkārtoti izveidot Twitter lietojumprogrammu. Bet tas nozīmē, ka dažreiz būs noderīgi redzēt sākotnējo tvītu, lai skatītu fotoattēlus, videoklipus vai komentārus.

Es domāju, ka ir ērti katra tvīta teksta beigās pievienot nelielu klikšķināmu lietu, uz kuras varat noklikšķināt, lai redzētu faktisko čivināt čivināt. Es izlēmu >> lai gan tas varētu būt jebkurš varonis vai varoņi.

Lai izveidotu URL, man jāzina tvīta formāts, kuru, apskatot kādu čivināt Twitter vietnē, varat redzēt//twitter.com/username/status/tweetID. 

Izmantojot līmes iepakojumu, tas tiks atveidots šādi:

līme :: līme ("// twitter.com/{screen_name}/status/{status_id}")

Ja jūs iepriekš neesat lietojis līmi, tas ir lielisks iepakojums teksta un mainīgo vērtību ielīmēšanai. Iepriekš minētajā kodā tiek vērtēts jebkurš mainīgais nosaukums starp lencēm.

Mans pilns kods, lai izveidotu kolonnu ar klikšķināmu saiti uz tvītu pēc tvīta teksta:

Čivināt = līme :: līme ("{text} >>") 

Un kods, lai izveidotu datu rāmi interaktīvai tabulai:

tweet_table_data%

atlasīt (lietotāja_ID, statusa_ID, izveidots_at, ekrāna_nosaukums, teksts, iecienītākais_skaitlis, retweet_skaitlis, URL_paplašinātais_url)%>%

mutēt (

Čivināt = līme :: līme ("{text} >>")

)%>%

atlasīt (DateTime = izveidots_at, lietotājs = ekrāna_nosaukums, čivināt, Patīk = mīļākais_skaitlis, RT = retweet_count, URL = urls_expanded_url)

Es arī vēlētos izveidot saites, uz kurām var noklikšķināt, no kolonnas URL, kas tagad ir tikai teksts. Tas ir nedaudz sarežģīti, jo URL kolonna ir saraksta kolonna jo dažos tvītos ir vairāk nekā viens URL.

Esmu pārliecināts, ka ir vienkāršāks veids, kā izveidot saites, uz kurām var noklikšķināt, no vienkārša teksta URL saraksta kolonnas, taču zemāk redzamais kods darbojas. Vispirms es izveidoju HTML koda ģenerēšanas funkciju, ja nav URL, viena URL vai divu vai vairāk:

make_url_html <- funkcija (url) {

ja (garums (URL) <2) {

ja (! is.na (url)) {

as.character (līme ("{url}"))

} cits

""

}

} cits

paste0 (purrr :: map_chr (url, ~ paste0 ("", .x, "", collapse = ",")), collapse = ",")

}

}

ES skrienu purrr :: map_chr () uz URL vērtības, ja ir divi vai vairāki URL, lai katrs URL iegūtu savu HTML; tad es tos ielīmēju kopā un sakļauj vienā rakstzīmju virknē, lai parādītos tabulā.

Kad mana funkcija darbojas, es to izmantoju purrr :: map_chr () vēlreiz atkārtot katru kolonnas vienumu:

tweet_table_data $ URLs <- purrr :: map_chr (tweet_table_data $ URL, make_url_html)

Neuztraucieties, ja nesaprotat šo daļu, jo tas tiešām ir vairāk par purrr un saraksta kolonnām, nevis rtweet un reaģējamu. Un nav nepieciešams meklēt un kārtot tvītus; jūs vienmēr varat noklikšķināt uz sākotnējā tvīta un redzēt tur noklikšķināmās saites.

Visbeidzot, es varu palaist savu pielāgoto reaģējams () kods jaunajā čivināt tabulas datos:

reaģējams (tweet_table_data,

filtrējams = TRUE, meklējams = TRUE, apmalē = TRUE, svītrains = TRUE, izcelt = TRUE,

showSortable = TRUE, defaultSortOrder = "desc", defaultPageSize = 25, showPageSizeOptions = TRUE, pageSizeOptions = c (25, 50, 75, 100, 200),

kolonnas = saraksts (

DateTime = colDef (defaultSortOrder = "asc"),

Lietotājs = colDef (defaultSortOrder = "asc"),

Tweet = colDef (html = TRUE, minWidth = 190, maināms lielums = TRUE),

Patīk = colDef (filtrējams = FALSE, formāts = colFormat (atdalītāji = TRUE)),

RT = colDef (filtrējams = FALSE, formāts = colFormat (atdalītāji = TRUE)),

URL = colDef (html = TRUE)

)

)

Ja sekojat līdzi, jums vajadzētu būt savai interaktīvai tabulai, kas var meklēt, kārtot un filtrēt konferenču vai tēmu tvītus.

Padomi tvītu kolekcionāriem

Viena lieta, kas jāatceras: ja konferences laikā sekojat konferences hashtagam, vēlēsities piesaistīt pietiekami daudz tvītu, lai iegūtu visu konferenci. Tāpēc pārbaudiet agrāko datumu savā čivināt datu rāmī. Ja šis datums ir pēc konferences sākuma, pieprasiet vairāk tvītu. Ja jūsu konferences hashtagā ir vairāk nekā 18 000 tvītu (kā tas notika, kad es izsekoju CES), jums būs jāizdomā dažas stratēģijas, lai iegūtu visu komplektu. Pārbaudiet retryonratelimit arguments par search_tweets () ja vēlaties savākt vairāk nekā 18 000 konferences hashtag tweets, kas atgriezušies 6 dienu laikā vai mazāk

Visbeidzot, pēc konferences beigām noteikti saglabājiet datus vietējā failā! Nedēļu vēlāk jums vairs nebūs piekļuves šiem tvītiem, izmantojot search_tweets () un Twitter API.

Apskatiet bonusa epizodi “Darīt vairāk ar R”, lai uzzinātu, kā šo čivināšanas izsekošanas lietotni pārvērst par interaktīvu Shiny lietotni.

Lai iegūtu vairāk R padomu, dodieties uz lapu Do More With R vietnē //bit.ly/domorewithR vai atskaņošanas sarakstu Do More With R TECHtalk YouTube kanālā.

$config[zx-auto] not found$config[zx-overlay] not found