Programavimas

Kaip ieškoti „Twitter“ naudojant „rtweet“ ir „R“

„Twitter“ yra puikus naujienų apie R šaltinis - ypač per tokias konferencijas kaip „useR“! ir „RStudio“ konferencija. „R“ ir „rtweet“ paketo dėka galite sukurti savo įrankį, kad atsisiųstumėte „tweet“, kad būtų lengviau ieškoti, rūšiuoti ir filtruoti. Pažvelkime, žingsnis po žingsnio.

Pirmiausia norite įdiegti bet kurį iš „rtweet“ projekto paketų, kurių dar neturite: „rtweet“, reaguojamieji, klijai, „stringr“, „httpuv“ ir „dplyr“. Tada norėdami pradėti, įkelkite „rtweet“ ir „dplyr“.

# Jei reikia įdiegti bet kurį iš šių:

# install.packages („rtweet“)

# install.packages („reaguoja“)

# install.packages („klijai“)

# install.packages ("stringr")

# install.packages („httpuv“)

# install.packages („dplyr“)

# install.packages („purrr“)

biblioteka (rtweet)

biblioteka (dplyr)

Patvirtinkite „Twitter“ API

Norėdami naudoti „rtweet“, jums reikia „Twitter“ paskyros, kad galėtumėte įgalioti „rtweet“ naudoti jūsų konkrečius paskyros kredencialus. Taip yra todėl, kad yra riba, kiek „Twitter“ galite atsisiųsti per 15 minučių.

Michaelas Kearney, parašęs „rtweet“, suteikia „rtweet“ vartotojams du pasirinkimus. Lengviausias būdas paprasčiausiai paprašyti kai kurių „tweetų“. Jei jūsų sistemoje nėra kredencialų, turėtų būti atidarytas naršyklės langas, kuriame prašoma patvirtinti užklausą. Po to autorizacijos žetonas bus saugomas jūsų .Renviron faile, kad ateityje nereikėtų iš naujo suteikti prieigos teisės.

Galite apsilankyti rtweet.info, kad pamatytumėte kitą metodą, kuris apima „Twitter“ kūrėjo paskyros sukūrimą ir naują projektą, leidžiantį generuoti prieigos teises. Jei daug naudosite „rtweet“, tikriausiai norėsite tai padaryti. Bet pradėti, lengvesnis būdas yra, na, lengviau.

Importuoti „tweets“

Norėdami ieškoti „Twitter“ įrašų naudodami konkretų žymą su grotelėmis (arba frazę, kuri nėra grotažymė), naudokite intuityviai pavadintą search_tweets () funkcija. Tam reikia kelių argumentų, įskaitant užklausą, pvz., #Rstudioconf arba #rstats; ar norite įtraukti retweetus; ir „Twitter“ pranešimų skaičius. Numatytasis skaičius yra 100.

Nors per 15 minučių galite gauti iki 18 000 „tweet“, naudojant „Twitter“ API ieškant žodžio ar frazės yra svarbus apribojimas: paieškos rezultatai grįžta tik nuo šešių iki devynių dienų, nebent mokate už aukščiausios kokybės „Twitter“ API paskyrą. Skirtingai nuo „Twitter“ svetainės, negalite naudoti „rtweet“, norėdami ieškoti „Twitter“ pranešimų iš praėjusių metų konferencijos. Negalėsite ieškoti dvi savaitės po konferencijos gauti tuos tweets. Taigi norėsite išsaugoti dabar perkamus tweetus, kurių galbūt norėsite ateityje.

Yra ir daugiau argumentų, kuriuos galite naudoti norėdami tinkinti paiešką, tačiau pradėkime nuo pagrindinės paieškos: 200 „tweet“ su grotažyme #rstudioconf, be retweet'ų.

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

include_rts = NETIESA)

Jei paleisite tą kodą ir niekada anksčiau nenaudojote „rtweet“, jūsų bus paprašyta suteikti „Twitter“ programai leidimą.

Atkreipkite dėmesį, kad net jei prašote 200 „tweets“, galite susigrąžinti mažiau. Viena iš priežasčių yra ta, kad per pastarąsias šešias – devynias dienas jūsų užklausoje gali nebūti 200 „tweet“. Kitas dalykas yra tai, kad „Twitter“ iš pradžių galėjo išgauti 200 „Twitter“ įrašų, tačiau išfiltravus retweetus, jų liko mažiau.

