twitediens

13
LATVIJAS UNIVERSITĀTES DATORIKAS FAKULTĀTE WEB SCIENCE PROJEKTS TwitĒdiens Cilvēku domas par ēdienu Twitter sociālajā tīklā Jānis Bečs jb08161 Matīss Rikters mr08089

Upload: matiss-rikters

Post on 17-Oct-2014

33 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: TwitEdiens

LATVIJAS UNIVERSITĀTESDATORIKAS FAKULTĀTE

WEB SCIENCE PROJEKTS

TwitĒdiens Cilvēku domas par ēdienu Twitter sociālajā tīklā

Jānis Bečs jb08161Matīss Rikters mr08089

Rīga, 2011

Page 2: TwitEdiens

1. Projekta mērķisMūsdienu tehnoloģijām un interneta videi attīstoties, arvien vairāk lietotāju internetu ikdienā izmanto ne vien stacionārajos un portatīvajos datoros, bet arī citās mobilās un stacionārās ierīcēs – telefonos, planšetēs, pat televizoros. Līdz ar to vairums arī šajos aparātos lieto sociālos tīklus, kā, piemēram, Twitter, Facebook, Draugiem.lv, paziņodami draugiem par savām aktivitātēm visos iespējamajos veidos. Lai gan tas nav ļoti patīkami citiem lietotājiem, tomēr liela daļa sociālo tīklu, it īpaši Twitter, lietotāji raksta pat visdažādākos sīkumus par sevi, kā, piemēram, raksta, ko apēduši kārtējā ēdienreizē. Šādu sīkumu ir daudz, bet tā kā ēšana ir neatņemama dzīves sastāvdaļa tā vieno īpaši daudz Twitter lietotāju.Projekta mērķis ir noskaidrot, kādu uzturu ikdienā lieto Twitter lietotāji, lai pēc tam varētu salīdzināt ar jau esošo statistiku, kā arī novērtēt pieprasījumu pēc produktiem. Galvenie izpētes virzieni ir ēdiena veidi, tā veselīgums, pieprasījums pēc noteikta ēdiena un ēdienu piedāvājums jeb reklāmas.Šobrīd Latvijas interneta vidē nav neviena līdzīga projekta. No ārzemju lapām nedaudz līdzīga ideja ir TweetWhatYouEat [Avots 3], bet tur uzsvars tiek likts uz kaloriju aprēķināšanu.

Page 3: TwitEdiens

Twitter datu vākšanaTvīti tiek vākti pēc 350 atslēgvārdiem [Pielikums 1] Kā atslēgas vārdi galvenokārt tika izvēlēti latviešu valodā biežāk lietotie darbības vārdi, kas raksturo ēšanas procesu. Tie nav saistīti ar konkrētu ēdienu un aptver plašāku meklējamo tvītu kopu nekā, ja tvītu vākšanā tiktu izmantots ierobežots skaits ar atslēgas vārdiem, kas ir ēdienu nosaukumi.Ziņojumu vākšana notiek ar php programmu, izmantojot Twitter Streaming API metodi ‘statuses/filter’ [Avots 5].

Par katru ziņojumu tiek ievākti un datubāzē ierakstīti sekojoši dati: ziņojuma ID; atrašanās vietas nosaukums, ja tāds ir; ziņojuma saturs; ziņojuma autora lietotājvārds; ziņojuma datums un laiks; ziņojuma noskaņojums.

Tas nav gluži viss, ko piedāvā Twitter par katru ziņojumu, bet konkrēti šie dati šķita noderīgākie tālākai analīzei

Pievienojot ziņojumu datubāzei, tam arī tiek noteikta sentimenta klasifikācija – pozitīvs, negatīvs vai neitrāls – ar uClassify [Avots 4] teksta autora noskaņojuma klasifikatoru. Klasifikators tika izveidots un uztrenēts speciāli šim projektam.

