Automatisk Sentimentklassificering av Twitter-inlägg



Relevanta dokument
Maskininlärning med boostrapping. Maskininlärningslabb i Språkteknologi

Klassificering av homonymer Inlämningsuppgift språkteknologi

Att använda Weka för språkteknologiska problem

Vindkraft och ML. - hur kan vindkraft dra nytta avml

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Språkteknologi och Open Source

Genetisk programmering i Othello

Lösningsförslag till tentamen i Språkteknologi 2D1418,

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

Prototypbaserad Inkrementell Diagnos. Anders Holst SICS, Swedish Institute of Computer Science AB

Vad behövs för att skapa en tillståndsrymd?

Taltaggning. Rapport av Daniel Hasselrot , 13 oktober 2003

Teoretisk del. Facit Tentamen TDDC (6)

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

de var svåra att implementera och var väldigt ineffektiva.

Dependensregler - Lathund

Word- sense disambiguation

Projektförslag. Datalingvistisk projektkurs VT mars 2007

Algoritmer och maskininlärning

Statistisk mönsterigenkänning

34% 34% 13.5% 68% 13.5% 2.35% 95% 2.35% 0.15% 99.7% 0.15% -3 SD -2 SD -1 SD M +1 SD +2 SD +3 SD

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Kom igång på Twitter. Viktiga funktioner och tips på hur du får fler följare

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Installera Anaconda Python

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Cheat Sheet Nybörjarguide för Facebook och Instagram

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Sociala medier några tips

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Objektorientering/ Klasser

Föreläsning 11 - Automater, textsökning, tillstånd

2D Potentialen i en nervcell definieras normalt som skillnaden i spänning mellan dess axon och dendrit.

Adobe PHOTOSHOP ELEMENTS 9 FÖRDJUPNING

STA101, Statistik och kvantitativa undersökningar, A 15 p Vårterminen 2017

Introduktion till programmering. Programspråk och paradigmer

Översikt. Experimentell metodik. Mer exakt. Människan är en svart låda. Exempel. Vill visa orsakssamband. Sidan 1

Bild 1. Bild 2. Bild 3. Etrappa. Gävle-Dala E-marknad 2013

STA101, Statistik och kvantitativa undersökningar, A 15 p Vårterminen 2017

Maskinöversättning möjligheter och gränser

Kontrollera att följande punkter är uppfyllda innan rapporten lämnas in: Första sidan är ett försättsblad (laddas ned från kurshemsidan)

Gränssnitt för FakeGranska. Lars Mattsson

Introduktionsmöte Innehåll

Upprepade mätningar och tidsberoende analyser. Stefan Franzén Statistiker Registercentrum Västra Götaland

Att välja statistisk metod

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Laboration i datateknik

Unionens #twitterskola

Hur får jag ut kraft och nytta av POWER?

Algoritmer, datastrukturer och komplexitet

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap

Textforskningen och dess metoder idag

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Sociala medier. Enkätundersökning för Länsförsäkringar

Uppgift 1. Produktmomentkorrelationskoefficienten

Optimering av webbsidor

Detta whitepaper har t ex hashtag #vadmenasmedhashtags eller #hashtagstrategiforetag Så om du delar detta vidare, ange gärna någon av dessa.

Twitter - en del i utbildningen

Sociala medier. Enkätundersökning för Länsförsäkringar

Data, hot eller möjlighet i din verksamhet. Diala Jomaa Högskolan Dalarna

Webbtjänster med API er

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Kort Sammanfattning av Schack MAS

Finns det vissa typer av människor som du inte gillar?

Automatisk analys av kursplaner med hjälp av språkteknologi

Omvärldsbevakning. Sammanfattning av Business Intelligence-kursen. Nyhetsarkiv och källork. Hämta webbnyheter. Modeller över texter

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Starta din försäljning med hjälp av sociala medier

Yrkeshögskolan Novia Utbildningsprogrammet i elektroteknik

Exempel ode45 parametrar Miniprojekt 1 Rapport. Problemlösning. Anastasia Kruchinina. Uppsala Universitet. Januari 2016

Slump och statistik med Scratch. Se video

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

BESKRIVNING AV DISPLAY

Symboler och abstrakta system

