Programovanie

Ako hľadať na Twitteri s rtweet a R.

Twitter je skvelým zdrojom správ o R - najmä počas konferencií, ako je useR! a RStudio konferencia. A vďaka programu R a balíku rtweet si môžete vytvoriť svoj vlastný nástroj na sťahovanie tweetov pre ľahké vyhľadávanie, triedenie a filtrovanie. Pozrime sa na to krok za krokom.

Najskôr chcete nainštalovať ľubovoľný z balíkov projektu rtweet, ktorý ešte nemáte: rtweet, reaktabilné, lepidlo, stringr, httpuv a dplyr. Potom začnite načítaním súboru rtweet a dplyr.

# Ak potrebujete nainštalovať niektorý z týchto spôsobov:

# install.packages ("rtweet")

# install.packages („reaable“)

# install.packages („lepidlo“)

# install.packages ("stringr")

# install.packages („httpuv“)

# install.packages ("dplyr")

# install.packages ("purrr")

knižnica (rtweet)

knižnica (dplyr)

Autorizujte rozhranie Twitter API

Ak chcete používať rtweet, potrebujete účet Twitter, aby ste mohli autorizovať rtweet na používanie vašich konkrétnych prihlasovacích údajov k účtu. Je to preto, že existuje obmedzenie počtu tweetov, ktoré si môžete stiahnuť za 15 minút.

Michael Kearney, ktorý napísal rtweet, dáva používateľom rtweet dve možnosti. Najjednoduchšie je jednoducho požiadať o nejaké tweety. Ak vo vašom systéme nie sú uložené poverenia, malo by sa otvoriť okno prehliadača so žiadosťou o autorizáciu žiadosti. Potom sa do vášho súboru .Renviron uloží autorizačný token, aby ste v budúcnosti nemuseli znova autorizovať.

Môžete prejsť na stránku rtweet.info a pozrieť sa na ďalšiu metódu, ktorá spočíva v zriadení účtu vývojára Twitter a nového projektu na generovanie autorizačných údajov. Ak budete rtweet často používať, pravdepodobne to budete chcieť urobiť. Ale začať, ľahšia cesta je, no, ľahšia.

Importujte tweety

Ak chcete vyhľadať tweety s konkrétnym hashtagom (alebo frázou, ktorá nie je hashtag), použijete intuitívne pomenované search_tweets () funkcia. Trvá niekoľko argumentov vrátane dotazu, napríklad #rstudioconf alebo #rstats; či chcete zahrnúť retweety; a počet tweetov, ktoré sa majú vrátiť. Predvolené číslo je 100.

Aj keď do 15 minút môžete prijať až 18 000 tweetov, pri vyhľadávaní slova alebo frázy pomocou rozhrania Twitter API existuje dôležité obmedzenie: pokiaľ neplatíte za prémiový účet Twitter API, výsledky vyhľadávania sa vrátia iba o šesť až deväť dní dozadu. Na rozdiel od webu Twitter nemôžete pomocou rtweet vyhľadávať tweety z konferencie minulý rok. Nebudete môcť vyhľadávať dva týždne po konferencii získať tieto tweety. Preto si určite nezabudnite ukladať tweety, ktoré vytiahnete teraz, keď ich budete chcieť v budúcnosti.

Existuje viac argumentov, ktoré môžete použiť na prispôsobenie vyhľadávania, ale začnime základným vyhľadávaním: 200 tweetov s hashtagom #rstudioconf bez retweetov.

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

include_rts = FALSE)

Ak spustíte tento kód a nikdy ste nepoužívali program rtweet, zobrazí sa výzva na autorizáciu aplikácie Twitter.

Upozorňujeme, že aj keď požiadate o 200 tweetov, môže sa vám vrátiť späť menej. Jedným z dôvodov je, že za posledných šesť až deväť dní nemusí byť pre váš dopyt 200 tweetov. Ďalším je fakt, že Twitter skutočne mohol pôvodne extrahovať 200 tweetov, ale po odfiltrovaní retweetov ich zostalo menej.

