Ohjelmointi

Kuinka etsiä Twitteristä rtweetillä ja R.

Twitter on loistava uutislähde R: stä - varsinkin konferensseissa, kuten useR! ja RStudio-konferenssi. R: n ja rtweet-paketin ansiosta voit rakentaa oman työkalun lataamaan twiittejä helpon haun, lajittelun ja suodattamisen helpottamiseksi. Katsotaanpa, askel askeleelta.

Ensin haluat asentaa minkä tahansa rtweet-projektin paketista, jota sinulla ei vielä ole: rtweet, reagoiva, liima, stringr, httpuv ja dplyr. Aloita sitten lataamalla rtweet ja dplyr.

# Jos haluat asentaa jonkin näistä:

# install.packages ("rtweet")

# install.packages ("reagoiva")

# install.packages ("liima")

# install.packages ("stringr")

# install.packages ("httpuv")

# install.packages ("dplyr")

# install.packages ("purrr")

kirjasto (rtweet)

kirjasto (dplyr)

Valtuuta Twitter-sovellusliittymä

Jos haluat käyttää rtweetiä, tarvitset Twitter-tilin, jotta voit valtuuttaa rtweetin käyttämään tiettyjä tilisi kirjautumistietoja. Tämä johtuu siitä, kuinka monta twiittiä voit ladata 15 minuutin aikana.

Rtweetin kirjoittanut Michael Kearney antaa rtweet-käyttäjille kaksi vaihtoehtoa. Helpoin tapa on yksinkertaisesti pyytää joitain twiittejä. Jos järjestelmään ei ole tallennettu kirjautumistietoja, selainikkuna avautuu ja pyytää sinua valtuuttamaan pyynnön. Sen jälkeen valtuutusvaltuus tallennetaan .Renviron-tiedostoosi, joten sinun ei tarvitse enää valtuuttaa sitä myöhemmin.

Voit siirtyä osoitteeseen rtweet.info nähdäksesi toisen menetelmän, johon kuuluu Twitter-kehittäjätilin perustaminen ja uusi projekti valtuutustietojen luomiseksi. Jos aiot käyttää rtweetiä paljon, haluat todennäköisesti tehdä sen. Mutta aluksi, helpompi tapa on, hyvin, helpompaa.

Tuo twiittejä

Jos haluat etsiä twiittejä tietyllä hashtagilla (tai lauseella, joka ei ole hashtag), käytä intuitiivisestiearch_tweets () toiminto. Se vie useita argumentteja, mukaan lukien kyselyn, kuten #rstudioconf tai #rstats; haluatko sisällyttää uudelleentwiittauksia; ja palautettavien twiittien määrä. Numero on oletusarvoisesti 100.

Vaikka voit saada jopa 18 000 twiittiä 15 minuutin kuluessa, Twitter-sovellusliittymää käytettäessä on tärkeä rajoitus sanan tai lauseen hakemiseen: hakutulokset ovat vain kuuden tai yhdeksän päivän taaksepäin, ellet maksa premium-Twitter-sovellusliittymätililtä. Toisin kuin Twitter-sivusto, et voi käyttää rtweetiä etsimään twiittejä viime vuoden konferenssista. Et voi hakea kaksi viikkoa konferenssin jälkeen saadaksesi nämä twiitit. Joten sinun kannattaa varmistaa, että tallennat twiittejä, jotka olet nyt halunnut tulevaisuudessa.

Löydät lisää argumentteja, joiden avulla voit mukauttaa hakua, mutta aloitetaan perushaulla: 200 twiittiä #rstudioconf-hashtagilla ilman uudelleentwiittauksia.

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

include_rts = EPÄTOSI)

Jos suoritat kyseisen koodin etkä ole koskaan käyttänyt rtweetiä aiemmin, sinua pyydetään valtuuttamaan Twitter-sovellus.