Word2Vec. Högkvalitativa vektorrepresentationer av ord tränat på stora mängder data. Innehåll LINKÖPINGS UNIVERSITET. 1. Inledning...

Data mining. Data mining Skillnaden mellan observationella och experimentella data

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät

b) NY KURS (Ange kursnamn, årskurs, önskad läsperiod, schemablocksplacering. Bifoga utkast till kursplan.)

AI utmaningar inom kvalitetssäkring. Henrik Emilsson Teststrateg, Nordic Medtest AB

Programmering II (ID1019) :00-11:00

Variator Automatisk synonymvariering av text

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Algoritmer och problemlösning

Första sidan är ett försättsblad (laddas ned från kurshemsidan) Alla frågor som nns i uppgiftstexten är besvarade

EXAMINATION KVANTITATIV METOD vt-11 (110204)

Manual HSB Webb brf

X-jobbs katalog. Medius R&D November 2011

Målet för D2 är att studenterna ska kunna följande: Dra slumptal från olika sannolikhetsfördelningar med hjälp av SAS

SeniorNet Huddinge Öppet Hus

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Transkript:

[TYPE THE COMPANY NAME] Automatisk Sentimentklassificering av Twitter-inlägg Språkteknologi DD2418 Binxin Su, Christian Davilém 1/8/2013 [Type the abstract of the document here. The abstract is typically a short summary of the contents of the document. Type the abstract of the document here. The abstract is typically a short summary of the contents of the document.]

Contents 1.1 Inledning och bakgrund... 2 2.1 Utgånggspunkt... 2 3.1 Teori... 2 3.2 Val av träningsdata... 2 3.3 Naive Bayes... 3 3.4 Random forest...4 3.5 J48...5 4.1 Implementation... 4 5.1 Resultat och utvärdering... 10 5.2 Testresultat... 10 5.3 Slutsats och diskussion... 11

1.1 Inledning och bakgrund I samband med informationsteknologins och Internets utveckling blir sociala medier som Twitter och Facebook allt mer integrerade i mångas liv. Enorma mängder ny information och nya inlägg tillkommer varje dag med en knappast avtagande hastighet. Från 2009 till mitten på 2011 ökade antalet inlägg på Twitter från 2 till 200 miljoner per dag [1]. Samtidigt ökar Facebook med 500 terabyte användardata dagligen och har nu över 800 miljoner användare [2]. Tar man ett kliv bakåt ser det hela ur ett större perspektiv ger dessa tjänster inte bara inblick i individers liv, tankar och känslor utan även vad den stora massan som helhet tycker, känner och tänker i olika frågor eller vad som är aktuellt just nu runt om i världen, för att nämna några exempel. Datamining handlar om att urvinna ny, värdeful information och mönster ur stora datamängder och är enligt oss ett intressant ämne med många användningsområden. Men för att göra det måste dessa enorma mängder information bearbetas på något sätt och det är inget man gör manuellt. Vi tänkte att man lämpligen kan använda sig av språkteknologiska metoder, varpå idén till arbetet snabbt växte fram - automatisk sentimentklassificering av twitter-inlägg. 2.1 Utgånggspunkt Tanken var att utveckla ett program som skulle låta användaren mata in en filmtitel, varpå det automatisk skulle söka upp och enskilt klassificera ett stort antal twitter-inlägg, så kallade tweets, som innehåller filmtiteln, i kategorierna positiv, negativ eller neutral. Med andra ord var tanken att programmet skulle ge insikt i vad folk tycker om en viss film, dvs. hur fördelningen ser ut mellan positiva, negativa och neutrala inlägg kopplade till filmtiteln som användaren matat in. Tweeten Skyfall was a really good movie! borde alltså klassificeras som positiv medan I almost fell asleep watching Skyfall. borde klassificeras som negativ. Tweets som Going to watch Skyfall at the cinema tonight! eller Is Skyfall a good movie? bör klassificeras som neutrala då de inte innefattar några direkta åsikter eller känsloladdningar kring filmen. Ett annat mål var att programmet skulle automatisera hela processen vilket skulle leda till ett enkelt och användarvänligt program. Det enda användaren skulle behöva göra är att mata in filmtiteln denne är intresserad av och låta programmet göra resten. 3.1 Teori 3.2 Val av träningsdata Klassificeringen av inläggen bygger på övervakad maskininlärning och kräver därför träningsdata. I det här programmet har vi testat tre stycken olika algoritmer. Val av träningsdata är ett allmänt problem som måste addresseras innan man skapar sitt program. Det finns ingen specifik träningsdata som passar alla fall av kategoriseringsproblem men som programmerare

