Programování

Jak hledat na Twitteru pomocí rtweet a R.

Twitter je skvělým zdrojem zpráv o R - zejména během konferencí, jako je useR! a RStudio konference. A díky R a balíčku rtweet můžete vytvořit svůj vlastní nástroj pro stahování tweetů pro snadné vyhledávání, třídění a filtrování. Podívejme se krok za krokem.

Nejprve chcete nainstalovat libovolný z balíčků projektu rtweet, který ještě nemáte: rtweet, reaktabilní, lepidlo, stringr, httpuv a dplyr. Pak začněte, načtěte rtweet a dplyr.

# Pokud potřebujete nainstalovat některou z těchto možností:

# install.packages ("rtweet")

# install.packages („reaable“)

# install.packages („lepidlo“)

# install.packages ("stringr")

# install.packages („httpuv“)

# install.packages ("dplyr")

# install.packages ("purrr")

knihovna (rtweet)

knihovna (dplyr)

Autorizujte rozhraní Twitter API

Chcete-li používat rtweet, potřebujete účet Twitter, abyste mohli autorizovat rtweet k používání vašich konkrétních pověření účtu. Je to proto, že existuje limit počtu tweetů, které si můžete stáhnout za 15 minut.

Michael Kearney, který napsal rtweet, dává uživatelům rtweet dvě možnosti. Nejjednodušší je jednoduše požádat o tweety. Pokud ve vašem systému nejsou uložena pověření, mělo by se otevřít okno prohlížeče s žádostí o autorizaci požadavku. Poté bude autorizační token uložen ve vašem souboru .Renviron, takže v budoucnu nemusíte znovu autorizovat.

Můžete přejít na rtweet.info a zobrazit další metodu, která zahrnuje nastavení účtu vývojáře Twitter a nový projekt pro generování autorizačních pověření. Pokud hodláte hodně používat rtweet, pravděpodobně to budete chtít udělat. Ale pro začátek, jednodušší cesta je, no, jednodušší.

Importujte tweety

Chcete-li hledat tweety s konkrétním hashtagem (nebo frází, která není hashtag), použijte intuitivně pojmenovaný search_tweets () funkce. Trvá několik argumentů, včetně dotazu, například #rstudioconf nebo #rstats; zda chcete zahrnout retweety; a počet tweetů, které se mají vrátit. Výchozí počet je 100.

I když můžete do 15 minut obdržet až 18 000 tweetů, při hledání slova nebo fráze pomocí rozhraní API Twitter existuje důležité omezení: výsledky vyhledávání se vracejí pouze šest až devět dní, pokud nezaplatíte za prémiový účet Twitter API. Na rozdíl od webu Twitter nemůžete pomocí rtweet hledat tweety z loňské konference. Nebudete moci vyhledávat dva týdny po konferenci získat ty tweety. Budete si tedy chtít uložit tweety, které vytáhnete hned teď, když je budete chtít v budoucnu chtít.

Existuje více argumentů, které můžete použít k přizpůsobení vyhledávání, ale začněme základním vyhledáváním: 200 tweetů s hashtagem #rstudioconf bez retweetů.

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

include_rts = FALSE)

Pokud spustíte tento kód a nikdy jste nepoužívali rtweet, budete požádáni o autorizaci aplikace Twitter.

Všimněte si, že i když požádáte o 200 tweetů, můžete získat méně. Jedním z důvodů je, že za posledních šest až devět dní nemusí být pro váš dotaz 200 tweetů. Dalším důvodem je, že Twitter mohl původně zpočátku extrahovat 200 tweetů, ale po odfiltrování retweetů jich zbylo méně.

Datový rámec tweet_df obsahuje 90 sloupců dat pro každý tweet:

Sharon Machlis,

Sloupce, které mě obvykle nejvíce zajímají, jsou status_id, created_at, screen_name, text, Favorite_count, retweet_count, a urls_expanded_url. Možná budete pro analýzu potřebovat další sloupce; ale pro tento tutoriál vyberu jen ty sloupce.

Vyhledávejte, filtrujte a analyzujte své tweety

Existuje spousta zajímavých vizualizací a analýz, které můžete udělat s daty z Twitteru a R. Některé z nich jsou zabudovány přímo do rtweet. Ale píšu tento tutoriál v mé tech novinářské čepici. Chci snadný způsob, jak vidět nové a skvělé věci, o kterých bych možná nevěděl.