„Tweet_df“ duomenų rėmelyje pateikiami 90 kiekvieno stulpelio duomenų stulpeliai:

Sharon Machlis,

Stulpeliai, kuriais dažniausiai domiuosi labiausiai status_id, sukurtas_at, ekrano_vardas, tekstas, mėgstamiausias_skaičius, retweet_countir urls_expanded_url. Savo analizei galbūt norėsite kitų stulpelių; bet šiai pamokai pasirenku tik tuos stulpelius.

Ieškokite, filtruokite ir analizuokite savo tweetus

Yra daug įdomių vizualizacijų ir analizių, kurias galite atlikti naudodami „Twitter“ duomenis ir R. Kai kurie iš jų yra įmontuoti tiesiai į „rtweet“. Bet šią pamoką rašau užsidėjęs savo technologijų žurnalisto kepurę. Noriu paprasto būdo pamatyti naujus ir šaunius dalykus, apie kuriuos galbūt nežinojau.

Tai gali padėti labiausiai patinkantys konferencijos pranešimai iš konferencijos. Ir jei aš naudoju „rtweet“ ir „Twitter“ API, man nereikia pasikliauti „populiaraus“ „Twitter“ algoritmu. Aš galiu pats ieškoti ir nustatyti savo kriterijus „populiariam“. Galbūt norėčiau ieškoti geriausių „Twitter“ pranešimų tik iš dabartinės dienos, kol vyksta konferencija, arba filtruoti konkrečią mane dominančią temą, pvz., „Blizgantis“ ar „purrr“, surūšiuotas pagal daugumos „Patinka“ ar „Retweets“.

Vienas iš paprasčiausių būdų atlikti tokias paieškas ir rūšiavimus yra rūšiuojama lentelė. DT yra vienas iš populiariausių tam skirtų paketų. Tačiau pastaruoju metu eksperimentuoju su kitu: reaguojamu.

Numatytasis reaguojantis () yra tarsi bla. Pavyzdžiui:

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

biblioteka (reaguojama)

reaguoja („tweet_table_data“)

Šis kodas sukuria lentelę, kuri atrodo taip:

Sharon Machlis,

Bet mes galime pridėti keletą tinkinimų, tokių kaip:

reaguoja („tweet_table_data“,

filtruojama = TIESA, ieškoma = TIESA, kraštinė = TIESA,

dryžuotas = TIESA, paryškinti = TIESA,

defaultPageSize = 25, showPageSizeOptions = TIESA,

showSortable = TRUE, pageSizeOptions = c (25, 50, 75, 100, 200), defaultSortOrder = "aprašymas",

stulpeliai = sąrašas (

sukurtas_at = colDef (defaultSortOrder = "asc"),

screen_name = colDef (defaultSortOrder = "asc"),

tekstas = colDef (html = TRUE, minWidth = 190, keičiamo dydžio = TRUE),

mėgstamiausias_skaičius = colDef (filtruojamas = NETIESA),

retweet_count = colDef (filtruojamas = FALSE),

urls_expanded_url = colDef (html = TRUE)

)

)

Rezultatas yra lentelė, kuri atrodo maždaug taip:

Sharon Machlis,

Konfigūruokite reaguojančių duomenų lentelę

Viršuje esančiame kodo fragmente filtruojamas = TIESA argumentas pridėjo paieškos filtrus po kiekviena stulpelio antrašte ir ieškoti viršutiniame dešiniajame kampe pridėjo bendrą lentelės paieškos laukelį. Įsijungimas ribojasi, dryžuotasir paryškinti daro tai, ko galite tikėtis: prideda lentelės kraštinę, prideda kintančių eilučių spalvų „juosteles“ ir paryškina eilutę, jei uždėsite žymeklį.

