Bachelor Opleiding Kunstmatige Intelligentie Faculty of Science University of Amsterdam Science Park 904 1098 XH Amsterdam Bachelorscriptie Punten: 9 ECT
Van Tweets Po¨ ezie Maken Kristine Bende 0440930
Versie: 25 juni, 2010
Begeleider: Frank Nack Intelligent Systems Lab Amsterdam Institute for Informatics University of Amsterdam Science Park 107 1098 XG Amsterdam
Bachelorscriptie
Kristine Bende (0440930)
Abstract Online sociale netwerken worden steeds vaker gebruikt. Twitter is hier een voorbeeld van, waarbij mensen korte berichten met hun vrienden en de wereld kunnen delen. Twitter genereert data die nog een keer gebruikt zou kunnen worden. Tevens heeft Twitter een functie waarbij mensen de co¨ ordinaten van hun lokatie kunnen toevoegen aan de berichten die ze online zetten. Dit zorgt ervoor dat er op allerlei locaties over de hele wereld de berichten van Twitter opgevraagd kunnen worden. Deze berichten kunnen informatie over de locatie bevatten. In dit onderzoek worden de berichten van Twitter verzameld per locatie en vervolgens om gezet in een gedicht, zodat de informatie op een bekende manier weer naar mensen terug gecommuniceerd kan worden.
Key words: Online sociale netwerken, Twitter, po¨ezie, gedicht, gedichten generatie
Inhoud 1 Introductie
1
2 Gerelateerd Werk
3
3 Twitter 3.1 Locatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 5 5
4 Gedichten
5
5 Aanpak 5.1 Tweet Database . . 5.2 Gedichtengenerator 5.2.1 Rijm . . . . 5.2.2 Mentrum . 5.2.3 Generatie .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
6 Evaluatie
6 7 8 8 8 9 9
7 Conclusies en Toekomstig Werk 7.1 Locatie . . . . . . . . . . . . . 7.2 Rijm . . . . . . . . . . . . . . . 7.3 Mentrum . . . . . . . . . . . . 7.4 Dataset . . . . . . . . . . . . . 7.5 Speciale Locaties . . . . . . . . A Appendix
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
10 10 10 11 11 11 13
i
Bachelorscriptie
1
Kristine Bende (0440930)
Introductie
Sociale netwerken bestaan al zolang de mens bestaat. Mensen gebruiken sociale netwerken om gebeurtenissen, meningen en idee¨en te delen. Door het World Wild Web is er een nieuwe soort sociaal netwerk ontstaan, de online sociale netwerken. Deze online sociale netwerken springen als paddestoelen uit de grond. Flickr, Facebook, Hyves en Twitter zijn een aantal voorbeelden van online sociale netwerken. Miljoenen mensen zijn lid van deze websites en gebruiken ze ten volle. Volgens de website Wikipedia1 heeft Facebook al meer dan 400.000.000, Hyves meer dan 10.000.000 en Twitter meer dan 75.000.000 geregistreerde leden. Op deze online sociale netwerken kunnen mensen alles met elkaar delen. Foto’s, muziek, spelletjes, gebeurtenissen, meningen en idee¨en. Mensen gaan anders om met online sociale netwerken, dan met sociale netwerken in het dagelijks leven. Ze hebben veel meer vrienden in hun online sociale netwerken. Collega’s, kennissen en zelfs mensen die ze nooit in levende lijven ontmoeten hebben, kunnen vrienden zijn via online sociale netwerken. Dit nieuw medium wordt ook veel gebruikt door journalisten, politici en bedrijven. Journalisten plaatsen korte berichten op de online sociale netwerken met links naar de volledige artikelen en politici gebruiken de online sociale netwerken om hun idee¨en te delen en campagnes te voeren. Er zijn bedrijven die voor marketing redenen met behulp van online sociale netwerken profielen van mensen maken en verkopen deze vervolgens aan andere bedrijven. Werkgevers zoeken steeds vaker via online sociale netwerken naar werknemers. Tevens wordt er via online sociale netwerken gekeken naar wat mensen van bepaalde producten vinden en hoe producten beter gepromoot kunnen worden. Omdat er zoveel verschillende mensen gebruik maken van de online sociale netwerken kan de wetenschap niet achter blijven. Er wordt onderzoek gedaan naar het effect van online sociale netwerken op mensen en de samenleving, hoe mensen met de online sociale netwerken om gaan en waarom deze netwerken zo populair zijn. [4] De mobiele technologie heeft een grote ontwikkeling doorgemaakt in de laatste 10 jaar. De mobiele telefoon werd eerst alleen gebruikt voor bellen, maar al snel kwamen er nieuwe manieren van communicatie bij, zoals sms’en en mms’en. Sinds de ontwikkeling van de smartphone kunnen mensen veel meer met hun mobiele telefoon dan alleen maar bellen. Ze kunnen emails sturen, agenda’s bijhouden, muziek downloaden en luisteren, websites bezoeken, hun online sociale netwerken bijhouden en nog veel meer. Dit is allemaal mogelijk doordat de ontwikkeling binnen de hardware technologie zo snel is gegaan. Alle hardware die in een telefoon zit, zoals de processor, de camera en de Bluetooth-ontvanger, worden steeds kleiner en sneller waardoor de mobiele telefoon ook kleiner wordt en steeds meer kan. Tevens hebben de meeste smartphones tegenwoordig een GPS-ontvanger. Door al deze mogelijkheden worden er steeds meer nieuwe programma’s bedacht, zoals het programma Google Latitude. Dit programma laat mensen op hun telefoon zien waar hun vrienden zich bevinden. 1 http://en.wikipedia.org/wiki/List_of_social_networking_websites/
1
Bachelorscriptie
Kristine Bende (0440930)
Twitter is een online sociaal netwerk waarbij mensen korte berichten (tweets), van maximaal 140 karakters, met hun vrienden en de rest van de wereld kunnen delen. Deze tweets worden online gezet en gelezen, maar daarna wordt er niks meer mee gedaan. Hier is een grote hoeveelheid data dat niet gebruikt wordt, maar wel veel informatie bevat. Door de ontwikkeling van de smartphones kunnen mensen vaker gebruik maken van hun online sociale netwerken en hoeven ze dat niet meer alleen vanaf hun vaste computer thuis te doen. Met de smartphones kunnen ze, wanneer ze onderweg iets meemaken, gelijk een online sociale netwerken bereiken en hun ervaringen delen met de wereld. Twitter heeft de functie dat mensen hun locatie kunnen aangeven wanneer ze aan het twitteren zijn. Twitter genereert een grote verzameling van data. Deze verzameling bevat tweets die mensen op een bepaalde lokatie hebben geschreven. De tekst van de tweet kan direct, of indirect te maken met de omgeving van de persoon die hem geschreven heeft. Deze informatie kan opnieuw gebruikt worden door het in een nieuwe vorm met mensen te delen. Wanneer je op een bepaalde locatie bent, zou je wat over die locatie te weten kunnen komen door naar de tweets van mensen te kijken die op die locatie geschreven zijn. De informatie uit de tweets zou bijvoorbeeld met mensen gedeeld kunnen worden door ze voor te lezen, of er zou ook een andere manier van communicatie gebruikt kunnen worden. Voor dit onderzoek is gekozen om gebruik te maken van gedichten. Gedichten worden al eeuwenlang gebruikt door mensen om te communiceren. Mensen zijn gewend om gedichten te lezen en herkennen een gedicht als communicatiemiddel. Ook past een gedicht goed bij dit onderzoek, omdat tweets uit korte berichten bestaan en gedichten ook uit korte zinnen zijn opgebouwd. De onderzoeksvraag van dit onderzoek is: Kan je van de zinnen uit tweets gedichten genereren met betrekking tot de omgeving? In dit artikel wordt beschreven hoe er van Twitter tweets een gedicht gemaakt kan worden. Hoe moeten de tweets bewerkt worden, zodat ze in versvorm achter elkaar gezet kunnen worden en er een gedicht ontstaat? Bevat dit gedicht vervolgens informatie over de omgeving waar de tweets gemaakt zijn? In paragraaf 2 worden artikelen beschreven die gerelateerd zijn aan het onderwerp van dit artikel. In paragraaf 3 wordt uitgelegd wat het online sociale netwerk Twitter is en hoe het gebruikt is in dit onderzoek. In paragraaf 4 wordt uitgelegd wat een gedicht is en welk soort gedicht gebruikt is in dit onderzoek. In paragraad 5 wordt de aanpak van dit onderzoek besproken. In paragraaf 6 wordt het resultaat van dit onderzoek weergegeven en ge¨evalueerd. Het artikel wordt afgesloten met paragraaf 7 waarin de conclusies van dit onderzoek staat en waarin wordt verteld wat er als toekomstig werk gedaan zou kunnen worden.
2
Bachelorscriptie
2
Kristine Bende (0440930)
Gerelateerd Werk
Nikc Monfort [8] van het Massachusetts Institute of Technology heeft een programma geschreven dat gedichten kan genereren. Dit programma is geschreven in de programmeertaal Perl en bestaat uit 256 karakters. Het programma gebruikt verder niks. De woorden en zinnen in het gedicht worden door het programma gegenereerd, zodat de gedichten alleen door middel van de 256 karakters in de programmeertaal Perl worden gegenereerd en door niks meer of minder. Wat hij met dit onderzoek wilde bereiken was meer inzicht te krijgen over gedichten, natuurlijke taal en effici¨ent programmeren. Fernando et al [1] maken gebruik van nieuwe media om nieuwe gedichten te genereren. Mensen kunnen een sms naar hun systeem sturen en vervolgens haalt het systeem een onderwerp uit de sms. Met dit onderwerp wordt er een nieuw gedicht gegenereerd van zinnen die uit bestaande gedichten komen. De motivatie voor hun onderzoek is, dat ze een aantal esthetische culturele aspecten naar de moderne generatie willen kunnen communiceren. Ze willen de moderne generatie kennis laten maken met de cultuur en tradities van vroeger, maar niet op een saaie en ouderwetse manier. Het doel van hun onderzoek is om traditionele literatuur te combineren met moderne media, zodat de moderne generatie deze met enthousiasme zal ontvangen. Manurung et al [6] hebben onderzoek gedaan of het mogelijk is om gedichten met behulp van computers te genereren. Er is al veel onderzoek gedaan naar het genereren van verhalen, maar naar het genereren van gedichten is nog niet veel onderzoek gedaan en hier kan nog veel geleerd worden. Volgens Manurung is het maken van gedichten een de meest raadselachtige en mysterieuze vormen van artistieke expressie. Het maken van een gedicht is een taak die intelligentie, taalkundige kennis en creativiteit vereist en het is het waard om hiernaar onderzoek te doen. Het idee om informatie over een locatie in de vorm van een gedicht te communiceren naar mensen is niet nieuw. Løvlie [5] heeft al eerder onderzoek gedaan naar het maken van een programma dat toeristen kunnen gebruiken om op een nieuwe manier iets te leren over de stad die ze bezoeken. Het programma van Løvlie maakt gebruik van wiki’s die co¨ordinaten van en informatie over een bepaalde locatie bevatten. Deze wiki’s hebben ze voor meerdere locaties in de stad Oslo gemaakt. Wanneer een toerist door de stad wandelt, kan hij op bepaalde locaties een gedicht opvragen over die locatie. Dit gedocht wordt gegenereerd aan de hand van de informatie die in de wiki’s staan en vervolgens voorgelezen.
3
Bachelorscriptie
3
Kristine Bende (0440930)
Twitter
”Twitter is a real-time information network powered by people all around the world that lets you share and discover whats happening now.” 2 In oktober 2006 kon men voor het eerst gebruik maken van het online sociaal netwerk Twitter. Wanneer een persoon een account heeft aangemaakt kan hij tweets online zetten en deze kunnen vervolgens door mensen gelezen worden. Twitter maakt gebruik van de termen volgen en volgers. Wanneer iemand een persoon volgt, worden de tweets van die persoon op zijn pagina weergegeven. En andersom; wanneer iemand gevolgd wordt door een persoon, dan worden de tweets van hem op de pagina van die persoon weergegeven. Twitteren is een combinatie van webloggen en sms’en. Het fenomeen twitteren, wat betekent dat een persoon een tweet online aan het zetten is, wordt daarom ook wel microbloggen genoemd. Wanneer iemand een tweet plaatst kan hij verschillende karakters gebruiken om zijn tweet duidelijker te maken. Wanneer een tweet aan een specifiek persoon adresseren moet worden, kan het @ karakter plus de naam van de persoon gebruiken worden. Wanneer iemand de tweet van iemand anders leuk of interessant vindt, dan kan hij de tweet retwitteren, opnieuw online zetten, met de RT karakters. Verder kunnen er nog keywoorden worden aangegeven door een # karakter voor het woord te zetten. Ondanks dat Twitter zo een simpel systeem is, is het toch een heel populair online sociaal netwerk. Er zijn al meerdere onderzoeken gedaan naar hoe mensen met hun sociale netwerk op Twitter om gaan en waarom. Huberman et al [2] hebben onderzoek gedaan naar hoe mensen met elkaar om gaan Twitter. Voor dit onderzoek hebben ze de term vriend ge¨ıntroduceerd. Een persoon is iemand zijn vriend wanneer hij minstens twee persoonlijke tweet van hem gehad heeft. Twitter heeft de twee termen volgen en volgers. Een persoon kan iemand volgen en een persoon heeft volgers. Huberman et al kijken onder anderen naar de verhouden van het aantal vrienden dat iemand heeft en het aantal volgers plus het aan mensen die deze persoon volgt. Nu blijkt er een verhouding te zijn tussen het aantal mensen die een bepaald persoon volgt en het aantal tweets dat die persoon online zet. Tevens is er een verhouding tussen het aantal tweets die iemand online zet en het aantal vrienden die iemand heeft. Deze tweede is volgens het onderzoek de motor van Twitter. Java et al[3] hebben onderzoek gedaan naar het onderwerp waar mensen over twitteren en wat voor een soort twitteraar er zijn. Het resultaat van hun onderzoek is dat mensen vooral over hun dagelijkse bezigheden twitteren, maar ook gesprekken houden via Twitter, informatie delen en verslag geven van nieuws. Verder zijn er volgens dit onderzoek drie verschillende soorten twitteraar; de informatie bron, de vriend en de informatie zoeker. 2 http://www.twitter.com/
4
Bachelorscriptie
3.1
Kristine Bende (0440930)
Locatie
Twitter heeft een locatie functie. Met deze functie kunnen mensen bij elke tweet die ze online zetten, aangeven wat hun locatie op dat moment is. Wanneer iemand gebruikt maakt van deze functie kunnen ze aangeven wat voor een informatie er over hun locatie mag worden weergegeven. Ze kunnen er voor kiezen om de exacte co¨ ordinaten te laten weergeven of alleen de naam van de buurt waar ze zijn. Bijvoorbeeld iemand die vanaf het de Dam in Amsterdam twittert kan de co¨ ordinaten, (52.372, 4.892), laten weergeven of alleen ”Amsterdam”. In eerste instantie worden de co¨ordinaten van de computer of de mobiele telefoon naar Twitter gestuurd, maar Twitter kan ze omzetten naar de naam van de buurt. Twitter is op dit moment bezig met het ontwikkelen van een nieuw systeem om de locatie van een tweet door te geven. Dit doen ze in samenwerking met het bedrijf TomTom dat bekend staat om zijn navigatiesystemen voor auto’s. Deze nieuwe functie heet Twitter Places en hiermee kunnen mensen nog meer en nog nauwkeuriger informatie weergeven over de locatie waar ze aan het twitteren zijn.
3.2
Data
Al deze nieuwe technieken en nieuwe media zorgen ervoor dat er steeds meer nieuwe data ontstaat. Deze data kan voor meerdere doeleinden gebruikt worden. In eerste instantie wordt de data gegenereerd omdat mensen met elkaar willen communiceren. Maar de data wordt opgeslagen en er kan nog veel meer mee gedaan worden. Er zijn projecten die bijhouden waar mensen per locatie over twitteren, zoals Trendsmap3 . Tevens wordt de data die Twitter genereert gebruikt door TwitterSentiment4 . Deze website gebruikt de teksten uit tweets om het sentiment van een gegeven woord te bepalen.
4
Gedichten
Gedichten worden al eeuwenlang door mensen gebruikt om informatie door te geven. Het is een makkelijke manier om lange teksten te kunnen onthouden. In verschillende culturen en tradities wordt gebruik gemaakt van gedichten om helden en goden te vereren en als een communicatiemiddel. Maar door de jaren heen, vooral sinds de uitvinding van de boekdrukkunst, zijn gedichten minder gangbaar geworden. Gedichten worden tegenwoordige wel nog gebruikt, maar vooral als een vorm van ontspanning en kunst. Een voorbeeld van een hedendaags gebruik van gedichten is po¨ezie therapie. Er zijn meerdere wetenschappelijke onderzoeken gedaan naar het positieve effect van het lezen en schrijven van po¨ezie tijdens het revalidatieproces van pati¨enten in een ziekenhuis. [7] 3 http://trendsmap.com/ 4 http://twittersentiment.appspot.com/
5
Bachelorscriptie
Kristine Bende (0440930)
Een gedicht is een tekst die in versvorm geschreven wordt. De schrijver van een gedicht kan met onder andere de volgende elementen rekening houden: de klank, een rijmschema, mentrum, ritme, typografie, maar hoeft niet met al deze elementen rekening te houden. Een gedicht hoeft bijvoorbeeld niet per se te rijmen of aan een bepaald mentrum te voldoen. Omdat een gedicht op zoveel verschillende manieren gemaakt kan worden, is het moeilijk om te defini¨eren wat een gedicht precies is. Er bestaan meerdere soorten rijmschema’s. Shakespaere maakte gebruik van het volgende rijmschema: a-b-a-b c-d-c-d e-f-e-f g-g voor zijn sonnetten, maar in Itali¨e worden veel variaties hierop gebruikt. Een andere voor van gedicht is een limerick. Deze maakt gebruik van het rijmschema: a-ab-b-a en het mentrum is belangrijk voor een limerick. De eerste vier zinnen van de limerick zijn kort van stuk en zijn even lang. De vijfde zin van een limerick is langer dan de eerste vier zinnen. Verder wordt er in de eerste zin van een limerick een persoon en een plaats ge¨ıntroduceerd. Voor dit onderzoek is er gekozen om gebruik te maken van een limerick. Hier is voor gekozen, omdat het een kort gedicht is dat bestaat uit vier korte zinnen en ´e´en lange zin. De meeste zinnen in tweets zijn relatief kort, met af een toe een lange zin ertussen. Een limerick past goed bij de data die gebruikt wordt. Er is tijdens dit onderzoek vooral gekeken naar het rijmschema en het mentrum van de limerick en niet met de semantiek van de zinnen. Hier is voor gekozen, omdat de zinnen in een tweet vaak slecht geschreven zijn. Omdat er maar 140 karakters gebruikt mogen worden voor elke tweet, gebruiken mensen afkortingen en smstaal. Dit maakt het onderzoeken naar de semantiek lastig. De semantiek hoeft ook niet te kloppen om van een gedicht een mooi gedicht te maken. Dichters uit het Dada¨ısme maakten onder andere gedichten waarbij de klank van het gedicht belangrijk zijn. Dada¨ısme is een culturele beweging uit het begin van de 20ste eeuw, maar komt nog steeds in kunst en gedichten voor. [9]
5
Aanpak
Het online sociale netwerk Twitter genereert een grote hoeveelheid data in de voor van tweets die als een JSON (JavaScript Object Notation)5 opgeslagen worden. Tweets bevatten meer informatie dan alleen de tekst. Ze bevatten onder andere ook de locatie, het ID van de schrijver en de datum van de tweet. Een smartphone of een computer geeft de co¨ordinaten van hun locatie door wanneer ze gebruikt worden om vanaf te twitteren. Met deze informatie kunnen gedichten van tweets, die we per locatie kunnen opvragen, gegenereerd worden. In eerste instantie worden de tweets van Twitter gedownload en vervolgens taalkundig ontleed en in een database geladen. De database met taalkundige ontlede tweets wordt gesorteerd op rijm, zodat er gedichten van gemaakt kunnen worden. Als laatste kunnen de gedichten gegenereerd worden. In het plaatje hieronder is de datastroom van het programma te zien. 5 http://www.json.org/
6
Bachelorscriptie
5.1
Kristine Bende (0440930)
Tweet Database
Twitter heeft een uitgebreide API. Voor dit onderzoek moeten er tweets van een bepaalde locatie kunnen worden opgevraagd en dit kan met behulp van een url. Wanneer de lengtegraad en de breedtegraad van een locatie bekend zijn, kan binnen een straal van x kilometer de tweets van die locatie gedownload worden. De tweets worden in de vorm van een JSON door Twitter aangeleverd. Deze JSON bevat alle informatie van een tweet; de datum, schrijver, ID van de schrijver, profielfoto van de schrijver, ID van de tweet, de tekst en nog meer. Een JSON van een tweet ziet er als volgt uit:
{ "location":"\u00dcT: 52.360969,4.877328", "profile_image_url":"http://a1.twimg.com/profile_images/ 814155140/skd2_normal.jpg", "created_at":"Thu, 24 Jun 2010 19:22:14 +0000", "from_user":"Schellevis", "metadata":{"result_type":"recent"}, "to_user_id":null, "text":"RT @superjan: is er nou echt niemand van #ing online die me kan geruststellen dat die leuke afrikaanse mannekes uit die spot ook centjes hebben gekregen?", "id":16954200784, "from_user_id":19057519, "geo":null, "iso_language_code":"nl", "source":"
TweetDeck" } Voor dit onderzoek is alleen de locatie en de tekst van de tweet nodig. De locatie is belangrijk omdat de gedichten per locatie gegenereerd gaan worden. Zoals hierboven te zien is, worden de teksten van een tweet niet geschreven om uiteindelijk in een gedicht te kunnen staan. Er staan allerlei leestekens in, die voor de mensen die de tweets op Twitter lezen belangrijk en ter verduidelijking zijn. De tweets zijn zodanig taalkundig ontleed, dat er gedichten van gemaakt 7
Bachelorscriptie
Kristine Bende (0440930)
kunnen worden. In eerste instantie wordt de tekst van een tweet opgedeeld in losse zinnen. De tekst van een tweets kan namelijk uit meerdere zinnen bestaan. Vervolgens wordt de informatie die niet belangrijk is voor een gedicht, zoals de RT en @ tekens, uit de zinnen verwijderd. De schone zinnen uit de tweets worden vervolgens opgeslagen als tweetObjecten in een database.
5.2
Gedichtengenerator
De gedichtengenerator houdt rekening met twee van de drie elementen die belangrijk zijn voor een limerick. Hij houdt rekening met de rijm en het mentrum van het gedicht. 5.2.1
Rijm
Het rijmschema van een limerick is a-a-b-b-a. Om eerst drie en vervolgens twee zinnen te vinden, die op elkaar rijmen, moet de tweet database doorzocht worden en moet er een nieuw rijm database gemaakt worden, waarin de zinnen, die op elkaar rijmen, in lijsten verzameld zijn. Om te zien of twee zinnen op elkaar rijmen, kan een standaard rijmprogramma gebruikt worden. Dit is niet gedaan, omdat de meeste rijmprogramma’s maar voor ´e´en taal gemaakt zijn en de taal correct geschreven moet zijn. De tekst van een tweet wordt meestal niet correct geschreven en kunnen woorden uit verschillende talen bevatten. In de data, die tijdens dit onderzoek in Amsterdam verzameld is, is duidelijk te zien dat er vooral Nederlands gebruikt wordt, maar Engels is zeker geen uitzondering. Tevens wordt er gebruik gemaakt van sms-taal en afkortingen. Omdat er maar maximaal 140 karakters gebruikt mogen worden, moeten de twitteraars het kort houden. Om al de bovengenoemde redenen is er voor gekozen om geen standaard rijmprogramma te gebruiken. Om te kunnen kijken of twee zinnen op elkaar rijmen, is er een nieuw rijmprogramma geschreven, die er rekening mee houdt dat de woorden die vergeleken moeten worden op rijm niet per se offici¨ele woorden uit een taal zijn. Dit programma kijkt of twee zinnen rijmen door naar de lengte van het laatste woord van de zinnen te kijken en in verhouding tot de lengte van de woorden het laatste x aantal karakters van de woorden te vergelijken. Een woord van drie karakters wordt met een anders woord van drie karakters vergeleken, maar alleen de laatste twee karakters moeten gelijk zijn om ze te laten rijmen. Bijvoorbeeld het woord ”man” en het woord ”dan” rijmen op elkaar, omdat de laatste twee karakters hetzelfde zijn. Woorden van vier en vijf karakters worden op de laatste drie karakters vergeleken en woorden van zes of meer karakters worden op de laatste vier karakters vergeleken. Alle zinnen die op elkaar rijmen worden in een lijst opgeslagen en deze lijst wordt vervolgens in een een database van lijsten geladen. Dit is het rijm database. 5.2.2
Mentrum
Nu zinnen die rijmen makkelijk opgezocht kunnen worden, kan naar het volgende element van de limerick gekeken worden, het mentrum. De eerste vier zinnen
8
Bachelorscriptie
Kristine Bende (0440930)
moeten korter zijn dan de laatste zin en ze moeten ongeveer even lang zijn. Om dit voor elkaar te krijgen wordt het rijm database op twee manieren gesorteerd. In eerste instantie worden de lijsten met zinnen die op elkaar rijmen gesorteerd op lengte. De eerste lijst in de rijm database is nu de lijst die de meeste zinnen die op elkaar rijmen bevat en de laatste lijst bevat het minst aantal zinnen die op elkaar rijmen. Vervolgens worden de zinnen in de lijst ook gesorteerd op lengte. De eerste zinnen in de lijst heeft het kleinst aantal woorden en de laatste heeft het grootste aantal woorden. 5.2.3
Generatie
Het genereren van de gedichten is nu vrij simpel. Uit de eerste lijst kunnen de eerste twee zinnen en de laatste zin genomen worden om de eerste twee en de laatste zijn van de limerick te worden. Vervolgens wordt er gekeken naar de lengte van de eerste twee zinnen en wordt er in de resterende lijsten van de rijm database gekeken of er nog twee zinnen zijn die allebei uit dezelfde lijst komen, en dus op elkaar rijmen, en ongeveer even lang zijn als de eerste twee zinnen. Wanneer dit zo is kunnen die twee zinnen als derde en vierde zin van de limerick gebruikt worden en is er een gedicht geboren.
6
Evaluatie
Hier onder zijn drie gedichten te zien die het programma heeft gegenereerd. De laatste woorden van de eerste twee zinnen en de laatste zin rijmen bij ieder gedicht redelijk. Alleen het woord ”aan” rijmt niet op de woorden ”man” en ”van”, maar voldoen wel aan de regels van het programma. Alle drie de woorden bestaan uit drie karakters en de laatste twee karakters zijn in ieder woord hetzelfde. In alle drie de gedichten rijmen de derde en vierde zin goed op elkaar. Tevens is de lengte van de eerste vier zinnen allemaal ongeveer gelijk en de laatste zin is langer dan de eerste vier zinnen. [’Misschien’, ’een’, ’andere’, ’keer’] [’Ohja’, ’ben’, ’er’, ’weer’] [’Nederland’, ’doet’, ”’t”, ’goed’] [’Ik’, ’heb’, ’zoet’, ’bloed’] [’if’, ’have’, ’to’, ’wait’, ’much’, ’longer’, ’might’, ’just’, ’as’, ’well’, ’get’, ’me’, ’beer’] [’hahaha’, ’Sorry’, ’man’] [’bied’, ’nu’, ’je’, ’excuses’, ’aan’] [’Alvast’, ’welterusten’, ’baby’, ’kus’] [’btw’, ’wachten’, ’op’, ’de’, ’bus’] [’la’, ’me’, ’het’, ’voor’, ’je’, ’doen,’, ’ik’, ’deed’, ’het’, ’ook’, ’altijd’, ’zelf’, ’maar’, ’werd’, ’er’, ’moe’, ’van’] 9
Bachelorscriptie
Kristine Bende (0440930)
[’oh’, ’nou’, ’dat’, ’is’, ’niet’, ’zo’, ’lekker’, ’dan’] [’heerday’, ’verander’, ’je’, ’je’, ’TweetName’, ’Blijf’, ’je’, ’zelf’, ’man’] [’Weesp’, ’stond’, ’niet’, ’in’, ’de’, ’top’, ’50’, ’vorig’, ’jaar’] [’ja’, ’die’, ’is’, ’goed,’, ’die’, ’ava’, ’vertelt’, ’veel’, ’over’, ’haar’] [’Stars’, ’en’, ’Spiders’, ’van’, ’staan’, ’in’, ’de’, ’zomer’, ’top’, ’100’, ’van’, ’de’, ’hitkrant’, ’:D’, ’EN’, ’From’, ’the’, ’start’, ’van’] De tweets die gebruikt zijn om de zinnen uit te halen, komen allemaal van de zelfde locatie. Dit kan alleen niet opgemaakt worden uit de gedichten. De gedichten gaan over niks bijzonders. Wanneer er naar de tweets gekeken wordt die tijdens dit onderzoek allemaal op de zelfde lokatie verzameld zijn, kan er eigenlijk niet echt gezien worden dat ze in de buurt van elkaar gemaakt zijn.
7
Conclusies en Toekomstig Werk
De gedichten die gegenereerd zijn door het programma voldoen aan de vooraf gestelde eisen met betrekking tot de limerick versvorm. Er wordt voldaan het het rijmschema a-a-b-b-a en aan het mentrum, waarbij de eerste vier zinnen kort moeten zijn ten opzichte van de vijfde zin en de eerste vier zinnen moeten ongeveer even lang zijn.
7.1
Locatie
Een ander doel van dit onderzoek was dat de inhoud van de gedichten iets zouden kunnen zeggen over de omgeving waar de gedichten gegenereerd worden. Op dit moment kan dit niet. De rede hiervoor is dat, ondanks dat de mogelijkheid er is om vanaf een smartphone te twitteren en de locatie mee te geven, dit nog niet vaak gebeurd. De meeste mensen twitteren nog vanaf hun vaste computer thuis. De locatie functie die Twitter op dit moment gebruikt, is te beperkt om goed gebruikt te worden. Op het moment kunnen alleen de co¨ordinaten van een lokatie of de naam van een buurt weergegeven worden. Zoals al eerde genoemd is in dit artikel is Twitter bezig om samen met onder andere TomTom en nieuwe locatie functie te maken. Twitter Places gaat er voor zorgen de de locaties, die bij tweets weergegeven worden veel nauwkeuriger zullen zijn. Mensen kunnen dan aangeven of ze in een bepaalde stad, buurt of wijk zijn, maar ook of ze in een bepaalde winkel of restaurant zijn. Naar mate deze nieuwe functie beter zal werken en makkelijker toegankelijk is voor mensen zullen ze er ook meer gebruik van maken.
7.2
Rijm
Het programma dat geschreven is voor dit onderzoek kan redelijk goed zien of twee zinnen op elkaar rijmen, maar dit kan nog veel beter. Ondanks dat 10
Bachelorscriptie
Kristine Bende (0440930)
de data zoveel ruis bevat, woorden die niet correct geschreven worden, talen die door elkaar gebruikt worden en het overvloedige gebruik van leestekens, is hier wel wat op te vinden. Woorden rijmen namelijk niet alleen wanneer ze hetzelfde geschreven zijn. In het Nederlands werkt dit wel redelijk, maar in het Engels niet. Neem bijvoorbeeld de twee woorden ”white” en ”light”, deze woorden rijmen wel, maar worden totaal anders geschreven. Om dit probleem op te lossen kan het IPA (International Phonetic Alphabet)6 gebruikt worden. Het IPA is het standaard alfabet voor fonetica. De letters van het IPA staan voor de klanken van menselijke spraak. De Engelse woorden ”light” en ”white” zouden dan op de volgende manier geschreven worden: ”lait” en ”wait”. Op deze manier zouden woorden die niet hetzelfde geschreven worden, maar wel rijmen, toch als een rijmcombinatie geclassificeerd kunnen worden. Veel online woordenboeken geven de IPA vorm van woorden weer. Deze functie van woordenboeken kan dus gebruikt worden voor het opzoeken van de IPA vorm van een woord.
7.3
Mentrum
Het mentrum van de gedichten wordt op dit moment gegenereerd door naar het aantal woorden in een zin te kijken. Een minpunt van deze manier is dat een zin met veel lange worden niet hetzelfde mentrum heeft als een zinnen met evenveel korte worden. Een oplossing hier voor is om niet naar het aantal woorden van een zin te kijken, maar naar het aantal lettergrepen. Ook kan er nog naar de intonatie van de zin en de klemtonen van de woorden gekeken worden, om het mentrum van een gedicht beter te maken.
7.4
Dataset
De dataset die voor dit onderzoek gebruikt is was niet heel groot. Per keer konden er 100 tweets van Twitter gedownload worden. Deze Tweets bevatten samen gemiddeld 130 zinnen. De kans dat er meerdere zinnen op elkaar rijmen is niet zo groot. Een grotere dataset zal zeker een positief effect hebben op de uitkomst van het programma.
7.5
Speciale Locaties
Het programma dat voor dit onderzoek gemaakt is zou op speciale locaties gebruikt kunnen worden. Bijvoorbeeld tijdens een festival, of tijdens grote evenement zoals koninginnedag. Er zouden dan leuke gedichten kunnen ontstaan over die evenementen. 6 http://www.langsci.ucl.ac.uk/ipa/
11
Bachelorscriptie
Kristine Bende (0440930)
References [1] O.N.N. Fernando, A.D. Cheok, N. Ranasinghe, K. Zhu, C. Edirisinghe, and Y.Y. Cao. Poetry mix-up: a poetry generating system for cultural communication. In Proceedings of the International Conference on Advances in Computer Enterntainment Technology, pages 396–399. ACM, 2009. [2] B.A. Huberman, D.M. Romero, and F. Wu. Social networks that matter: Twitter under the microscope. First Monday, 14(1):8, 2009. [3] A. Java, X. Song, T. Finin, and B. Tseng. Why we twitter: understanding microblogging usage and communities. In Proceedings of the 9th WebKDD and 1st SNA-KDD 2007 workshop on Web mining and social network analysis, pages 56–65. ACM, 2007. [4] B. Krishnamurthy, P. Gill, and M. Arlitt. A few chirps about twitter. In Proceedings of the first workshop on Online social networks, pages 19–24. ACM, 2008. [5] A.S. Løvlie. Poetic augmented reality: place-bound literature in locative media. In Proceedings of the 13th International MindTrek Conference: Everyday Life in the Ubiquitous Era, pages 19–28. ACM, 2009. [6] H.M. Manurung, G. Ritchie, and H. Thompson. Towards a computational model of poetry generation. In Proceedings of AISB Symposium on Creative and Cultural Aspects and Applications of AI and Cognitive Science, pages 79–86. Citeseer, 2000. [7] S. McArdle and R. Byrt. Fiction, poetry and mental health: expressive and therapeutic uses of literature. Journal of Psychiatric and Mental Health Nursing, 8:517–524, 2001. [8] N. Montfort. The ppg256 Series of Minimal Poetry Generators. 2009. [9] S. Rettberg. Dada Redux: Elements of Dadaist Practice in Contemporary Electronic Literature. Fibreculture Journal, 11, 2008.
12
Bachelorscriptie
A
Kristine Bende (0440930)
Appendix
’’’ mainTweet2Poem.py Autor: Kristine Bende Data: 15 june 2010 ’’’ import urllib import json from tweetsParser import * from tweetObject import * from createRhymeDB import * from createPoem import * ’’’ Gets the geoCode from the anroid and makes a url to get the tweets from Twitter. Input: geoCode Output: url ’’’ def createUrl(geoCode): url = "http://search.twitter.com/search.json?rpp=100& geocode=52.363565%2C4.91329193%2C25km" return url ’’’ With the url it gets the tweets from Twitter. Input: url Output: tweets in JSON ’’’ def getTweets(url): opener = urllib.FancyURLopener({}) f = opener.open(url) jsonTweets = f.read() return jsonTweets ’’’ The main. Input: geoCode Output: Poem ’’’ 13
Bachelorscriptie
Kristine Bende (0440930)
def main(): geoCode = [] url = createUrl(geoCode) jsonTweet = getTweets(url) tweetsInDict = parseJSON(jsonTweet) tweetDB = parseTweets(tweetsInDict, geoCode) rhymeDB = createRhymeDB(tweetDB) poem = createPoem(rhymeDB) for i in poem: i.show() if __name__ == "__main__": main() ’’’ tweetsParser.py Autor: Kristine Bende Data: 15 june 2010 ’’’ import pickle from jsonParser import * from tweetObject import * ’’’ transforms de tweets from a JSON into a Dict Input: tweets as JSON Output: tweets in a Dict ’’’ def parseJSON(jsonTweets): d = JsDomParser(jsonTweets) data = d.parse() return data ’’’ parse the tweets so they can be used in a poem Input: tweet in an Dict, geoCode Output: tweetDB ’’’ def parseTweets(tweetsInDict, geoCode): tweetDB = [] tweets = tweetsInDict[’results’] for tweet in tweets: 14
Bachelorscriptie
Kristine Bende (0440930)
text = tweet[’text’] date = tweet[’created_at’] listOfSentences = parseText(text) sentiment = getSentiment(listOfSentences) for sentence in listOfSentences: numberWords = len(sentence) if numberWords > 1: lastWord = sentence[-1] soundWord = getSound(lastWord) tweetObject = createTweetObject(sentence, geoCode, date, sentiment, numberWords, lastWord, soundWord) tweetDB = tweetDB + [tweetObject] print len(tweetDB) return tweetDB
’’’ gets the sentences out a tweet Input: tweets Output: list of clean sentences ’’’ def parseText(text): listOfSentences = [] splitAtDot = text.split(’.’) for i in splitAtDot: splitAtExcl = i.split(’!’) for j in splitAtExcl: splitAtQuest = j.split(’?’) for k in splitAtQuest: splitAtSpace = k.split() cleanSentence = removeStuff(splitAtSpace) if cleanSentence != []: listOfSentences = listOfSentences + [cleanSentence] return listOfSentences
’’’ removes all the unwanted characters from the sentences. Input: sentence Output: cleansentence ’’’ def removeStuff(sentence): cleanSentence = [] for word in sentence: 15
Bachelorscriptie
Kristine Bende (0440930)
if len(word) != 1 and word != ’ ’ and word != ’’ and word != ’RT’ and word != ’-’ and word.find(’\u’) < 0 and word.find(’/’) < 0 and word.find(’@’) < 0 and word.find(’&’) < 0 and word.find(’=’) < 0: cleanSentence = cleanSentence + [word] return cleanSentence
’’’ returns the sentiment of an tweet. Input: tweet Output: sentiment (1 for positive and 0 voor negative) ’’’ def getSentiment(text): sentiment = 0 for sentence in text: for word in sentence: if word.find(’:)’) > 0 or word.find(’:-)’) > 0 or word.find(’:P’) > 0 or word.find(’:-P’) > 0 or word.find(’:D’) > 0 or word.find(’:-D’) > 0 or word.find(’;)’) > 0 or word.find(’;-)’) > 0: sentiment = 1 elif word.find(’:(’) > 0 or word.find(’:-(’) > 0 or word.find(’:S’) > 0 or word.find(’:-S’) > 0: entiment = -1 else: sentiment = 0 return sentiment ’’’ returns the IPA transcribtion of a word Input: word Output: IPA word ’’’ def getSound(word): return 0 ’’’ tweetObject.py Autor: Kristine Bende Data: 15 june 2010 16
Bachelorscriptie
Kristine Bende (0440930)
’’’ class createTweetObject(object): ’’’ creates tweetObject Input: self, sentence_in, geoCode_in, date_in, sentiment_in, numberWords_in, lastWord_in, soundWord_in Output: tweetObject ’’’ def __init__(self, sentence_in, geoCode_in, date_in, sentiment_in, numberWords_in, lastWord_in, soundWord_in): self.sentence = sentence_in self.geoCode = geoCode_in self.date = date_in self.sentiment = sentiment_in self.numberWords = numberWords_in self.lastWord = lastWord_in self.soundWord = soundWord_in ’’’ show function for a tweetObject
# # # # # #
Input: tweetOpject Output: ’’’ def show(self): print self.sentence print self.geoCode print self.date print self.numberWords print self.sentiment print self.lastWord print self.soundWord
’’’ createRhymeDB Autor: Kristine Bende Data: 15 june 2010 ’’’ ’’’ 17
Bachelorscriptie
Kristine Bende (0440930)
creates a rhymeDB Input: tweetDB Output: rhymeDB ’’’ def createRhymeDB(tweetDB): rhymeDB = [] for i in tweetDB: rhymeList = [i] count = 1 for j in tweetDB[count:]: if i != j and compareWords(i.lastWord, j.lastWord): rhymeList = rhymeList + [j] tweetDB.remove(j) count = count + 1 if len(rhymeList) > 1: sortRhymeList = sorted(rhymeList, key=lambda tweet: tweet.numberWords) rhymeDB = rhymeDB + [sortRhymeList] sortRhymeDB = sorted(rhymeDB, reverse=True) print len(sortRhymeDB) for k in sortRhymeDB: for l in k: l.show() print ’===========’ return sortRhymeDB ’’’ checks if two words rhyme Input: two words Output: true or false ’’’ def compareWords(one, two): lenOne = len(one) lenTwo = len(two) if one == two: return 0 elif lenOne == 3 and lenTwo == 3 and one[-2:] == two[-2:]: return 1 elif (lenOne == 4 or lenOne == 5) and (lenTwo == 4 or lenTwo == 5) and one[-3:] == two[-3:]: return 1 elif lenOne < 5 and lenTwo < 5 and one[-4:] == two[-4:]: return 1 18
Bachelorscriptie
Kristine Bende (0440930)
else: return 0 ’’’ create poem Autor: Kristine Bende Data: 15 june 2010 ’’’ ’’’ create poem Input: rhymeDB Output: poem ’’’ def createPoem(rhymeDB): a1 = rhymeDB[0][0] a2 = rhymeDB[0][0] a3 = rhymeDB[0][-1] b1 = rhymeDB[0][0] b2 = rhymeDB[0][0] for i in rhymeDB: if len(i) > 3: a1 = i[0] a2 = i[1] a3 = i[-1] else: b1 = i[0] b2 = i[1] poem = [a1]+[a2]+[b1]+[b2]+[a3] return poem
19