K tomu by mohly pomoci nejoblíbenější tweety z konference. A pokud používám rtweet a Twitter API, nemusím se spoléhat na „populární“ algoritmus Twitteru. Mohu provádět vlastní vyhledávání a nastavit vlastní kritéria pro „populární“. Možná budu chtít hledat nejlepší tweety právě z aktuálního dne, když konference právě probíhá, nebo filtrovat konkrétní téma, které mě zajímá - například „lesklé“ nebo „purrr“ - seřazené podle většiny lajků nebo retweetů.

Jedním z nejjednodušších způsobů, jak provádět tyto druhy vyhledávání a třídění, je srovnávací tabulka. DT je ​​jedním z populárních balíčků. Ale v poslední době experimentuji s dalším: reaktivní.

Výchozí reaktivní () je trochu bla. Například:

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

knihovna (reaktivní)

reaktivní (tweet_table_data)

Tento kód vytvoří tabulku, která vypadá takto:

Sharon Machlis,

Ale můžeme přidat některá přizpůsobení, například:

reaktivní (tweet_table_data,

filtrovatelné = PRAVDA, prohledávatelné = PRAVDA, ohraničené = PRAVDA,

pruhovaný = PRAVDA, zvýraznění = PRAVDA,

defaultPageSize = 25, showPageSizeOptions = TRUE,

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

sloupce = seznam (

created_at = colDef (defaultSortOrder = "asc"),

screen_name = colDef (defaultSortOrder = "asc"),

text = colDef (html = PRAVDA, minŠířka = 190, změna velikosti = PRAVDA),

favourite_count = colDef (filtrovatelné = FALSE),

retweet_count = colDef (filtrovatelné = FALSE),

urls_expanded_url = colDef (html = PRAVDA)

)

)

Výsledkem je tabulka, která vypadá asi takto:

Sharon Machlis,

Nakonfigurujte svoji reaktivní datovou tabulku

V bloku kódu výše je filtrovatelné = PRAVDA filtry přidané do vyhledávacích filtrů pod záhlaví každého sloupce a prohledávatelné přidáno celkové vyhledávací pole tabulky vpravo nahoře. Zapíná se ohraničený, pruhovaný, a zvýraznit dělá to, co můžete očekávat: Přidá ohraničení tabulky, přidá barevné pruhy se střídavými řádky a zvýrazní řádek, pokud na něj umístíte kurzor.

Nastavil jsem defaultPageSize do 25. TheshowPageSizeOptions Argument mi umožňuje interaktivně změnit délku stránky a poté definuji možnosti velikosti stránky, které se zobrazí v rozevírací nabídce pod tabulkou (na snímku obrazovky to není vidět). The showSortable Argument přidává malé ikony šipek vedle názvů sloupců, aby uživatelé věděli, že je mohou třídit kliknutím. A nastavil jsem každý sloupecdefaultSortOrder na sestup místo na vzestup. Takže když kliknu na sloupec s počtem retweetů nebo lajků, uvidím to jako nejvíce k nejméně, v neposlední řadě k většině.

Konečně je tu sloupce argument. Toto je seznam obsahující definici sloupce pro každý sloupec. Podívejte se na reaktivní soubory nápovědy, kde najdete další podrobnosti o dalších dostupných možnostech. V tomto příkladu jsem nastavil created_at a screen_name sloupce mají výchozí pořadí řazení vzestupně. Pro text sloupec, nastavil jsem, aby zobrazoval HTML jako HTML, abych mohl přidat odkazy, na které lze kliknout. Také jsem nastavil minimální šířku sloupce 190 pixelů a změnil velikost sloupce - aby uživatelé mohli klikáním a tažením zvětšit nebo zúžit.

Také jsem vypnul filtrovací boxy pro oblíbený_počet a počet_odpovědí. Je to proto, že reaktivní filtry nerozumí tomu, kdy jsou sloupce čísla, a budou je filtrovat jako řetězce znaků. I když je reaktivní druhy počet sloupců správně, pole filtru jsou problematická. To je hlavní nevýhoda reaktivních verzí balíčku DT: DT rozumí typům sloupců a odpovídajícím způsobem filtruje. Ale pro tento účel mi stačí třídění podle čísel.

Můžete se podívat na video v horní části tohoto článku a podívat se, jak to vypadá, když seřadíte sloupec nebo zvětšíte a zúžíte textový sloupec tweetu.

Udělejte svou tabulku dat užitečnější

Díky této věci bude tato tabulka užitečnější. Tento kód nezobrazuje obrázky ani videa obsažená ve tweetech. To je v pořádku, protože mým cílem je zde skenovat text, nikoli znovu vytvářet aplikaci Twitter. To ale znamená, že někdy bude užitečné zobrazit původní tweet, abyste si mohli prohlížet fotografie, videa nebo komentáře.

