Tag Archives: Twitter

#minätutkin

In October 2021, Finnish academic Twitter was active with the hashtag #minätutkin, My/I research. I wrote a guest posting to the rOpenGov blog (in Finnish) how I categorized these tweets by field with the help of the automatic keywording provided by Finto AI.

The image shows the proportion of the different fields by day.

A year later, the hashtag was popular again, so I re-ran the experiment and tweeted about it on September 11th.

The R code is on GitHub.

Aaltodocbot

Although I don’t belong to Aalto University staff any longer, I still maintain the Twitter bot FromA! that saw daylight in January 2015. It posts links to articles, dissertations, reports et al. published in the Aalto University publication archive https://aaltodoc.aalto.fi

The posting cycle is slightly random at the moment because I still haven’t built it on GitHub Actions, which is the plan. On my private Windows 10 laptop, scheduling proved to be oddly hazardous with Task Scheduler so I had to deactivate it and run the bot manually every now and then.

If you are interested in the bot code, it is on GitHub.

Consuming IFTTTed Twitter favs

‪I consider my Twitter favourites to be mainly bookmarks although endorsements happen too. Liking comes from Instagram and Facebook but because my social media communities do not really overlap, I sometimes want to send digital respect in Twitter too. I’ve tried to unlearn the classic liking in Twitter and instead reply or retweet, but old habits – you know.‬

‪There’s little point in bookmarking if you cannot find your bookmarks afterwards. The official Twitter archive that I unzip to my private website few times a year, does not include favourites, which is a pity. The archive looks nice out of the box, and there is a search facility. ‬

‪Since late 2013, I have an active IFTTT rule that writes metadata of the favourited tweet to a Google spreadsheet. IFTTT is a nifty concept but oftentimes there are delays and other hickups. ‬

‪My husband and I lunch together several times a week. Instead of emailing, phoning or IM’ing the usual 5 minutes and I’m there bye message, I had this idea of enhanced automation with IFTTT. Whenever I entered the inner circle around our regular meeting point, IFTTT sent me an email announcing Entered the area. This caused a predefined email rule to trigger which forwarded the message to the receiver. Basta! At first this simple digital helper was fun, but as soon as it didn’t deliver, trust started to erode rapidly.

– Where are you? Didn’t you get the message?
– What message?

Sometimes the email came doubled, sometimes it arrived the next day (or never). After few months I had to deactivate the rule.‬

‪With tweets it’s not so critical. In the beginning I checked few times that the spreadsheet do was populated, but then I let it be. From time to time Google (or IFTTT) opens up a new document but fortunately keeps the original file name, just adds a version number.‬

IFTTT rule
IFTTT rule

‪I appreciate Google’s back office services but don’t often use their user interfaces. Besides, my IFTTT’ed archive does not include the tweet status text, so without some preprocessing the archive is useless anyhow. In theory I could get the text by building calls myself to the Twitter API with the Google Query Language, or become a member of the seemingly happy TAGS community. TAGS is a long-lasting and sensible tool by Martin Hawksey. But what would blogging be without the NIH spirit, so here we go.‬

‪Because I have access to a shinyapps.io instance, I made a searchable tweet interface as an R Shiny web app. For that I needed to‬

  • Install googlesheets and twitterR
  • Collect information on my tweet sheets‬, and download all data‬ in them
  • Expand short URLs‬
  • Fetch the Twitter status from the API‬
  • Write a row to the latest sheet to denote where to start next time‬
  • Build the Shiny app‬

The app acts now as a searchable table to my favourite tweets. While at it, I also plotted statistics on timeline.

Here is the app. The R code for gathering all data is in GitHub, likewise the code how I built the app.

Millä Suomi twiittaa?

Vielä kerran suomenruotsalaisen ja suomalaisen tweettailun eroista ja yhtäläisyyksistä.

Twitter-klienttien Top4-järjestys on sama, mutta suomenruotsalaisilla Twitter for iPhone on selvästi suositumpi kuin TweetDeck. Suomenkielisten käyttämien klienttien kirjo taas on paljon suurempi. Testaillaanko siellä enemmän uutta? Jaetaan aineistoa enemmän suoraan muista lähteistä? Vertailuaineistojen koko on sama (n. 12000 tweettiä), mutta aineistot eivät ole täysin vertailukelpoisia keskenään, koska suomalaisia on 20 enemmän. Mitä enemmän ihmisiä, sitä enemmän erilaisia klienttejä, luultavasti.