Ievākšanas brīdī katrs ziņojums tiek sadalīts pa vārdiem un katrs vārds tiek pārbaudīts, vai tāds vārds jau atrodas vārdu datubāzē un vai tas ir nomarķēts kā ēdiens / dzēriens. Ja tāds vārds datubāzē ir atrodams un tas ir marķēts kā ēdiens / dzēriens, tad ievāktais vārds arī tiek pievienots datubāzei un arī nomarķēts kā ēdiens / dzēriens. Ja tāds vārds ir datubāzē, bet nav marķēts kā ēdiens / dzēriens, tas netiek pievienots. Ja šāda vārda vēl nav datubāzē, tad tas tiek pievienots rindā uz manuālu marķēšanu. Vārdi tiek marķēti ar roku, līdz ko parādās divi vienādi vēl nenomarķēti vārdi. Projekta sākumā tika manuāli nomarķēti apmēram 15000 vārdu, kas aizņēma vairākas stundas, bet kopš tā laika (trīs mēnešos) jauni parādījušies vien ap desmit jaunu vārdu. Šādā veidā marķējot, ja vārds ir ēdiens vai dzēriens, tam tiek pievienota gan vārda nominatīva pamatforma, gan vārda angliskais tulkojums, kas nepieciešams saistīto datu, kā, piemēram, ēdiena apraksta angļu valodā, atrašanai, gan uztura piramīdas grupa, kurai pieskaitāms konkrētais vārds.

Ēdieni tika dalīti sešās grupās, kas ir veselīgas uzturas piramīdas sastāvdaļas:

Graudaugu produkti, maize, biezputras, makaroni (6); Dārzeņi (5); Augļi, ogas (4); Piena produkti (3); Gaļa, olas, zivis (2); Tauki, saldumi (1).

Dzērieni tika dalīti divās grupās: alkoholiskie un bezalkoholiskie.

Par katru vārdu datubāzē tiek ierakstīti sekojoši dati:

Page 4: TwitEdiens

vārds kāds tas parādās ziņojumā; vārds nominatīva pamatformā, ja tas ir ēdiens / dzēriens; vārds angļu valodā, ja tas ir ēdiens / dzēriens; grupa uztura piramīdā, ja tas ir ēdiens / dzēriens; ziņojuma ID, kurā vārds ticis pieminēts, ja tas ir ēdiens / dzēriens; vai vārds ir, vai nav ēdiens / dzēriens.

Piemērs:Vārds zupuNominatīvs zupaVārds angļu valodā SoupGrupa 6 (Graudaugu produkti, maize,

biezputras, makaroni)Ziņojuma ID 122284398044390000Ir ēdiens? 1 (ir)

Tabula 1

Atsevišķā datubāzes tabulā tiek uzglabātas arī visas vietas, no kurām lietotāji rakstījuši savus Twitter ziņojumus. Informācija par vietu tiek ņemta no Twitter ziņojuma, kur tā ir dota teksta formā – pilsētas nosaukums, novada nosaukums, reizēm pat konkrētas ielas nosaukums. Ar Google Maps API [Avots 2] palīdzību no šāda teksta tiek noskaidrotas konkrētās vietas koordinātas. Šie dati nepieciešami, lai tīmekļa lietojumprogrammai atvieglotu darbu un tai katru reizi nebūtu jāuzmeklē katras vietas koordinātas. Tā tiek papildināta katru reizi, kad tiek atvērta ‘Twitter gardēžu karte’ – lapas sadaļa, kurā atzīmētas visas vietas - tīmekļa lietojumprogrammā un starp ziņojumiem ir parādījusies kāda jauna vieta, par kuru vēl nav datu šajā tabulā.Par katru vietu datubāzē tiek ierakstīti sekojoši dati:

vietas nosaukums; garums (longitude); platums (latitude).