Huomaa, että vaikka pyydät 200 twiittiä, saatat saada vähemmän. Yksi syy on se, että kyselyllesi ei välttämättä ole 200 twiittiä viimeisten kuuden tai yhdeksän päivän aikana. Toinen on se, että Twitter on voinut alun perin poimia 200 twiittiä, mutta uudelleentwiittausten suodattamisen jälkeen vähemmän jäi.

Tweet_df-tietokehyksessä on 90 datasaraketta kullekin tweetille:

Sharon Machlis,

Sarakkeet, joista olen yleensä eniten kiinnostunut, ovat status_id, luotu_tunnus, näyttönimi, teksti, suosikki_luku, uudelleentwiittaus_määräja urls_expanded_url. Haluat ehkä joitain muita sarakkeita analyysiisi; mutta tässä opetusohjelmassa valitsen vain ne sarakkeet.

Etsi, suodata ja analysoi twiittejäsi

Twitter-tiedoilla ja R: llä on paljon mielenkiintoisia visualisointeja ja analyysejä. Jotkut niistä on rakennettu suoraan rtweetiin. Mutta kirjoitan tämän opetusohjelman teknisen toimittajan hatulla. Haluan helpon tavan nähdä uusia ja hienoja asioita, joista en ehkä tiedä.

Konferenssin suosituimmat twiitit voivat auttaa tässä. Ja jos käytän rtweetiä ja Twitter-sovellusliittymää, minun ei tarvitse luottaa Twitterin "suosittuun" algoritmiin. Voin tehdä omat haut ja asettaa omat kriteerit suositulle. Haluan etsiä parhaita twiittejä vain kuluvasta päivästä, kun konferenssi on käynnissä, tai suodattaa tiettyä kiinnostavaa aihetta - kuten "kiiltävä" tai "purrr" - lajiteltuna useimpien tykkäysten tai useimpien uudelleentwiittausten mukaan.

Yksi helpoimmista tavoista tehdä tällaisia ​​hakuja ja lajitteluita on lajiteltava taulukko. DT on yksi suosittu paketti tähän. Mutta viime aikoina olen kokeillut toista: reagoivaa.

Oletusarvo reagoiva () on eräänlainen blah. Esimerkiksi:

tweet_table_data <- valitse (tweetit, -user_id, -status_id)

kirjasto (reagoiva)

reagoiva (tweet_table_data)

Tämä koodi tuottaa taulukon, joka näyttää tältä:

Sharon Machlis,

Mutta voimme lisätä joitain mukautuksia, kuten:

reagoiva (tweet_table_data,

suodatettavissa = TOSI, haettavissa = TOSI, reunustettu = TOSI,

raidallinen = TOSI, korosta = TOSI,

defaultPageSize = 25, showPageSizeOptions = TOSI,

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

sarakkeet = luettelo (

luotu_at = colDef (oletusSortOrder = "asc"),

näytön_nimi = colDef (defaultSortOrder = "asc"),

teksti = colDef (html = TOSI, minWidth = 190, kokoa = TOSI),

suosikki_määrä = colDef (suodatettavissa = EPÄTOSI),

retweet_count = colDef (suodatettavissa = FALSE),

urls_expanded_url = colDef (html = TOSI)

)

)

Tuloksena on taulukko, joka näyttää tältä:

Sharon Machlis,

Määritä reagoiva tietotaulukko

Yllä olevassa koodipalassa suodatettavissa = TOSI argumentti lisäsi hakusuodattimet jokaisen sarakeotsikon alle ja haettavissa lisäsi yleisen taulukon hakukentän oikeassa yläkulmassa. Käynnistetään reunustettu, raidallinenja kohokohta tekee mitä odottaa: Lisää taulukon reunan, lisää vuorotellen rivin väriset "raidat" ja korostaa rivin, jos laitat siihen kohdistimen.