Aš nustatiau savo defaultPageSize iki 25. TheshowPageSizeOptions Argumentas leidžia interaktyviai keisti puslapio ilgį, tada aš apibrėžiu puslapio dydžio parinktis, kurios bus rodomos išskleidžiamajame meniu po lentele (nematomos ekrano kopijoje). showSortable Argumentas prideda mažas rodyklių piktogramas šalia stulpelių pavadinimų, kad vartotojai žinotų, jog jie gali spustelėti norėdami rūšiuoti. Aš nustatau kiekvieną stulpelįdefaultSortOrder į nusileidimą vietoj kilimo. Taigi, jei spustelėsiu retweetų ar teigiamų įvertinimų skaičiaus stulpelį, tai pamatysiu kaip mažiausiai, ne mažiau kaip daugumą.

Galiausiai yra stulpeliai argumentas. Tai sąrašas, kuriame yra kiekvieno stulpelio stulpelio apibrėžimas. Norėdami sužinoti daugiau apie kitas galimas parinktis, peržiūrėkite reaguojamus pagalbos failus. Šiame pavyzdyje aš nustatiau sukurtas_at ir ekrano Vardas stulpelių, kad numatytoji rūšiavimo tvarka būtų didėjanti. Už tekstas stulpelį, nustatiau, kad HTML būtų rodomas kaip HTML, kad galėčiau pridėti spustelėjamas nuorodas. Taip pat nustatiau minimalų stulpelio plotį 190 taškų ir padariau stulpelio dydį - kad vartotojai galėtų spustelėti ir vilkti, kad jis taptų platesnis ar siauresnis.

Taip pat išjungiau filtrų dėžes mėgstamiausias_skaičius ir atsakymo_skaičius. Taip yra todėl, kad, deja, reaguojantys filtrai nesupranta, kai stulpeliai yra skaičiai, ir juos filtruos kaip simbolių eilutes. Nors reaguoja rūšiuoja numerių stulpelius tinkamai, filtro langeliai yra problemiški. Tai yra pagrindinis trūkumas reaguojant į DT paketą: DT supranta stulpelių tipus ir atitinkamai filtruoja. Bet šiam tikslui man pakanka rūšiavimo skaitmeniniu būdu.

Galite peržiūrėti šio straipsnio viršuje pateiktą vaizdo įrašą, kad sužinotumėte, kaip jis atrodo rūšiuojant stulpelį arba padarius „tweet“ teksto stulpelį platesnį ir siauresnį.

Padarykite duomenų lentelę naudingesne

Pora dalykų padarys šią lentelę naudingesne. Šis kodas nerodo vaizdų ar vaizdo įrašų, įtrauktų į „tweet“. Tai gerai, nes mano tikslas čia yra nuskaityti tekstą, o ne iš naujo sukurti „Twitter“ programą. Bet tai reiškia, kad kartais bus naudinga pamatyti originalų tweetą, kad galėtumėte peržiūrėti nuotraukas, vaizdo įrašus ar komentarus.

Manau, kad kiekvieno „Twitter“ teksto pabaigoje patogu pridėti nedidelį spustelėjamą elementą, kurį galite spustelėti, kad pamatytumėte tikrąjį „Twitter“ „Twitter“. Aš nusprendžiau >> nors tai gali būti bet koks personažas ar veikėjai.

Norint sukurti URL, turiu žinoti „Twitter“ formatą, kurį galite pamatyti, jei pažiūrėsite į „Twitter“ tinklaraštį.//twitter.com/username/status/tweetID. 

Naudojant klijų pakuotę, tai būtų pateikiama taip:

klijai :: klijai ("// twitter.com/{screen_name}/status/{status_id}")

Jei anksčiau nenaudojote klijų, tai puikus paketas, skirtas įklijuoti tekstą ir kintamas reikšmes. Pirmiau pateiktame kode vertinamas bet koks kintamasis pavadinimas tarp petnešų.

Mano visas kodas, skirtas sukurti stulpelį su spustelėjama nuoroda į „Twitter“ įrašą po „Twitter“ tekstu:

Tweet = klijai :: klijai ("{text} >>") 

Interaktyvios lentelės duomenų rėmelio sukūrimo kodas:

tweet_table_data%

pasirinkti (vartotojo_idas, būsenos_ID, sukurtas_at, ekrano_vardas, tekstas, mėgstamiausias_skaičius, retweet_count, urls_expanded_url)%>%

mutuoti(

Tweet = klijai :: klijai ("{text} >>")

)%>%

pasirinkite (DateTime = sukurtas_at, vartotojas = ekrano_vardas, „Tweet“, „Patinka“ = mėgstamiausias_skaičius, RT = retweet_count, URL = urls_expanded_url)