Dátový rámec tweet_df obsahuje 90 stĺpcov údajov pre každý tweet:

Sharon Machlis,

Stĺpce, ktoré ma zvyčajne najviac zaujímajú status_id, created_at, screen_name, text, popular_count, retweet_counta urls_expanded_url. Možno budete potrebovať nejaké ďalšie stĺpce pre svoju analýzu; ale pre tento tutoriál vyberiem iba tieto stĺpce.

Vyhľadajte, filtrujte a analyzujte svoje tweety

Existuje veľa zaujímavých vizualizácií a analýz, ktoré môžete urobiť s údajmi z Twitteru a R. Niektoré z nich sú zabudované priamo do rtweet. Ale tento tutoriál píšem v čiapke technického novinára. Chcem jednoduchý spôsob, ako vidieť nové a super veci, o ktorých by som možno nevedel.

K tomu by mohli pomôcť najobľúbenejšie tweety z konferencie. A ak používam rtweet a Twitter API, nemusím sa spoliehať na „populárny“ algoritmus Twitteru. Môžem vyhľadávať a nastaviť vlastné kritériá pre dopyt „populárne“. Možno budem chcieť hľadať najlepšie tweety od aktuálneho dňa, keď práve prebieha konferencia, alebo filtrovať konkrétnu tému, ktorá ma zaujíma - napríklad „lesklé“ alebo „purrr“ - zoradené podľa väčšiny označení páči sa mi alebo väčšiny retweetov.

Jedným z najjednoduchších spôsobov, ako robiť tieto druhy vyhľadávania a triedenia, je tabuľka, ktorá je k dispozícii na triedenie. Na tento účel je DT obľúbeným balíkom. Ale v poslednej dobe experimentujem s ďalším: reaktívnym.

Predvolená hodnota reagovateľný () je druh bla. Napríklad:

tweet_table_data <- vyberte (tweety, -user_id, -status_id)

knižnica (reaktívna)

reaktívne (tweet_table_data)

Tento kód vytvorí tabuľku, ktorá vyzerá takto:

Sharon Machlis,

Môžeme však pridať niekoľko prispôsobení, napríklad:

reaktívne (tweet_table_data,

filtrovateľné = TRUE, prehľadateľné = TRUE, ohraničené = TRUE,

pruhované = TRUE, zvýraznenie = TRUE,

defaultPageSize = 25, showPageSizeOptions = TRUE,

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

stĺpce = zoznam (

created_at = colDef (defaultSortOrder = "asc"),

screen_name = colDef (defaultSortOrder = "asc"),

text = colDef (html = TRUE, minWidth = 190, zmena veľkosti = TRUE),

oblubeny_cet = colDef (filtrovatelny = FALSE),

retweet_count = colDef (filtrovateľný = FALSE),

urls_expanded_url = colDef (html = TRUE)

)

)

Výsledkom je tabuľka, ktorá vyzerá asi takto:

Sharon Machlis,

Nakonfigurujte si svoju tabuľku reaktívnych údajov

V bloku kódu vyššie je filtrovateľné = PRAVDA - argumenty pridané do vyhľadávacích filtrov pod hlavičkou každého stĺpca a - prehľadateľný pridané celkové vyhľadávacie pole tabuľky vpravo hore. Zapínanie ohraničený, pruhovanýa Zlatý klinec urobí to, čo by ste mohli čakať: Pridá orámovanie tabuľky, pridá farebné pruhy striedavého riadku a zvýrazní riadok, ak naň umiestnite kurzor.