är det viktigt att känna till vilka parametrar som man bör ta hänsyn till vid utformning av programvaran så att inte kända misstag begås. Det första är att bestämma vilken typ av data man ska ta med och vilka man ska utesluta. I vårt fall så får man determinera om man ska använda specifika nyckelord, korta meningar, eller hela tweets för bäst resultat och precision. För det andra så ska träningsdata spegla den procentiella kategoriseringsmängden från verkligheten (Domingos 2012:3), antingen genom att ha ett så stort korpus som möjligt ( då gränsvärdet för datamängden när den går mot oändligheten speglar det verkliga värdet som finns i verkligheten), eller genom att definera ett visst antal procent till kategorierna i träningsdatat som motsvarar det verkliga värdet. För det tredje så är det viktigt att determinerar valet av maskininlärningsalgoritmen, för att kunna få så bra resultat som möjligt med hög precision (Cambridge 2008:stanford.edu), detta p.g.a. Att vissa algoritmer lämpar sig för klassificeringsproblem med nominella variabler som korrilerar (t.ex. J48), vissa algoritmer passar för problem som genererar indata med hög varians och liten korrelation (t.ex. Random Forest), och vissa algoritmer lämpar för problem med partisk (biased) in- och träningsdata (t.ex Naiv Bayes). Man bör också ta hänsyn till komplexiteten hos kategoriseringsproblemet, eftersom tidsprestandan hos de olika algoritmerna varierar. 3.3 Naive Bayes Naive Bayes är en av de enklare uppbyggda algoritmer och har demonstrerat på anmärkningsvärt bra resultat. För bästa resultat så ska algoritmen för attributval vara uppdelat i två sektioner, den ena är filtrering och den andra bygger på maskininlärning. Filtreringsdelen av algoritmen för attributval är till för att utvärdera särskilda mönster i indata utifrån språkteknolgiska regler som syntax, sematik, grammatik, morfologi och pragmatik (G. Webb 2005:1). Algoritmen för Naiv Bayes används för maskininlärningsdelen för att evaluera utvald data, i detta fall de indata som har extraherats från Twitter. Istället för att försöka finna mönster och samband mellan variablerna i indata så analyserar algoritmen varje variabel för sig, oberoende av varandra. Varje variabel får samma vikt och jämförs sedan mot de variabler och attribut som definerats i träningsdatat (Naive Bayes:d.umn.edu/). P.g.a dess simplicitet och att algoritmen körs med O(k*n) i linjär tid (J Webb 2005:10), där k är antal klasser som ska klassificeras ( i vår implementering så används tre klassificeringsklasser), samt presterar bättre än många andra algoritmer, så är det en av de mest populära algoritmer som används. 3.4 Random forest Random forest är en enssamblealgoritm (kombination av olika algoritmer) som består av flera slumpmässigt genererade beslutsträd. Dessa beslutsträd filtreras inte, därmed så slipper man variabelförsluster i indata. Algoritmen bygger på flera beslutsträd som är oberoende av varande och slumpmässigt genererade utan avknoppning vid noderna. För generering av träden väljs slumpmässiga variabler ut från träningsdata och vektorer genereras. Varje vektor genereras oberoende av varandra och distribueras med samma distributionsfunktion till träden. Principen är att när antal träd som genereras går mot sitt gränsvärde så konvergerar feluppskattningsvärdet. Random forest algoritmen är en av de bästa algoritmerna och levererar som Naive Bayes, anmärkningsvärt bra resultat. Enligt utvecklarna av algoritmen så kan den hantera stora mängder av datauppsättning och leverera resultat med hög precision. Nackdelen är dock att algoritmen kräver mer