Suomalaisten Top 5:

  1. Twitter.com
  2. Twitter for iPhone
  3. TweetDeck
  4. Twitter for iPad
  5. Tweet Button (suomenruotsalaisilla 8.)

ja suomenruotsalaisten:

  1. Twitter.com
  2. Twitter for iPhone
  3. TweetDeck
  4. Twitter for iPad
  5. Twitter for Android (suomalaisilla 9.)

Pistekaavioiden ulkoasussa on runsaasti toivomisen varaa, mutta yleiskuva erottunee: suomalaiset (PDF) ja suomenruotsalaiset (PDF). R-koodi klienttitiedon hakuun ja käsittelyyn.

Top twittrare

Här är svenskfinlands bästa twittrare, meddelade Yle X3M idag. Fint! För jämförelsens skull bedrev jag nu lite hembakad text mining också med tweeps av de här 80 personer. Urvalets storlek är detsamma som förr: 200 per person.

AFAIK så finns det ingen officiell Twitter list. Därför kunde jag inte direkt använda den gamla koden utan måste först plocka ut namn ur den ovannämda websidan.

Klustren ser en smula olika ut här än i den finska. Med mina helt amatörmässiga 3D text mining glasögon kan jag urskilja en aning mera variation i ordförråd. Men, det kan helt enkelt bero på hur det svenska språket är uppbyggt (och hur R och dess tm paket manipulerar text), och inte säga någonting alls om våra inhemska, svenskspråkiga Twitter-vänner. Artiga och vänliga tweeps här också.

Två personer tycks vara särskilt flitigt refererade, vilket tyder också på aktivt personligt twittrande: Peppe Öhman (peppepeppepeppe) och Sandra Eriksson (sandraeeriksson).

Keskiraskas louhinta

Eiliseen verrattuna levyn nurkalla on nyt melkein 50 kertaa isompi otos, reilut 20000 tweettiä. Jokaiselta listan jäseneltä 200, hänen omalta aikajanaltaan. GET statuses/user_timeline -API-määrittely lupaa maksimiksi 3200 per nenä, mutta silloin mukana voivat olla (paluuformaatista riippuen) myös ns. natiivit retweettaukset. Annoin ne tulla mukaan.

En viitsinyt koputella tweetkattoa, vielä. Pöytäkoneella oli jo tekemistä tämänkin tekstikorpuksen käsittelyn kanssa. Erityisen hidas oli stopwordien poisto-operaatio.

Käyttäjänimistä on jäljellä enää listan perustaja Niku Hooli, mikä ei yllätä; lista on uusi juttu, ja siitä ja sen perustajasta on tietysti (re)tweetattu paljon. Sitä en sen sijaan ymmärrä, miksi the keikkuu edelleen mukana ja huipulla, vaikka lisäsin sen stopword-listaan. Täytyy joskus kaivella lisää.

Tuloksesta voi varovaisesti piirtää kuvaa yhteisöstä, jonka aktiivisimmat sanankäyttäjät ovat kohteliaita, kilttejä ja ajan hermolla. Sosiaalisen median käytäntöjen ammattilaisia.

Koodinpätkästä puuttuu louhintaosuus. Se on sama kuin ennenkin.

Tekstinlouhintaa SuomiTop100-listalla

Yle uutisoi juhannuksen alla: Tutustu heihin – 100 kiinnostavaa suomalaista Twitterissä. Amatöörilouhijalle tällainen kotimainen Twitter-ryhmä tarjoaa mukavan tutkimuskohteen. Mitä sanoja top-tweettajat käyttävät? Minkähän takia? Missä yhteydessä?

Blogista Heuristic Andrew löytyi selkeä ohje juuri tähän, tekstin louhintaan Twitteristä R:n avulla.