Asetin defaultPageSize 25: eenshowPageSizeOptions Argumentin avulla saan muuttaa sivun pituutta interaktiivisesti, ja sitten määritän sivukokoasetukset, jotka näkyvät taulukon alapuolella olevassa avattavassa valikossa (ei näy kuvakaappauksessa). showSortable argumentti lisää pienet nuolikuvakkeet sarakkeiden nimien viereen, jotta käyttäjät tietävät, että he voivat napsauttaa lajitellakseen. Ja asetin jokaisen sarakkeendefaultSortOrder laskevaan nousevan sijasta. Joten jos napsautan uudelleentwiittausten tai tykkäysten määrän saraketta, näen sen vähiten, ei vähiten.

Lopuksi on sarakkeita Perustelu. Tämä on luettelo, joka sisältää sarakkeen määritelmän jokaiselle sarakkeelle. Katso uudelleen käytettävissä olevista ohjetiedostoista lisätietoja muista käytettävissä olevista vaihtoehdoista. Tässä esimerkissä asetin luotu_t ja Nimimerkki sarakkeissa oletusarvoinen nouseva järjestys. Varten teksti sarakkeessa, asetin sen näyttämään HTML: n HTML: nä, jotta voin lisätä napsautettavia linkkejä. Asetin myös sarakkeen vähimmäisleveydeksi 190 pikseliä ja tein sarakkeen koon muutettavissa - jotta käyttäjät voivat napsauttaa ja vetää tehdäksesi siitä laajemman tai kapeamman.

Sammutin myös suodatinrasiat suosikki_määrä ja vastausmäärä. Tämä johtuu siitä, että valitettavasti reagoivat suodattimet eivät ymmärrä, milloin sarakkeet ovat numeroita, ja suodattavat ne merkkijonoina. Vaikka reaktiivinen lajittelee numerosarakkeita oikein, suodatinruudut ovat ongelmallisia. Tämä on suurin haittapuoli reagoivaan verrattuna DT-pakettiin: DT ymmärtää saraketyypit ja suodattaa vastaavasti. Mutta numerolajittelu riittää minulle tähän tarkoitukseen.

Voit tarkistaa tämän artikkelin yläosassa olevan videon, miltä se näyttää, kun lajitellaan sarake tai tehdään tweet-tekstisarakkeesta leveämpi ja kapeampi.

Tee tietotaulukosta hyödyllisempi

Muutama asia tekee tästä taulukosta hyödyllisemmän. Tämä koodi ei näytä twiitteihin sisältyviä kuvia tai videoita. Se on hieno, koska tarkoitusni on skannata tekstiä, ei luoda Twitter-sovellusta uudelleen. Mutta se tarkoittaa, että joskus on hyödyllistä nähdä alkuperäinen twiitti valokuvien, videoiden tai kommenttien katselemiseksi.

Mielestäni on kätevää lisätä pieni napsautettava jokaisen tweetin tekstin loppuun, jota napsauttamalla näet todellisen twiitin Twitterissä. Päätin >> vaikka se voi olla mikä tahansa merkki tai merkkejä.

URL-osoitteen rakentamiseksi minun on tiedettävä twiitin muoto, joka, jos katsot jotain Twitter-verkkosivuston twiittiä, näet//twitter.com/username/status/tweetID. 

Käyttämällä liimapakettia se renderoidaan näin:

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

Jos et ole käyttänyt liimaa aiemmin, se on loistava paketti tekstin ja muuttujien arvojen liittämiseen. Yllä olevassa koodissa arvioidaan kaikki muuttujien nimet aaltosulkujen välillä.

Koko koodini luoda sarake, jossa on napsautettava linkki tweetiin tweet-tekstin jälkeen:

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

Ja koodi luoda datakehys interaktiiviselle taulukolle:

tweet_table_data%

valitse (käyttäjän_tunnus, tilan_tunnus, luotu_tunnus, näyttönimi, teksti, suosikki_luku, uudelleentwiittaus_luku, URL-osoitteet_laajennettu_url)%>%

muuttua(

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

)%>%

valitse (päivämääräaika = luotu_tunnus, käyttäjä = näyttönimi, twiitti, tykkäykset = suosikki_määrä, RTs = uudelleentwiittamäärä, URL-osoitteet = URL-osoitteet_laajennettu_url)