Taip pat norėčiau iš URL stulpelio padaryti nuorodas, kurias galima spustelėti, o tai yra tik tekstas. Tai yra šiek tiek sudėtinga, nes URL stulpelis yra sąrašo stulpelis nes kai kurie tweetai apima daugiau nei vieną URL.

Esu įsitikinęs, kad yra paprastesnis būdas sukurti spustelėjamas nuorodas iš paprasto teksto URL sąrašo stulpelio, tačiau žemiau pateiktas kodas veikia. Pirmiausia sukuriu HTML generavimo funkciją, jei nėra URL, vieno URL ar dviejų ar daugiau:

make_url_html <- funkcija (URL) {

jei (ilgis (URL) <2) {

jei (! is.na (url)) {

as.character (klijai ("{url}"))

} Kitas {

""

}

} Kitas {

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

}

}

aš bėgu purrr :: map_chr () ant URL vertės, jei yra du ar daugiau URL, kad kiekvienas URL gautų savo HTML; tada juos įklijuoju ir sutraukiu į vieną simbolių eilutę, kad atsirastų lentelėje.

Kai mano funkcija veikia, aš naudoju purrr :: map_chr () dar kartą pakartoti kiekvieną stulpelio elementą:

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

Nesijaudinkite, jei nesuprantate šios dalies, nes tai tikrai daugiau apie purrr ir list stulpelius, o ne rtweet ir reaguojančius. Ir nebūtina ieškoti ir rūšiuoti tweets; visada galite spustelėti originalų tweetą ir pamatyti ten spustelėjamas nuorodas.

Galiausiai, aš galiu paleisti savo pritaikytą reaguojantis () kodas ant naujos „Twitter“ lentelės duomenų:

reaguoja („tweet_table_data“,

filtruojama = TIESA, ieškoma = TIESA, kraštinė = TIESA, dryžuota = TIESA, paryškinama = TIESA,

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

stulpeliai = sąrašas (

DateTime = colDef (defaultSortOrder = "asc"),

Vartotojas = colDef (defaultSortOrder = "asc"),

Tweet = colDef (html = TRUE, minWidth = 190, keičiamo dydžio = TRUE),

Patinka = colDef (filtruojama = FALSE, formatas = colFormat (separatoriai = TRUE)),

RT = colDef (filtruojamas = FALSE, formatas = colFormat (separatoriai = TRUE)),

URL = colDef (html = TRUE)

)

)

Jei stebėjote kartu, turėtumėte turėti savo interaktyvią lentelę, kurioje būtų galima ieškoti, rūšiuoti ir filtruoti konferencijų ar temų tweetus.

Patarimai „Twitter“ kolekcionieriams

Reikia atsiminti vieną dalyką: jei konferencijos metu stebite konferencijos žymą su grotelėmis, norėsite pritraukti pakankamai tweetų, kad gautumėte visą konferenciją. Taigi patikrinkite ankstyviausią datą savo „tweet“ duomenų rėmelyje. Jei ta data prasideda po konferencijos pradžios, paprašykite daugiau „Twitter“ pranešimų. Jei jūsų konferencijos hashtag'e yra daugiau nei 18 000 tweet'ų (kaip atsitiko, kai stebėjau CES), turėsite sugalvoti keletą strategijų, kad gautumėte visą rinkinį. Patikrinkite retryonratelimit argumentas search_tweets () jei norite surinkti iš viso daugiau nei 18 000 konferencijų žymų su „Twitter“ tweetais, grįžtančiais 6 dienas ar mažiau

Galiausiai, pasibaigus konferencijai, būtinai išsaugokite duomenis vietiniame faile! Po savaitės nebegalėsite pasiekti tų „Twitter“ pranešimų per search_tweets () ir „Twitter“ API.

Peržiūrėkite premijos „Daryk daugiau su R“ epizodą, kad sužinotum, kaip šią „Twitter“ stebėjimo programą paversti interaktyvia „Shiny“ programa.

Norėdami gauti daugiau „R“ patarimų, eikite į puslapį „Daugiau su R“ adresu //bit.ly/domorewithR arba grojaraštį „Daugiau su R“ „TECHtalk YouTube“ kanale.