Hankalinta on saada tarpeeksi louhittavaa. Kohtuullisella hikoilulla sain koottua listalta reilut 500 tweettiä. En juuri tunne Twitterin API:a, joten saatoin hyvinkin olla väärän lähteen äärellä. Olisiko statuspäivitykset pitänyt sittenkin kerätä listan sijaan jäsenten omalta aikajanalta? Harkitsin tätä. Idea kuivahti alkuunsa siihen, että en pystynyt poimimaan rajapinnan kautta listan kaikkia jäseniä vaan vain 20. Joistakin foorumikirjoituksista jäi itämään epäilys, että tämä olisi API:n rajoitus. Luultavammin rajat ovat kuitenkin näiden korvien välissä. No, hyvä että materiaalia on edes jonkin verran.

R-koodin seasta löytyy kommentteja työn etenemisestä ja havaintoja tuloksista. Silmiinpistävää on sanaston heterogeenisuus. Esiin nousevat oikeastaan vain Twitter-kommunikoinnin säätimet, sanat joilla osoitetaan mistä oma teksti on peräisin. Aineisto on lisäksi monikielistä, joka vähentää sanojen toistumistiheyttä näin pienessä otoksessa.

Kuten Heuristic Andrew, minäkin tein ryhmittelyanalyysin (cluster). Sen kuvaus on puumainen dendrogrammi. Mitä ylempänä oksa on, sitä enemmän on sen lehvästössä olevien sanojen esiintymisiä. Lähekkäin ja saman punaisen kehyksen sisällä olevat oksat kertovat siitä, että niiden sanoilla on tiettyä yhteyttä toisiinsa. Kehyksiä on tässä seitsemän, kokeilin pienempääkin. Oikeaan laitaan syntyi nyt hieman turhankin iso kaatoluokka.

Dendrogrammin lukeminen on työlästä, koska niskaa pitää kääntää 90 astetta vasempaan. Epäilemättä löytyy tapa, jolla kääntyy graafi, ei pää.

Tämän harjoituksen pohjalta ei pysty sanomaan juuri mitään siitä, mitä, miten ja miksi Suomi twiittaa. Joitakin arvailuja voi esittää. Saattaa olla, että sanonnat (quote) ja lainaukset (via) ovat melko yleisiä. Mahdollisesti jotkut listan jäsenet ovat suositumpia viittauksen kohteita kuin muut. Jälkimmäinen päätelmä on itse asiassa tavallaan louhinnan sivutuote; samalla kun kaikki välimerkit siivottiin pois, lähti myös käyttäjänimen edestä @-merkki, jolloin henkilöä kuvaavasta nimestä tuli ns. tavallinen sana.

Tweettien uusiokäyttöä

Twitter on uutisvälineeni nro 1, lähes. Niinpä suosikkejakin tulee tallennettua usein. Säilön linkkejä kiinnostaviin juttuihin. Ne tuppaavat kuitenkin unohtumaan, koska eivät ole mukana uutissyötteissä, joita taas käyn läpi GReaderilla. Yhteys puuttuu. Twitterin OAuth-autentikointi on pelottanut sen verran, etten ole tarttunut toimeen.

Tällä viikolla satuin katsomaan tallenteen YUIConf 2011 -konferenssista. Siinä YQL engineer Paul Donnelly demoaa, miten YQL-konsolinäkymässä saa rakennettua oikeanlaisen REST-kyselyn Twitteriin siten, että ohjelmointirajapintaan pääsee käsiksi. Pelkällä Yahoo Pipesilla tämä ei onnistu, koska se ei tue OAuthia.

YQL-konsolilla homma on helppo, kunhan vaan on ensin hankkinut tarvittavat avaimet ja tokenit. Ne saa Twitteriltä, rekisteröit vain jonkin sovelluksen.

Videolla YQL-osuus alkaa n. 20 minuutin paikkeilla.

Hae esiin Data tables -osiosta twitter.favorites, klikkaa konsolin response-laatikon oikeaan ylänurkkaan ilmestyvää painiketta – ja saat eteesi lomakkeen, johon avaimet ja tokenit kopioidaan. Itselläni meni tuon painikkeen äkkäämiseen tovi; videosta ei saa ihan selvää, mihin kohtaan Paul sormellaan osoittaa.

Kun testi menee läpi, konsolin alalaidasta voi kopsata valmiin kyselyn. Se Yahoo Pipesin Fetch data -moduuliin, ja siitä sitten RSS-syötteen peruskentät kuntoon ja siirto GReaderiin.