Haluaisin myös tehdä napsautettavia linkkejä URL-sarakkeesta, joka on nyt vain tekstiä. Tämä on vähän monimutkaista, koska URL-sarake on a luettelo sarake koska joissakin tweeteissä on useampi kuin yksi URL-osoite.

Olen varma, että on olemassa tyylikkäämpi tapa luoda napsautettavia linkkejä pelkkätekstisten URL-osoitteiden luettelosarakkeesta, mutta alla oleva koodi toimii. Ensin luon toiminnon HTML: n luomiseksi, jos URL-osoitteita ei ole, yksi URL-osoite tai kaksi tai enemmän:

make_url_html <- funktio (url) {

jos (pituus (URL) <2) {

if (! is.na (url)) {

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

} muu {

""

}

} muu {

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

}

}

juoksen purrr :: map_chr () URL-arvoon, jos URL-osoitteita on vähintään kaksi, joten jokainen URL saa oman HTML-koodinsa; sitten liitän ne yhteen ja tiivistän ne yhdeksi merkkijonoksi, jotta ne näkyvät taulukossa.

Kun toimintoni toimii, käytän purrr :: map_chr () uudelleen toistaaksesi sarakkeen jokaisen kohteen:

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

Älä huoli, jos et ymmärrä tätä osaa, koska kyseessä on pikemminkin purrr- ja listasarakkeet kuin rtweet ja reagoiva. Eikä twiittejä tarvitse etsiä ja lajitella; voit aina napsauttaa alkuperäistä twiittiä ja nähdä napsautettavat linkit siellä.

Lopuksi voin suorittaa mukautetun reagoiva () koodi uuden tweet-taulukon tiedoissa:

reagoiva (tweet_table_data,

suodatettava = TOSI, haettavissa = TOSI, reunustettu = TOSI, raidallinen = TOSI, korostus = TOSI,

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

sarakkeet = luettelo (

DateTime = colDef (defaultSortOrder = "asc"),

Käyttäjä = colDef (defaultSortOrder = "asc"),

Tweet = colDef (html = TOSI, minWidth = 190, kokoa = TOSI),

Tykkää = colDef (suodatettavissa = EPÄTOSI, muoto = colFormat (erottimet = TOSI)),

RTs = colDef (suodatettavissa = EPÄTOSI, muoto = colFormat (erottimet = TOSI)),

URL-osoitteet = colDef (html = TOSI)

)

)

Jos olet seurannut mukana, sinulla pitäisi olla oma interaktiivinen taulukko, joka voi etsiä, lajitella ja suodattaa konferenssi- tai aihe-twiittejä.

Vinkkejä tweet-keräilijöille

Yksi asia on muistettava: Jos seuraat konferenssin hashtagia konferenssin aikana, sinun kannattaa kerätä tarpeeksi twiittejä saadaksesi koko konferenssin. Joten tarkista tweet-datakehyksen aikaisin päivämäärä. Jos kyseinen päivä on konferenssin alkamisen jälkeen, pyydä lisää twiittejä. Jos konferenssisi hashtagilla on yli 18 000 twiittiä (kuten tapahtui, kun seurasin CES: ää), sinun on keksittävä joitain strategioita koko sarjan saamiseksi. Katso yritä uudelleen argumentti search_tweets () jos haluat kerätä koko yli 18 000 + konferenssi hashtag-twiittiä, jotka ovat alle 6 päivää

Lopuksi varmista, että tallennat tietosi paikalliseen tiedostoon, kun konferenssi päättyy! Viikkoa myöhemmin et voi enää käyttää näitä twiittejä search_tweets () ja Twitter-sovellusliittymä.

Ja tarkista bonuksen "Tee enemmän R: llä" jakso nähdäksesi, miten tästä Twitter-seurantasovelluksesta voidaan tehdä interaktiivinen kiiltävä sovellus.

Saat lisää R-vinkkejä siirtymällä Do More With R -sivulle osoitteessa //bit.ly/domorewithR tai TECHtalk YouTube -kanavan Do More With R -soittolistaan.