2. Datu apstrādeKatrs tvīts tiek saglabāts datu bāzē gan vesels, gan sadalīts pa vārdiem. Pirms vārdi no katra tvīta tiek saglabāti datubāzē, no tiem tiek atmestas visas interneta lapu adreses, kas sākas ar http vai www, visi skaitļi, visas pieturzīmes un jaunas rindas simboli. Katrs tvīts tiek padots speciāli uztrenētam uClassify klasifikatoram [Avots 4], kurš to iedala pozitīvā, neitrālā vai negatīvā kategorijā. Šis iedalījums tālāk tiek izmantots, apkopojot ar ēdieniem saistītos tvītus un dalot tos pēc noskaņojuma. [Attēls 3] Sākotnēji ar roku tika nomarķēti apmēram 750 tvīti un padoti klasifikatoram apmācībai. Pēc tam tika automātiski saklasificēti arī pārējie tvīti. Tomēr šis klasifikators atgriež pārāk lielu negatīvi noskaņoto tvītu skaitu, kas rada aizdomas, ka tas darbojas diezgan neprecīzi. Manuāli marķējot, no 750 tvītiem kā negatīvie tika atzīmēti ļoti maz – apmēram 15 - 20. Tātad tiem būtu jābūt mazāk par 5%, bet šobrīd ir ap 12% negatīvo. Ļoti iespējams, ka turpmākā projekta gaitā tvītu noskaņojuma analizēšana tiks pārtraukta un esošie dati – izmesti, jo šī funkcionalitāte tika iekļauta galvenokārt tāpēc, lai varētu izmēģināt kā darbojas saistīto datu attēlošana.

Page 5: TwitEdiens

3. RezultātiŠobrīd tvīti nepārtraukti tiek vākti un glabāti datubāzē. Projektam ir publiska interneta lapa1, kurā iespējams apskatīt ievākto informāciju no dažādiem rakursiem :

autentificēties ar savu Twitter kontu un redzēt savu draugu tvītus par ēšanu; apskatīt, par kādiem ēdieniem tiek tvītots; apskatīt, kurās nedēļas dienās un kuros laika posmos par ēšanu tvīto

visbiežāk; apskatīt, no kurām valstīm, pilsētām tvīto un cik daudz; apskatīt aktīvāko ēdāju-tvītotāju topu; kā arī kopējo statistiku par visu projektu.

Radītais pirmkods, kā arī datubāze un dokumentācija ir brīvi pieejama2.

Pa divarpus mēnešiem (kopš 06.10.2011) savākti 60956 tvīti. 38370 (63%) no tiem ir pieminēts kāds ēdiens vai dzēriens. Tos rakstījuši 17028 dažādi lietotāji, no kuriem 2091 (12%) bija norādījuši savu atrašanās vietu. No tvītiem, kuros bija norādīta atrašanās vieta, 1882 ir rakstīti Latvijā, 203 – ārzemēs. No Latvijas tvītiem visvairāk nāk tieši no Rīgas – 1131 (60%). [Attēls 4]

Visā projekta gaitā ikvienam bija pieejama interneta lapa, lai gan tā netika īpaši reklamēta. To laika posmā no 7. novembra 2011 līdz 16. janvārim 2012 apskatīja 705 apmeklētāji. Aktīvākās dienas bija 14. novembris, 30. novembris un 9. novembris ar 65, 48 un 46 apmeklējumiem. Visvairāk apskatītā lapas sadaļa bija ‘Statistika’ ar 1267 skatījumiem. 32% no šiem apmeklētājiem nāca no Twitter, 20% - pa tiešo ievadot adresi, 17% no draugiem.lv un pārējie no citām vietām.

Visaktīvākais tvītotājs par ēšanu ir ar 88 tvītiem par ēšanas tēmām. Par ēšanu visvairāk tiek tvītots svētdienās un visaktīvākās stundas ir no septiņiem līdz deviņiem vakarā, kad cilvēki parasti ietur vakariņas vai arī ir sarūpējuši sev kādu gardumu, ko izbauda pēc saspringtās dienas. Šis laiks nav nemaz tik vēlu, pieņemot, ka cilvēki gulēt iet ap vienpadsmitiem. Veselīgi ir pēdējo dienas maltīti ieturēt ne vēlāk kā 2 stundas pirms gulētiešanas [Avots 6]. Šajā vēlā rudens, agrās ziemas laikā populārākie produkti bija mandarīni, šokolāde, tēja, saldējums, pica, zupa un kafija. Projekta sākumposmā un stabili starp populārākajiem ēdieniem dominēja šokolāde, bet, tuvojoties Ziemassvētkiem, Latvijas Twitter lietotāji ātri topa augšgalā izvirzīja daudz veselīgākos mandarīnus.