resurser att beräkna jämfört med Naive Bayes, enligt en rapport från Oxford' så kom man fram till att tidskomplexiteten för algoritmen ökade exponentiellt med O(2^n). En annan nackdel är att det finns stor risk för överinlärning med algoritmen p.g.a. att man ej filtrerar indatavariabler. 3.5 J48 J48 är en algoritm som är uppbyggt av ett enda beslutsträd. Genom att beräkna sannolikheter för variabler i träningsdatat så kan kan algorithmen bygga upp nivåerna av trädet baserat på variabler som ger högst sannolikhet för definerat utfall. Denna algoritm lämpar sig bäst på statistiska exemplar där man har korrelation mellan variablerna i indata och utfall, bäst resultat får man med indata och träningsmängd som innehåller nominell data som kan lätt jämföras; exempelvis om det är varmt och folk äter glass, så är det sommar, om det är kallt och folk använder jackor, så är det vinter. Enligt en studie om lungcancer så presterade J48 algoritmen snäppet bättre än Naive Bayes, detta p.g.a. mängden nominell data som uppges i läkarrapporter. Jämfört med Random forest så använder sig J48 av filter för kontruktion av beslutsträdet, detta görs genom att (Webb, Boughton, & Wang, 2005)variabler som är minst konsistenta försvinner, detta ger fördelar i form av att man negerar risk för överinlärning, men medför även nackdelar i form av variabelförluster i indata. Genom att testa precisionsresultaten för algoritmerna så kom vi fram till att det stämmer bra överrens med teorin och att algoritmen presterade sämst i textbaserad maskininlärning med hög variansav de algoritmer som vi testade. Tidskomplexiteten för algoritmen är ungerfär lika med Naive Bayes algoritmen. 4.1 Implementation Programmet utvecklades i Java och bygger till stor del på biblioteken WEKA och Twitter4J. WEKA är i grund och botten en stor samling algoritmer för maskininlärning och är stommen i kategoriseringsdelen av programmet. Twitter4J är ett inofficiellt bibliotek för Twitters API som möjliggör bland annat sökning på Twitter inifrån ett Java-program. Utvecklingen började med att lära sig dessa bibliotek genom att experimentera med dessa var för sig innan komponenterna sattes ihop till ett färdigt program. Programmet låter användaren mata in valfri filmtitel. Därefter skapas och tränas en klassificerare varpå tweets kopplade till användares inmatnings hämtas, skrivs ut och sparas för att sedan med den tränade klassificeraren klassificeras som pos, neg eller neu. Till sist så skrivs resultatet av körningen ut och användaren kan granska resultatet. Träningsdata togs fram genom att vi manuellt klassificerade tweets och sparade dessa i en.arff-fil som WEKAs klassificerare kan använda. Arff-filen med träningsdata kan se ut så här:

Då många klassificeringsalgoritmer inte kan arbeta med textsträngar konverterar vi träningsdatan till numeriska värden som sedan används för att träna en klassificerare. Klassificeraren skapades och tränades på följande sätt: Nästa centrala del i programmet är att hämtningen av tweets från Twitter. I vårt program gör vi om hämtade tweets till en arff-fil som vi sedan läser in igen likt träningsdatan för att utföra klassificeringen. Vi hämtar och skriver ut tweets så här:

Arff-filen med tweetsen som ska klassificeras skapar vi sedan på följande sätt:

På samma sätt som med träningsdatan läses denna arff-fil in och konverteras till numeriska värden med metoden StringToWordVector() för att sedan klassificeras med den tränade algoritmen.

Till sist skrivs resultatet ut. Den fullständiga koden återfinns som bilaga.