Myslím, že je vhodné přidat na konec textu každého tweetu něco, na co lze kliknout, a kliknutím můžete zobrazit skutečný tweet na Twitteru. Rozhodl jsem se >> i když to může být jakýkoli znak nebo znaky.

Chcete-li vytvořit adresu URL, potřebuji znát formát tweetu, který, pokud se podíváte na jakýkoli tweet na webu Twitter, můžete vidět je//twitter.com/username/status/tweetID. 

Pomocí balíčku lepidla by se to vykreslilo takto:

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

Pokud jste dosud lepidlo nepoužívali, je to skvělý balíček pro slepování textových a proměnných hodnot. Ve výše uvedeném kódu je vyhodnocen jakýkoli název proměnné mezi složenými závorkami.

Můj celý kód pro vytvoření sloupce s klikatelným odkazem na tweet po tweetu:

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

A kód pro vytvoření datového rámce pro interaktivní tabulku:

tweet_table_data%

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

mutovat(

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

)%>%

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

Také bych chtěl vytvořit klikatelné odkazy ze sloupce URL, který je nyní pouze textový. To je trochu komplikované, protože sloupec URL je a sloupec seznamu protože některé tweety obsahují více než jednu adresu URL.

Jsem si jist, že existuje elegantnější způsob, jak vytvořit klikatelné odkazy ze sloupce se seznamem adres URL v prostém textu, ale níže uvedený kód funguje. Nejprve vytvořím funkci pro generování HTML, pokud neexistují žádné adresy URL, jedna adresa URL nebo dvě nebo více:

make_url_html <- funkce (url) {

if (délka (url) <2) {

if (! is.na (url)) {

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

} else {

""

}

} else {

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

}

}

běžím purrr :: map_chr () na hodnotě adresy URL, pokud existují dvě nebo více adres URL, aby každá adresa URL získala vlastní kód HTML; pak je vložím dohromady a sbalím do jednoho znakového řetězce, který se objeví v tabulce.

Jakmile moje funkce funguje, používám purrr :: map_chr () znovu pro iteraci nad každou položkou ve sloupci:

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

Nebojte se, pokud této části nerozumíte, protože jde opravdu o více než o purrr a seznam sloupců, než o rtweet a reaable. A není nutné tweety hledat a třídit; kdykoli můžete kliknout na původní tweet a zobrazit zde klikatelné odkazy.

Nakonec můžu spustit svůj přizpůsobený reaktivní () kód na nových datech tabulky tweetů:

reaktivní (tweet_table_data,

filtrovatelné = TRUE, prohledávatelné = TRUE, ohraničené = TRUE, pruhované = TRUE, zvýrazněné = TRUE,

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

sloupce = seznam (

DateTime = colDef (defaultSortOrder = "asc"),

User = colDef (defaultSortOrder = "asc"),

Tweet = colDef (html = PRAVDA, minWidth = 190, změna velikosti = PRAVDA),

Líbí se mi = colDef (filtrovatelné = FALSE, formát = colFormat (oddělovače = TRUE)),

RTs = colDef (filtrovatelné = FALSE, formát = colFormat (oddělovače = TRUE)),

URL = colDef (html = PRAVDA)

)

)

Pokud jste to sledovali, měli byste mít vlastní interaktivní tabulku, která může vyhledávat, třídit a filtrovat tweety z konferencí nebo témat.

Tipy pro sběratele tweetů

Jedna věc, kterou si musíte pamatovat: Pokud během konference sledujete hashtag konference, budete chtít vytáhnout dostatek tweetů, abyste získali celou konferenci. Zkontrolujte tedy nejbližší datum v datovém rámci tweetu. Pokud je toto datum po zahájení konference, vyžádejte si další tweety. Pokud má váš konferenční hashtag více než 18 000 tweetů (jak se stalo, když jsem sledoval CES), budete muset přijít s některými strategiemi, abyste získali celou sadu. Podívejte se na retryonratelimit argument pro search_tweets () pokud chcete shromáždit více než 18 000 více konferenčních hashtagových tweetů, které se vracejí 6 dní nebo méně

Až konference skončí, nezapomeňte data uložit do místního souboru! O týden později už k těmto tweetům nebudete mít přístup prostřednictvím search_tweets () a Twitter API.

A podívejte se na bonusovou epizodu „Do More with R“ a podívejte se, jak tuto aplikaci pro sledování Twitteru proměnit v interaktivní aplikaci Shiny.

Další tipy R najdete na stránce Do More With R na adrese //bit.ly/domorewithR nebo v playlistu Do More With R na kanálu TECHtalk na YouTube.

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