Lai gan tvītos pieminētie ēdieni pilnībā neatspoguļo visus patiesos cilvēku ēšanas paradumus, tomēr interesanti bija salīdzināt ievāktos datus no Twitter ar veselīga uztura piramīdu [Attēls 1]. Kā jau iepriekš tika spriests, tvītotāji nav tie veselīgākie ēdāji un ļoti daudz savā uzturā izmanto taukus un saldumus. Kā arī bija skaidrs, ka Twitter uztura piramīda izskatīsies pavisam atšķirīga no veselīga uztura piramīdas. Protams, nevar zināt, vai tiešām tie, kas tvīto par ēšanu, piemin pilnīgi visu apēsto. Ļoti iespējams, ka patiesie dati par ēšanu būtu citādāki. Tomēr pārsteidza fakts, ka

1 http://lielakeda.lv/TwitEdiens2 https://github.com/saifer/TwitEdiens

Page 6: TwitEdiens

piena un gaļas produktu patēriņš abās piramīdās iznāca diezgan līdzīgs. [Attēls 2] [Attēls 2]

Veselīga uztura piramīda [Avots 1]:

Attēls 3 - Veselīga uztura piramīda

Twitter uztura piramīda, kas tika izveidota, samainot procentu vērtības veselīga uztura piramīdā pret datiem, ko ieguvām no savāktajiem tvītiem:

Attēls 4 - Twitter uztura piramīda

3.1. Grafiki

Page 7: TwitEdiens

Tvītu noskaņojums

Attēls 5 - Tvītu noskaņojums

Tvītu statistika

Attēls 6 - Tvītu statistika

Dzērieni

Page 8: TwitEdiens

Attēls 7 - Dzērienu statistika

4. Turpmākie plāniIr plānots šo projektu attīstīt tālāk, pievienojot tam papildus funkcionalitāti, piemēram, iespēju ievākt tvītus arī no aizsargātajiem (protected) lietotājiem, kuri paši būs autentificējušies TwitĒdiens lapā, kā arī pievienot podziņu, ar kuru lietotāji varēs ietvītot savu statistiku, kas reizē arī palīdzēs šo servisu reklamēt un izplatīt tālāk. Vēl ir paredzēts uzlabot darbību ar saistītajiem datiem un arī ar noskaņojuma noteikšanu.

Page 9: TwitEdiens

Pielikums 1Tvītu filtrēšanā izmantotie atslēgvārdi

garšotgaršojugaršošugaršogaršojigaršosigaršojagaršosgaršosietgaršojotgaršošotgaršotujāgaršonogaršotnogaršojunogaršošunogaršonogaršojinogaršosinogaršojanogaršosnogaršojamnogaršojāmnogaršosimnogaršojatnogaršojātnogaršosietnogaršojotnogaršošotnogaršotupagaršotpagaršojupagaršošupagaršopagaršoji

pagaršosipagaršojapagaršospagaršojampagaršojāmpagaršosimpagaršojatpagaršojātpagaršosietpagaršojotpagaršošotpagaršotuēduēdīšuēdēdiēdīsiēdaēdīsēdamēdāmēdīsimēdatēdātēdīsietēdotēdīšotēstujāēdapēstapēduapēdīšuapēdapēdiapēdīsi

apēdaapēdīsapēdamapēdāmapēdīsimapēdatapēdātapēdīsietapēdotapēdīšotapēstuatēstatēduatēdīšuatēdiatēdīsiatēdaatēdīsatēdamatēdāmatēdīsimatēdatatēdātatēdīsietatēdatēdotatēdīšotatēstuieēstieēduieēdīšuieēdiieēdīsiieēdaieēdīs