Nastavil som svoje defaultPageSize do 25. TheshowPageSizeOptions Argument umožňuje interaktívne meniť dĺžku stránky a potom definujem možnosti veľkosti stránky, ktoré sa zobrazia v rozbaľovacej ponuke pod tabuľkou (na snímke obrazovky to nie je viditeľné). The showSortable Tento argument pridáva malé ikony šípok vedľa názvov stĺpcov, aby používatelia vedeli, že ich môžu zoradiť kliknutím. A nastavil som každý stĺpecdefaultSortOrder aby zostupoval namiesto stúpal. Takže ak kliknem na stĺpec s počtom retweetov alebo označení Páči sa mi to, uvidím to ako najviac až najmenej, v neposlednom rade najviac.

Nakoniec je tu stĺpce argument. Toto je zoznam obsahujúci definíciu stĺpca pre každý stĺpec. Ďalšie podrobnosti o ďalších dostupných možnostiach nájdete v reaktovateľných súboroch pomoci. V tomto príklade som nastavil created_at a Meno obrazovky stĺpce, aby mali predvolené zoradenie vzostupne. Pre text stĺpec, nastavil som ho na zobrazovanie HTML ako HTML, aby som mohol pridávať klikateľné odkazy. Nastavil som tiež minimálnu šírku stĺpca 190 pixelov a zmenil veľkosť stĺpca, aby používatelia mohli kliknutím a ťahaním obrázok zväčšiť alebo zmenšiť.

Tiež som vypol filtračné boxy pre oblubeny_počet a počet_odpovedania. Je to preto, že reaktívne filtre nerozumejú, kedy sú stĺpce čísla, a budú ich filtrovať ako reťazce znakov. Zatiaľ čo je reaktívny triedi počet stĺpcov správne, polia filtra sú problematické. To je hlavná nevýhoda reaktívnych oproti balíku DT: DT chápe typy stĺpcov a podľa toho filtruje. Na tento účel mi ale stačí triedenie podľa čísel.

Môžete sa pozrieť na video v hornej časti tohto článku a pozrieť sa, ako to vyzerá, keď zoradíte stĺpec alebo zväčšíte a zúžite textový stĺpec tweetu.

Zvyšujte užitočnosť svojej tabuľky s údajmi

Vďaka tejto veci bude táto tabuľka užitočnejšia. Tento kód nezobrazuje obrázky ani videá obsiahnuté v tweetoch. To je v poriadku, pretože mojím cieľom je tu skenovať text, nie znova vytvárať aplikáciu Twitter. To však znamená, že niekedy bude užitočné pozrieť si pôvodný tweet, aby ste si mohli pozrieť fotografie, videá alebo komentáre.

Myslím, že je vhodné pridať na koniec textu každého tweetu niečo, na čo sa dá kliknúť, a kliknutím môžete zobraziť skutočný tweet na Twitteri. Rozhodol som sa >> aj keď to môže byť akýkoľvek znak alebo znaky.

Na zostavenie adresy URL potrebujem poznať formát tweetu, ktorý ak sa pozriete na tweet na webe Twitter, uvidíte, že je//twitter.com/username/status/tweetID. 

Pomocou balenia lepidla by sa to vykreslilo takto:

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

Ak ste lepidlo doteraz nepoužívali, je to vynikajúci balík na lepenie textových a premenných hodnôt. Vo vyššie uvedenom kóde sa vyhodnocuje akýkoľvek názov premennej medzi zloženými zátvorkami.

Môj úplný kód na vytvorenie stĺpca s klikateľným odkazom na tweet za textom tweetu:

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

A kód na vytvorenie dátového rámca pre interaktívnu tabuľku:

tweet_table_data%

select (user_id, status_id, created_at, screen_name, text, favorite_count, retweet_count, urls_expanded_url)%>%

mutovať(

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

)%>%

select (DateTime = created_at, User = screen_name, Tweet, Likes = popular_count, RTs = retweet_count, URLs = urls_expanded_url)