5.1 Resultat och utvärdering 5.2 Testresultat Genom att implementera de algoritmer som beskrivs i teoridelen så kan vi analysera effektiviteten hos programmet och algoritmen, sedan kan detta jämföras med det verkliga resultatet (utifrån vår tolkning av innebörden av meningen). Om man utgår ifrån de teoretiska formuleringar av algoritmerna så ska Random forrest lämpa sig bäst för kategoriseringsuppgiften. Detta p.g.a: Meddellanden (tweets) som publiceras på twitter saknar mönster som lätt kan matchas Dubbelnegation förekommer ofta i språk Ord som ej förekommer ofta (slang och utländska ord) kan ändra själva innebörden Dubbelnegation i språket ändrar själva innebörden av meningen Det skriftliga språket skiljer sig väldig mycket från person till person Många Tweets behandlar länkar som inte ger så mycket information om just filmen Ord som finns med i sökordet, som i detta fall är filmtiteln kan också användas i andra sammanghang som inte behandlar själva filmen Detta skapar ett kategoriseringsproblem med hög komplexitet och varians mellan indata. Genom att analysera hundra styckna tweets med sökordet The Hobbit och implementera de olika algoritmerna så får vi detta resultat: Algoritm Naive Bayes Random forest J48 Positiva 26 60 57 Negativa 36 26 29 Neutrala 38 14 14 % Rätt (Precision) 44% 60% 33% Detta stämmer bra överrens med teorin, och som vi ser så får Random forest nära 60% rätt, nästan dubbelt så bra som en slumpmässig gissning på 1/3. Naive Bayes får 44% rättoch landar på cirka hälften rätt. Algoritmen för J48 landar på 33% och presterar sämst av de tre algoritmerna som testades, detta i enlighet med teorin. Träningsdata som används vid testet genomförs med 134st träningsexempel och innefattar korta, egenkonstruerade exempel blandat med hela tweets. Man får dock ta hänsyn till att detta bara är ett resultat som algoritmen testas på, och träningsmängden är ej tillräckligt utökat för att återspegla verkligheten. Till skillnad från de andra uppgifterna så finns det inte någon definerad korpus för

kategorisering av filmtitlar. Detta leder till att vi som programmerare själv måste definera och tagga alla variabler som finns med i träningsmängden. För att kolla om resultat är bra så jämför vi taggningarna mot vad vi skulle tagga meningarna som. Bästa resultatet erhålls om algoritmen med respektiv träningsdata erhåller guld-standard (vad en linguistiskexpert skulle tagga meningarna som), men eftersom vi inte har tillgång med någon med denna expertis och vi anser att våra bedömningar och taggningar är tillräckligt för att kategorisera tweetsen. Med hjälp av denna jämförelse får vi fram precisionen (antal rätt). 5.3 Slutsats och diskussion Från resultaten ser vi att programmet presterar bättre än rena gissningar vilket endast skulle ge en precision på 33,333%. Random Forest presterar bäst av de tre testade algoritmerna och kan beroende på vilken träningsmängd som användes komma upp i över 70% precision. Genom att ta fram och använda mycket mer träningsdata än vi gjort i det här arbetet skulle resultatet troligen kunna förbättras avsevärt då vi undviker att slumpmässiga egenheter lärs in. En annan variant vore att låta användaren rätta till felaktiga taggningar och på så sätt förbättra programmet ju mer det används. Möjligvis kan det finnas ännu bättre algoritmer som vi inte testat för just den här typen av klassificeringsproblem. Vi tror att den här typen av tjänst kommer bli allt viktigare och vanligare i framtiden. Speciellt för företag som på så sätt automatiskt kan hålla koll på om det är positiva eller negativa saker som skrivs om de i sociala medier. Kanske skulle man med liknande teknik till och med kunna analysera börsen beroende på vad som skrivs om olika företag.

Bibliography Cambridge University Press. (den 7 01 2012). Hämtat från http://nlp.stanford.edu/: http://nlp.stanford.edu/ir-book/html/htmledition/the-bias-variance-tradeoff-1.html den 07 01 2012 Dimitoglou, G., Adams, J., & Carol, J. M. (2012). Comparison of the C4.5 and a NaiveBayes Classifier. Department of Computer Engineering at Hood College, 9. Domingos, P. (2012). A Few Useful Things to Know about Machine Learning. Department of Computer Science and Engineering, 7. Pedersen, T. (den 01 01 2005). University of Minnesota Duluth. Hämtat från www.d.umn.edu/: http://www.d.umn.edu/~padhy005/chapter5.html den 08 01 2012 Webb, G. I., Boughton, J. R., & Wang, Z. (2005). Not So Niave Bayes: Aggregating One-dependence estimators. Springer Science, 23. [23:53:15] Christian: [1] 200 million tweets per day. Tillgänglig från:http://blog.twitter.com/2011/06/200-million-tweets-per-day.html [2] How Big Is Facebook s Data? 2.5 Billion Pieces Of Content And 500+ Terabytes Ingested Every Day million tweets per day. Tillgänglig från: http://techcrunch.com/2012/08/22/how-big-is-facebooks-data- 2-5-billion-pieces-of-content-and-500-terabytes-ingested-every-day/