ieēdamieēdāmieēdīsimieēdatieēdātieēdīsietieēdieēdotieēdīšotieēstuizēstizēduizēdīšuizēdizēdiizēdīsiizēdaizēdīsizēdamizēdāmizēdīsimizēdatizēdātizēdīsietizēdotizēdīšotizēstuneēstneēduneēdīšuneēdneēdineēdīsineēdaneēdīs

neēdamneēdāmneēdīsimneēdatneēdātneēdīsietneēdotneēdīšotneēstunoēstnoēdunoēdīšunoēdinoēdīsinoēdanoēdīsnoēdamnoēdāmnoēdīsimnoēdatnoēdātnoēdīsietnoēdnoēdotnoēdīšotnoēstupaēstpaēdupaēdīšupaēdpaēdipaēdīsipaēdapaēdīspaēdam

paēdāmpaēdīsimpaēdatpaēdātpaēdīsietpaēdotpaēdīšotpaēstuuzēstuzēduuzēdīšuuzēduzēdiuzēdīsiuzēdauzēdīsuzēdamuzēdāmuzēdīsimuzēdatuzēdātuzēdīsietuzēdotuzēdīšotuzēstusaēstiessaēdossaēdīšossaēdiessaēdīsiessaēdassaēdāssaēdamiessaēdāmiessaēdīsimies

saēdatiessaēdātiessaēdīsietiessaēdotiessaēstosjāsaēdaspārēstiespārēdospārēdīšospārēdiespārēdaspārēdāspārēdīsiespārēdamiespārēdāmiespārēdīsimiespārēdatiespārēdātiespārēdīsietiespārēdotiespārēstospieēstiespieēdospieēdīšospieēdiespieēdīsiespieēdaspieēdāspieēdamiespieēdāmiespieēdīsimiespieēdatiespieēdātiespieēdīsietiespieēdoties

pieēstosbrokastotbrokastojubrokastošubrokastobrokastojibrokastosibrokastojabrokastosbrokastojambrokastojāmbrokastosimbrokastojatbrokastojātbrokastosietbrokastojotbrokastošotbrokastotujābrokastopusdienotpusdienojupusdienošupusdienopusdienojipusdienosipusdienojapusdienospusdienojampusdienojāmpusdienosimpusdienojatpusdienojātpusdienosietpusdienojietpusdienojot

pusdienošotpusdienotujāpusdienovakariņotvakariņojuvakariņošuvakariņovakariņojivakariņosivakariņojavakariņosvakariņojamvakariņojāmvakariņosimvakariņojatvakariņojātvakariņosietvakariņojietvakariņojotvakariņošotvakariņotuiekožuiekodīšuiekodīsiiekožiekodaiekodīsiekožamiekodāmiekodīsimiekožatiekodātiekodīsietiekožotiekodīšot

iekostujāiekožuzkožuuzkoduuzkodīšuuzkodīsiuzkožuzkodīsuzkožamuzkodāmuzkodīsimuzkožatuzkodātuzkodīsietmaltītegaršīgsgaršīgakārumsņamņammaapetīteēdiensbrokastispusdienasvakariņasbrokastīspusdienāsvakariņāslaunagāēstēdisēdusinotiesājunotiesāšunotiesāt

Page 10: TwitEdiens

Izmantoto avotu saraksts1. Veselīga uztura ieteikumi [tiešsaiste]. Pieejams:

http://www.apollo.lv/portal/ipasums/articles/154909/galery/

2. Google Maps API [tiešsaiste]. Pieejams: http://code.google.com/apis/maps/index.html

3. TweetWhatYouEat [tiešsaiste]. Pieejams: http://www.tweetwhatyoueat.com/

4. uClassify teksta autora noskaņojuma klasifikators [tiešsaiste]. Pieejams: http://uclassify.com/browse/saifer/emo

5. Streaming API Methods [tiešsaiste]. Pieejams: https://dev.twitter.com/docs/streaming-api/methods

6. 7 jautājumi par veselīgu uzturu [tiešsaiste]. Pieejams: www.mansmazais.lv/article/227290/