Chcel by som tiež vytvoriť klikateľné odkazy zo stĺpca URL, ktorý je teraz iba textový. Toto je trochu komplikované, pretože stĺpec URL je a stĺpec so zoznamom pretože niektoré tweety obsahujú viac ako jednu adresu URL.

Som si istý, že existuje elegantnejší spôsob vytvárania odkazov, na ktoré je možné kliknúť, zo stĺpca so zoznamom adries URL v obyčajnom texte, ale nižšie uvedený kód funguje. Najskôr vytvorím funkciu na generovanie kódu HTML, ak neexistujú žiadne adresy URL, jedna adresa URL alebo dve alebo viac:

make_url_html <- function (url) {

if (dĺžka (url) <2) {

if (! is.na (url)) {

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

} else {

""

}

} else {

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

}

}

bežím purrr :: map_chr () na hodnote adresy URL, ak existujú dve alebo viac adries URL, takže každá adresa URL dostane svoje vlastné HTML; potom ich prilepím dokopy a zbalím do jedného znakového reťazca, ktorý sa zobrazí v tabuľke.

Keď moja funkcia funguje, použijem ju purrr :: map_chr () znova pre iteráciu nad každou položkou v stĺpci:

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

Nerobte si starosti, ak tejto časti nerozumiete, pretože je to naozaj viac o stĺpcoch purrr a list ako o rtweet a reaable. A nie je potrebné prehľadávať a triediť tweety; vždy môžete kliknúť na pôvodný tweet a zobraziť tam klikateľné odkazy.

Nakoniec môžem spustiť svoje prispôsobené reagovateľný () kód na nových údajoch tabuľky tweetov:

reaktívne (tweet_table_data,

filtrovateľné = TRUE, prehľadateľné = TRUE, ohraničené = TRUE, pruhované = TRUE, zvýraznené = TRUE,

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

stĺpce = zoznam (

DateTime = colDef (defaultSortOrder = "asc"),

User = colDef (defaultSortOrder = "asc"),

Tweet = colDef (html = TRUE, minWidth = 190, zmena veľkosti = TRUE),

Páči sa mi = colDef (filtrovateľné = FALSE, formát = colFormat (oddeľovače = TRUE)),

RTs = colDef (filtrovateľné = FALSE, formát = colFormat (oddeľovače = TRUE)),

URL = colDef (html = TRUE)

)

)

Ak to sledujete ďalej, mali by ste mať vlastnú interaktívnu tabuľku, ktorá dokáže vyhľadávať, triediť a filtrovať tweety z konferencií alebo tém.

Tipy pre zberateľov tweetov

Jedna vec, ktorú treba pamätať: Ak počas konferencie sledujete hashtag konferencie, budete pravdepodobne chcieť vytiahnuť dostatok tweetov, aby ste získali celú konferenciu. Skontrolujte si teda najskorší dátum v dátovom rámci tweetu. Ak je tento dátum po začiatku konferencie, požiadajte o ďalšie tweety. Ak má váš konferenčný hashtag viac ako 18 000 tweetov (ako sa to stalo, keď som sledoval CES), budete musieť prísť s nejakými stratégiami, ako získať celú sadu. Pozrite sa na retryonratelimit argument pre search_tweets () Ak chcete zhromaždiť viac ako 18 000+ konferenčných hashtagových tweetov, ktoré sa vrátia do 6 dní alebo menej

Na záver nezabudnite svoje údaje uložiť do miestneho súboru, keď sa konferencia skončí! O týždeň neskôr už nebudete mať k týmto tweetom prístup prostredníctvom search_tweets () a Twitter API.

A pozrite si bonusovú epizódu „Do More with R“, kde nájdete informácie o tom, ako zmeniť túto aplikáciu na sledovanie Twitteru na interaktívnu aplikáciu Shiny.

Ďalšie tipy R nájdete na stránke Urob viac s R na adrese //bit.ly/domorewithR alebo v zozname skladieb Urob viac s R na kanáli TECHtalk na YouTube.

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