Oresti Theodoridis commited on
Commit
2090c39
2 Parent(s): 86c23bc ab201fe

Merge pull request #50 from Demea9000/45-sätt-in-databasen-i-pipelinen

Browse files
.idea/csv-plugin.xml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="CsvFileAttributes">
4
+ <option name="attributeMap">
5
+ <map>
6
+ <entry key="/data/twitterdata.csv">
7
+ <value>
8
+ <Attribute>
9
+ <option name="separator" value="," />
10
+ </Attribute>
11
+ </value>
12
+ </entry>
13
+ </map>
14
+ </option>
15
+ </component>
16
+ </project>
.idea/politweet.iml CHANGED
@@ -3,8 +3,9 @@
3
  <component name="NewModuleRootManager">
4
  <content url="file://$MODULE_DIR$">
5
  <excludeFolder url="file://$MODULE_DIR$/politweet-environment" />
 
6
  </content>
7
- <orderEntry type="inheritedJdk" />
8
  <orderEntry type="sourceFolder" forTests="false" />
9
  </component>
10
  <component name="PyNamespacePackagesService">
 
3
  <component name="NewModuleRootManager">
4
  <content url="file://$MODULE_DIR$">
5
  <excludeFolder url="file://$MODULE_DIR$/politweet-environment" />
6
+ <excludeFolder url="file://$MODULE_DIR$/env" />
7
  </content>
8
+ <orderEntry type="jdk" jdkName="Python 3.9 (politweet)" jdkType="Python SDK" />
9
  <orderEntry type="sourceFolder" forTests="false" />
10
  </component>
11
  <component name="PyNamespacePackagesService">
data/twitterdata.csv CHANGED
@@ -1,19 +1,39 @@
1
- id,tweet,date,user_id,username,urls,nlikes,nreplies,nretweets
2
- 1208816689720283138,God jul https://t.co/AC6HzzxJI1,2019-12-22 19:28:52,95972673,jimmieakesson,[],3090,247,270
3
- 1206517009451814915, https://t.co/SPIXCl1y7O,2019-12-16 11:10:45,95972673,jimmieakesson,[],1554,69,97
4
- 1204392974718767105,Hej @Jonas_Gardell Läste din artikel i @Expressen vad sägs om att ses och snacka istället för att prata förbi varandra i media? Jag tror samtalet och jag är övertygad om att jag kan lära mig något av dig. Kanske är det ömsesidigt?,2019-12-10 14:30:36,95972673,jimmieakesson,[],5207,299,634
5
- 1202639801205317633,"""Sverigedemokraterna räds inte ett extraval om misstroendeförklaringen mot arbetsmarknadsminister Eva Nordmark (S) landar i att hela regeringen avgår. Vi är redo för nyval klart, säger SD-ledaren Jimmie Åkesson."" https://t.co/RxRfwKVruK",2019-12-05 18:24:07,95972673,jimmieakesson,['https://www.sydsvenskan.se/2019-12-05/sd-redo-for-extraval?redirected=1'],1209,51,144
6
- 1202231839424950272,Intervju med Jimmie Åkesson med anledning av dagens möte med Ulf Kristersson. https://t.co/AOGYLUEwxC,2019-12-04 15:23:01,95972673,jimmieakesson,['https://www.svt.se/nyheter/inrikes/det-har-diskuterade-akesson-och-kristersson'],380,13,43
7
- 1202200851189846022,"Mötet var givande, konstruktivt och bådar gott inför framtida samarbeten i ett nytt politiskt landskap. / Jimmie",2019-12-04 13:19:53,95972673,jimmieakesson,[],626,13,22
8
- 1202200819354996738,"Men också hur den framtida invandringspolitiken och energipolitiken bör utformas. Även om Sverigedemokraterna och Moderaterna är två olika partier, finns det också många beröringspunkter i en rad olika sakfrågor.",2019-12-04 13:19:45,95972673,jimmieakesson,[],455,5,23
9
- 1202199793688293376,Idag besökte jag och min gruppledare Ulf Kristerssons arbetsrum för ett första direkt möte med Ulf Kristersson och Moderaternas gruppledare. mötet diskuterades bland annat hur vi ska komma tillrätta med den kriminaliteten i vårt land som regeringen helt har misslyckats med. https://t.co/APmt4WSrUK,2019-12-04 13:15:41,95972673,jimmieakesson,[],1801,91,148
10
- 1202185719965458432,"Konstruktiv dag. Här i möte med vår nya gruppledare i riksdagen, @VingeHenrik . Stay tuned... #svpol https://t.co/LMYmKIS3ya",2019-12-04 12:19:45,95972673,jimmieakesson,[],370,14,28
11
- 1199417558291533824,Ännu ett institut bekräftar det nya läget 💪 https://t.co/9WuWsdRWGt,2019-11-26 21:00:04,95972673,jimmieakesson,[],1586,74,128
12
- 1198144200283475968,Kommuner som går knäna. Skjutningar och sprängningar var och varannan dag. En eskalerande otrygghet som steg för steg bryter ned vårt land. Har Sverige problem? Ja. Är S-regeringen med sina stödpartier kapabla att lösa dessa problem? Nej. https://t.co/7WWRwbs1Ds,2019-11-23 08:40:12,95972673,jimmieakesson,['https://www.aftonbladet.se/debatt/a/kJPRKj/massinvandringen-har-slagit-sonder-nationen'],1937,122,292
13
- 1197790554609852416,Utvecklingen S vs SD under 2000-talet. Det närmar sig... 💪 https://t.co/MNV5oGJktQ,2019-11-22 09:14:56,95972673,jimmieakesson,[],1243,43,120
14
- 1197481419561472000,"Vi vill avsätta alla ministrar som går att avsätta i den här regeringen, det är mycket sannolikt att vi hakar en sådan eventuellt misstroendeomröstning. https://t.co/PHj6XipNGH",2019-11-21 12:46:33,95972673,jimmieakesson,['https://www.di.se/nyheter/sd-hakar-pa-v-om-af-hotar-avsatta-s-ministern/'],1419,86,128
15
- 1197467328105062400,Många intervjuer inför partiets Landsdagar. Några återstår innan jag rullar mot Örebro. https://t.co/hXYMhcVDAG,2019-11-21 11:50:33,95972673,jimmieakesson,[],360,16,16
16
- 1195769542456356864,Expressen inför nästa veckas Landsdagar med SD. https://t.co/vsQj18Xwaw,2019-11-16 19:24:09,95972673,jimmieakesson,[],349,21,24
17
- 1194553636946350080,Morgan Johansson måste avgå. #pldebatt #svpol https://t.co/QsVAhqvaou,2019-11-13 10:52:35,95972673,jimmieakesson,[],1713,47,203
18
- 1194528503284346881,Idag begär jag att riksdagen avsätter justitieminister Morgan Johansson. #svpol https://t.co/tL703x5eYQ,2019-11-13 09:12:43,95972673,jimmieakesson,[],1844,80,140
19
- 1194495733858222080,Åtta år senare och Morgan kämpar vidare... 🦸‍♂️ https://t.co/iCWrEwhgHP,2019-11-13 07:02:30,95972673,jimmieakesson,[],1769,87,271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ id,tweet,date,user_id,username,urls,nlikes,nreplies,nretweets,topic,sentiment
2
+ 1222901543231344640,Poddintervju med Samtidigt-gänget! Finns där poddar finns osv. ☕ https://t.co/wC7UriRrWE,2020-01-30 16:17:02,95972673,jimmieakesson,[],103,4,8, podcasts,praise
3
+ 1222426025877016576,"""Prata inte om medkänsla. Ni valde att prioritera 9 000 vuxna afghanska män som saknar skäl att stanna i Sverige"" https://t.co/Lqlg7mA1eL",2020-01-29 08:47:30,95972673,jimmieakesson,['https://nyheteridag.se/jimmie-akesson-till-morgan-johansson-om-inte-du-har-upptackt-det-sa-ar-sverige-fullt/'],1784,69,227,politics,criticism
4
+ 1222133730757824514,Sett till det läge Sverige befinner sig i där vi knappt klarar av att upprätthålla en välfungerande välfärd för våra egna medborgare menar vi att det är direkt oansvarigt att vilja öka mottagandet av kvotflyktingar. https://t.co/JelLbX3Oe8,2020-01-28 13:26:02,95972673,jimmieakesson,['https://www.svd.se/lat-kommunerna-besluta-nivan-for-kvotflyktingar'],1505,81,222,politics,opposition
5
+ 1221790690692272129,"Idag är det förintelsens minnesdag och 75 år sedan befrielsen av Auschwitz. Låt oss hedra offren och aldrig glömma de fasor som antisemitismen har orsakat. Vi får heller aldrig acceptera den antisemitism som finns idag, oavsett extremistisk utgångspunkt.",2020-01-27 14:42:55,95972673,jimmieakesson,[],3088,171,268,holocaust memorial day,remembrance
6
+ 1220308369778651136,Det är varje oppositionspartis ansvar att minimera skadorna som regeringen Löfven åsamkar Sverige och detta är ett viktigt agerande i den riktningen. Välfärden är en absolut central del av det svenska folkhemsbygget och måste prioriteras.,2020-01-23 12:32:42,95972673,jimmieakesson,[],1709,61,182,politics,opposition
7
+ 1217404594726281216, https://t.co/AdqzHLMHoW,2020-01-15 12:14:08,95972673,jimmieakesson,[],732,19,97, twitter,questions
8
+ 1217371452044955648,#pldebatt https://t.co/FQ6pTT0rPk,2020-01-15 10:02:26,95972673,jimmieakesson,[],548,5,76, politics,statements
9
+ 1217354299145170944,Klockan 09:00 startar årets första partiledardebatt i riksdagen. Se den lämplig kanal! https://t.co/PzrlR3Vvyd,2020-01-15 08:54:16,95972673,jimmieakesson,[],588,17,32,politics,statements
10
+ 1216971561497964550,"Stefan Löfven och @socialdemokrat är återigen Miljöpartiets marionetter när det kommer till viktiga politiska frågor. Detta trots att två av tre svenskar vill behålla kärnkraften, inklusive Socialdemokraternas egna väljare. https://t.co/L4p8yHgykl",2020-01-14 07:33:25,95972673,jimmieakesson,['https://www.dn.se/debatt/sd-leder-oppositionen-i-ett-forsok-att-radda-ringhals/'],1138,27,158,politics,criticism
11
+ 1215952175463108608,SD har förberett för nyval sedan den nygamla Löfvenregeringen tillträdde för ett år sedan. Vi står redo!,2020-01-11 12:02:44,95972673,jimmieakesson,[],856,42,71,politics,support
12
+ 1215952136258887680,Menar Vänstern allvar eller ska detta betraktas som mer av substanslöst vapenskrammel? Uppenbart är att väljarna inte är till freds med nuvarande situation. Regeringen såväl som Januariavtalet saknar stöd. Det vore orimligt att låta läget vara oförändrat i ytterligare tre år. https://t.co/4Jy5gxufrb,2020-01-11 12:02:35,95972673,jimmieakesson,[],1200,74,147,politics,criticism
13
+ 1231333740561018880,Sverige är fantastiskt 😎 https://t.co/117HPmHRkt,2020-02-22 22:43:35,95972673,jimmieakesson,[],1588,117,250, travel,praise
14
+ 1231132345593409536,"Vi ser nu hur attackerna mot unga avlöser varandra. 2019 anmäldes cirka 2 500 personrån mot barn, det är mer än dubbelt många jämfört med 2016. Inte minst den etniskt grundade dimensionen har förstärkts i takt med aty invandringen ökat. https://t.co/SqHFBQX4Pu",2020-02-22 09:23:19,95972673,jimmieakesson,['https://www.svd.se/sd-vi-satter-brottsoffer-framfor-brottslingar'],1171,65,161,politics,criticism
15
+ 1230439550327181312,"Deras 120 mandat räcker inte för att ""köra över regeringen"", och i ärlighetens namn är dessa förslag knappast att betrakta som en överkörning. Vi kommer såklart att diskutera hur vi ska ställa oss till detta initiativ, men jag hade faktiskt hoppats på mycket mer.",2020-02-20 11:30:23,95972673,jimmieakesson,[],308,15,21,politics,skepticism
16
+ 1230439492122816513,"M, KD och V har kommit överens om arbetskraftsinvandringen. Förslagen verkar rimliga, men tyvärr lyckas man inte komma överens om skarpa förslag som stoppar fortsatt invandring av okvalificerad arbetskraft. https://t.co/oXqxhQDP5R",2020-02-20 11:30:10,95972673,jimmieakesson,[],449,22,48,politics,disagreement
17
+ 1229716232405995521,Slutsats: Splittringspolitiken och framväxten av parallella samhällen måste stoppas. Omedelbart!,2020-02-18 11:36:11,95972673,jimmieakesson,[],584,20,51,politics,opposition
18
+ 1229716187124305921,"Det är främst ""gamla"" integrationsproblem som ligger bakom den gängkriminalitet vi ser idag. Givet det faktum att den ansvarslösa invandringspolitiken fortsatt och integrationen knappast fungerat bättre, är det direkt obehagligt att tänka på hur läget ser ut om sisådär 20 år.",2020-02-18 11:36:00,95972673,jimmieakesson,[],617,24,54,politics,skepticism
19
+ 1229716101547905024,"Inte alls förvånande, men Expressens granskning av polisens så kallade fokuslista i Operation Rimfrost ger starka skäl till oro. Den indikerar nämligen att vi ännu bara är i begynnelsen av en otäck utveckling som några av oss varnat för under lång tid.",2020-02-18 11:35:40,95972673,jimmieakesson,[],413,12,45,politics,criticism
20
+ 1229716001740271616,"En alternativ rubrik skulle kunna vara: ""Samtliga utpekade gängledare har utländsk bakgrund"". Det är nämligen vad artikeln säger. https://t.co/wqYRemT5k5",2020-02-18 11:35:16,95972673,jimmieakesson,[],1976,91,304,politics,criticism
21
+ 1228024052637405192,"Det här är faktiskt sanslöst. Episkt uselt. ""Inga skattesänkningar"" är Löfvens ständiga universallösning. På allt. 🤬 https://t.co/OgKINkrCax",2020-02-13 19:32:04,95972673,jimmieakesson,[],1276,54,146,politics,criticism
22
+ 1227959140779282432,"Ponera att situationen vore den omvända, att en ensam invandrarpojke rånas, förnedras och kallas exempelvis ""jävla s***tskalle"" av ett gäng svenska grabbar. Skulle Per Bolund svara på samma sätt? Tillåt mig tvivla...",2020-02-13 15:14:08,95972673,jimmieakesson,[],1009,27,116,politics,skepticism
23
+ 1227959059476774914,"Såg nyss MP-ministern Per Bolund slå knut på sig själv under riksdagens frågestund. Så kallade förnedringsrån mot unga svenskar med uppenbart rasistiska förtecken förklaras med att ""brott är brott"" och ""svenskhet har ingen betydelse"".",2020-02-13 15:13:48,95972673,jimmieakesson,[],699,23,91,politics,criticism
24
+ 1227958851858837504,Varför är det så svårt för vänsterliberalerna att erkänna förekomsten av rasism mot svenskar? Det är ett oerhört svek. https://t.co/B79W7RT0Qa,2020-02-13 15:12:59,95972673,jimmieakesson,[],1530,50,191,politics,criticism
25
+ 1227902037834244096,"Upp till bevis nu @shekarabi Vari ligger rättvisan i att satsa hundratals miljarder på reformer länkade till migration, medan våra egna äldre och sjuka tvingas leva på marginalen?  https://t.co/iQC96rU8TE",2020-02-13 11:27:13,95972673,jimmieakesson,['https://www.expressen.se/debatt/sag-sanningen-om-invandringsvolymen/'],1566,84,258,politics,criticism
26
+ 1227837103410745344,"I vanlig ordning hamnar vi högst upp på pallen. 🥇SD (2009), 🥈M (2013), 🥉S (2020)",2020-02-13 07:09:12,95972673,jimmieakesson,[],632,17,60,sports,praise
27
+ 1227837048322695170,Igår gick regeringen ut och meddelade att man vill införa möjlighet till utegångsförbud för unga som begår brott. Moderaterna kritiserar — med all rätt —regeringens saktfärdighet och påpekar att man minsann föreslog detta redan 2013. https://t.co/QVyMLuLQ2V,2020-02-13 07:08:59,95972673,jimmieakesson,[],1232,45,218,politics,criticism
28
+ 1224284340458336257,"Invandring av högkvalificerad arbetskraft är bra för Sverige, men vi behöver inte fler städare och diskplockare från andra länder.",2020-02-03 11:51:47,95972673,jimmieakesson,[],372,26,28,politics,opinion
29
+ 1224284254596673538,Även med de föreslagna förändringarna kommer lågkvalificerad arbetskraft att ha lätt att komma hit. Lönekravet måste sättas betydligt högre och vi behöver utreda en återgång till behovsprövning i någon form.,2020-02-03 11:51:27,95972673,jimmieakesson,[],266,7,21,politics,skepticism
30
+ 1224284156961722368,"Försörjningskrav för anhöriga, högre lönekrav och stopp för s k kompetensutvisningar är förslag vi driver sedan tidigare. Men, tyvärr når Moderaterna inte i mål med detta paket.",2020-02-03 11:51:03,95972673,jimmieakesson,[],105,2,10,politics,criticism
31
+ 1224284075600551937,LÅNGT FRÅN MÅLET 🤔 Moderaterna presenterade nu på förmiddagen nya förslag kring reglerna för arbetskraftsinvandring. Spontant känns flera av förslagen som steg i rätt riktning. https://t.co/XTCz8DoJPC,2020-02-03 11:50:44,95972673,jimmieakesson,[],431,12,42,politics,agreement
32
+ 1236718442461437952,"Men — det här är min poäng — det är inte primärt fysisk plats som avses i min argumentation. Det begriper de flesta. Vad som har betydelse är kapacitet i vård, skola och omsorg, tillgång på bostäder, segregation, trygghet osv. Sverige ÄR fullt! ❤",2020-03-08 19:20:28,95972673,jimmieakesson,[],1822,107,205,politics,statements
33
+ 1236718344587350022,Vi är dessutom många som minns när Fredrik Reinfeldt flög över Sverige och insåg att vi har hur mycket plats som helst. Det är inte svårt att dra sig till minnes ett antal mindre lyckade försök att placera asylanter i mer glesbebyggda områden i exempelvis Norrlands inland.,2020-03-08 19:20:05,95972673,jimmieakesson,[],767,17,52,politics,criticism
34
+ 1236718248126828544,"På söndagsmorgonen kunde vi i TV4 höra Leif GW Persson analysera mitt påstående om att Sverige är fullt. — Möjligtvis vittnar det om att han aldrig varit i Norrlands inland, sa han. Även andra debattörer har de senaste dagarna hänvisat till att vårt land minsann är glesbefolkat. https://t.co/PzLoJj5ynl",2020-03-08 19:19:42,95972673,jimmieakesson,[],1308,105,184,politics,criticism
35
+ 1235982905555460096, https://t.co/rC6SUN8z87,2020-03-06 18:37:42,95972673,jimmieakesson,['https://youtu.be/LdTsXouoxZw'],288,49,42, twitter,questions
36
+ 1235978076175183872,Meddelande från Turkiet https://t.co/qqxfnngNe1,2020-03-06 18:18:31,95972673,jimmieakesson,[],1543,226,163, news,statements
37
+ 1235890699855413249,Den havererade migrationspolitiken och det efterföljande flyktingkaoset 2015 har rivit upp djupa sår i det svenska samhället. https://t.co/PUYWwUT60b,2020-03-06 12:31:19,95972673,jimmieakesson,['https://www.svd.se/akesson-prioritera-nu-det-svenska-folket'],1515,120,210,politics,criticism
38
+ 1235187530720587776,"""Jag tycker att det är viktigt att få en egen bild av hur det ser ut. Vi har gått runt här och pratat med många människor som frågar var de är på väg. Det är väldigt många som vill till norra Europa och man nämner Sverige och Tyskland primärt."" https://t.co/PHBDyJQrCY",2020-03-04 13:57:10,95972673,jimmieakesson,['https://www.expressen.se/nyheter/jimmie-akesson-delar-ut-flygblad-kom-inte-till-oss/'],2326,293,302,refugees,statements
39
+ 1235153072873230338, https://t.co/v3c7r7iHbL,2020-03-04 11:40:15,95972673,jimmieakesson,[],2551,183,266, twitter,questions
textclassifier/TextClassifier.py CHANGED
@@ -5,6 +5,7 @@ from twitterscraper import TwitterScraper
5
  from datetime import date
6
  import os
7
  from dotenv import find_dotenv, load_dotenv
 
8
 
9
  # Set one directory up into ROOT_PATH
10
  ROOT_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -42,6 +43,8 @@ class TextClassifier:
42
  self.user_name = user_name
43
  self.ts = TwitterScraper.TwitterScraper(from_date, to_date, num_tweets)
44
  self.df = self.ts.scrape_by_user(user_name)
 
 
45
  # self.api_key = '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'
46
  openai.api_key = OPENAI_AUTHTOKEN
47
 
@@ -51,7 +54,6 @@ class TextClassifier:
51
 
52
  # save the dataframe to a csv file
53
 
54
-
55
  @staticmethod
56
  def cleanup_sentiment_results(classification_unclean):
57
  """
@@ -214,12 +216,13 @@ class TextClassifier:
214
  """
215
  Classifies the topics of a user's tweets.
216
  """
217
- df_topic = self.df
218
  df_topic['topic'] = df_topic['tweet'].apply(self.classify_topic)
219
- return df_topic
 
220
 
221
  @staticmethod
222
- def cleanup_topic_results(prediction_dict, text):
223
  new_item = text.replace("\n", " ")
224
  new_item = new_item.replace(" ", " ")
225
  return new_item
@@ -262,6 +265,41 @@ class TextClassifier:
262
  self.df = df
263
  self.df_to_csv(filename)
264
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  def __repr__(self):
266
  """
267
  Gives a string that describes which user is classified
@@ -269,20 +307,7 @@ class TextClassifier:
269
  """
270
  return "Classifier for user: " + self.user_name + " with model: " + self.model_name + "."
271
 
 
272
  if __name__ == "__main__":
273
- tc = TextClassifier(from_date="2022-01-01", to_date="2022-05-31", user_name='jimmieakesson', num_tweets=20)
274
- tc.remove_duplicates_from_csv()
275
- # import pandas as pd
276
- # from datetime import datetime
277
- # import os
278
- # # show all columns
279
- # pd.set_option('display.max_columns', None)
280
- #
281
- # tc = TextClassifier(from_date="2019-01-01", to_date="2019-05-31", user_name='jimmieakesson', num_tweets=20)
282
- # tc.classify_sentiment_of_tweets()
283
- # # df = tc.analyze_sentiment_of_tweets()
284
- # # print(df)
285
- # df = tc.classify_topics_of_tweets()
286
- # print(df)
287
- # # save to csv in a folder under politweet with timestamp in name
288
- # df.to_csv(f"{datetime.now().strftime('%Y-%m-%d %H-%M-%S')}_tweets.csv")
 
5
  from datetime import date
6
  import os
7
  from dotenv import find_dotenv, load_dotenv
8
+ import pandas as pd
9
 
10
  # Set one directory up into ROOT_PATH
11
  ROOT_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
43
  self.user_name = user_name
44
  self.ts = TwitterScraper.TwitterScraper(from_date, to_date, num_tweets)
45
  self.df = self.ts.scrape_by_user(user_name)
46
+ # Make id as type int64
47
+ self.df['id'] = self.df['id'].copy().astype(int)
48
  # self.api_key = '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'
49
  openai.api_key = OPENAI_AUTHTOKEN
50
 
 
54
 
55
  # save the dataframe to a csv file
56
 
 
57
  @staticmethod
58
  def cleanup_sentiment_results(classification_unclean):
59
  """
 
216
  """
217
  Classifies the topics of a user's tweets.
218
  """
219
+ df_topic = self.df.copy()
220
  df_topic['topic'] = df_topic['tweet'].apply(self.classify_topic)
221
+ self.df = df_topic
222
+ return self.df
223
 
224
  @staticmethod
225
+ def cleanup_topic_results(text):
226
  new_item = text.replace("\n", " ")
227
  new_item = new_item.replace(" ", " ")
228
  return new_item
 
265
  self.df = df
266
  self.df_to_csv(filename)
267
 
268
+ def get_tweet_by_id(self, id, filename="{}/data/twitterdata.csv".format(ROOT_PATH)):
269
+ """
270
+ Returns tweet by id.
271
+ :param id: id of tweet
272
+ :return: tweet
273
+ """
274
+
275
+ def run_main_pipeline(self, filename="{}/data/twitterdata.csv".format(ROOT_PATH)):
276
+ """
277
+ Classifies the topics/sentiments of a user's tweets.
278
+ #We presume that all tweets inside the twitterdata.csv file are already classified.
279
+ :return: Pandas dataframe
280
+ """
281
+ # temp_df = pd.DataFrame(
282
+ # columns=['id', 'tweet', 'date', 'user_id', 'username', 'urls', 'nlikes', 'nreplies', 'nretweets'])
283
+ if os.path.exists(filename):
284
+ already_classified_df = pd.read_csv(filename)
285
+ # Create a temporary df where values from already_classified_df that are not it self.df are stored
286
+ temp_df = self.df[self.df['id'].isin(already_classified_df['id'])]
287
+ # Remove rows from self.df that are not in already_classified_df
288
+ self.df = self.df[~self.df['id'].isin(already_classified_df['id'])]
289
+ else:
290
+ print("No csv file found. Continuing without removing already classified tweets.")
291
+
292
+ self.df = self.classify_topics_of_tweets()
293
+ self.df = self.classify_sentiment_of_tweets()
294
+ # self.df = self.analyze_sentiment_of_tweets()
295
+
296
+ self.df_to_csv(filename)
297
+ # Concatenate temp_df and self.df
298
+ self.df = pd.concat([temp_df, self.df], ignore_index=True)
299
+ print("Done.")
300
+ return 0
301
+
302
+
303
  def __repr__(self):
304
  """
305
  Gives a string that describes which user is classified
 
307
  """
308
  return "Classifier for user: " + self.user_name + " with model: " + self.model_name + "."
309
 
310
+
311
  if __name__ == "__main__":
312
+ tc = TextClassifier(from_date="2020-02-10", to_date="2020-03-10", user_name='jimmieakesson', num_tweets=200)
313
+ tc.run_main_pipeline()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
twitterscraper/jimmieakesson.csv DELETED
@@ -1,33 +0,0 @@
1
- ,id,tweet,date,user_id,username,urls,nlikes,nreplies,nretweets
2
- 0,1546801285021814784,"Sverigedemokraterna kommer även fortsättningsvis att vara den tyngsta rösten för kraftigt sänkta priser på både bränsle och el. Alla vi miljontals människor som bor utanför storstädernas kollektivtrafik och cykelbanor måste kunna leva. Sänk bränslepriserna, nu! https://t.co/OiPb6WdaZG",2022-07-12 12:18:59,95972673,jimmieakesson,[],1074,63,103
3
- 1,1544748873767424001,Fruktansvärt att nås av beskedet att kvinnan som attackerades i Visby har avlidit. Mina tankar finns hos hennes familj ikväll.,2022-07-06 20:23:26,95972673,jimmieakesson,[],3482,178,143
4
- 2,1538948369611210764,"@annieloof Nej, jag håller med. Tänk mer som Mathias Andersson (SD). https://t.co/gSqQDz5N8z",2022-06-20 20:14:18,95972673,jimmieakesson,[],1511,89,115
5
- 3,1537770920621879297,"Man kan ha synpunkter på en sådan lösning, men den är naturligtvis att föredra framför frigående våldsverkare som fortsätter misshandla sina offer i väntan på fängelse.",2022-06-17 14:15:32,95972673,jimmieakesson,[],694,17,41
6
- 4,1537770809225273344,Är det ont om plats på anstalterna så får man sänka standarden rejält för att få rum med fler interner per kvadratmeter.,2022-06-17 14:15:05,95972673,jimmieakesson,[],812,26,57
7
- 5,1537770713368735744,"Döms man för brott, särskilt våldsbrott, ska man vara inlåst från det att domen faller tills straffet är avtjänat. Allt annat är vansinne.",2022-06-17 14:14:43,95972673,jimmieakesson,[],1015,26,85
8
- 6,1537770657823576066,"Platsbrist? Jaha, vad spelar det för roll? Det gör mig förbannad och bestört att lösningen på problemet med överfulla fängelser verkar vara att dömda våldsbrottslingar får röra sig fritt i samhället istället för att sitta inlåsta. https://t.co/QDi9rM3kMC",2022-06-17 14:14:29,95972673,jimmieakesson,['https://sverigesradio.se/artikel/domda-kvinnomisshandlare-kan-fortsatta-valdet-mot-samma-kvinna-innan-fangelset'],1157,86,132
9
- 7,1534230353094885383,"Det är ytterst beklagligt att Magdalena Andersson saboterar Sveriges Natoansökan genom att kohandla med en marxistisk vilde som inte bryr sig ett smack om Sverige, utan istället fullt ut företräder utländska intressen. Svekfullt, maktfullkomligt och ansvarslöst.",2022-06-07 19:46:35,95972673,jimmieakesson,[],6118,544,556
10
- 8,1533881878553538560,"Glöm att Sverigedemokraterna kommer att lova regeringen frikort att missköta sig för att de gör sig av med en, förvisso exceptionellt usel, minister. https://t.co/3yVuUQU42o",2022-06-06 20:41:52,95972673,jimmieakesson,['https://live.aftonbladet.se/supernytt/news/m-och-l-foeljer-kds-erbjudande-till-magdalena-andersson.CqhNSVhf9'],1079,97,77
11
- 9,1532625870824808448,"Det är bra att väljarna får denna tydliga varudeklaration, en röst på Centern är en röst på Socialdemokraterna.",2022-06-03 09:30:57,95972673,jimmieakesson,[],1255,57,96
12
- 10,1532625804223516672,Centern ❤️ Sossarna Ännu en gång är det Annie Lööf som kommer till Morgan Johanssons räddning. För vilken gång i ordningen vet jag inte. Det är tydligt att Centern blivit det vänsterparti som krafter inom partiet arbetat för att det ska bli.,2022-06-03 09:30:41,95972673,jimmieakesson,[],2512,211,188
13
- 11,1532341074127163392,"Därför valde Sverigedemokraterna idag att, under dagens frågestund i kammaren, väcka frågan om misstroende gentemot Morgan Johansson. Sverige förtjänar bättre.",2022-06-02 14:39:16,95972673,jimmieakesson,[],790,32,34
14
- 12,1532340946456694785,"Morgan Johanssons misslyckanden kan inte få fortgå en enda dag mer än nödvändigt och det är vår inställning att oavsett valets utfall, så bör han förtidspensioneras som Sveriges justitie- och inrikesminister.",2022-06-02 14:38:45,95972673,jimmieakesson,[],659,9,40
15
- 13,1532340845042622465,"De enda som kan vara nöjda med regeringens arbete är de kriminella, de som mördar, skadar och hotar. De hoppas just nu på att även kommande mandatperiod ska innebära ytterligare fyra år med Socialdemokratisk saft- och bullepolitik.",2022-06-02 14:38:21,95972673,jimmieakesson,[],435,15,35
16
- 14,1532340768681209858,Tusentals föräldrar och syskon har förlorat någon närstående och Morgan Johanssons misslyckanden är förmodligen ett av de mest tragiska kapitlen i svensk historia.,2022-06-02 14:38:03,95972673,jimmieakesson,[],406,7,21
17
- 15,1532340666751242240,Morgan Johansson måste avgå som minister. Otryggheten biter sig fast och gängkriminaliteten är allt annat än knäckt. Antalet skjutningar ökar och sätter skräck i varje del av vårt land. Sverige har förvandlats till ett gangsterland.,2022-06-02 14:37:39,95972673,jimmieakesson,[],3064,172,231
18
- 16,1523345947165483008, https://t.co/64aJSb1G58,2022-05-08 18:55:50,95972673,jimmieakesson,['https://www.dn.se/debatt/sa-vill-m-sd-kd-och-l-ge-alla-pensionarer-mer-i-planboken/'],122,9,11
19
- 17,1523345873769357312,"För oss Sverigedemokrater är detta en prioriterad fråga om både rättvisa och moral. Svenskar som på olika sätt har varit med och byggt det här landet, förtjänar en värdig ålderdom.",2022-05-08 18:55:33,95972673,jimmieakesson,[],294,11,14
20
- 18,1523345831629180928,"I en tid när priserna stiger kraftigt på just de varor och tjänster som är svårast att avvara – mat, värme och bränsle - är det nödvändigt att förbättra de svenska pensionärernas situation.",2022-05-08 18:55:23,95972673,jimmieakesson,[],214,5,8
21
- 19,1523345750255538176,"Största pensionssatsningen sedan pensionssystemet infördes. Vi kan idag presentera en överenskommelse med Moderaterna, Kristdemokraterna och Liberalerna om att göra den största förstärkningen av pensionärernas ekonomi sedan det nuvarande pensionssystemet infördes. https://t.co/tENrQDFy9o",2022-05-08 18:55:03,95972673,jimmieakesson,[],706,57,73
22
- 20,1522508592376602625,Varför har ens SR alla dessa invandrarredaktioner? Ska du bo i Sverige - lär dig svenska.,2022-05-06 11:28:29,95972673,jimmieakesson,[],6876,380,522
23
- 21,1521752982198620161,"Jag uppmanar andra inbjudna partiledare att ställa samma krav. Det får faktiskt finnas någon gräns för tokigheterna, svensk polis förtjänar tydligt stöd från Sveriges politiska partier.",2022-05-04 09:25:58,95972673,jimmieakesson,[],1914,48,106
24
- 22,1521752934702362626,Järvaveckan får helt enkelt välja – polishataren Kakan Hermansson eller partiledaren Jimmie Åkesson.,2022-05-04 09:25:47,95972673,jimmieakesson,[],1588,53,77
25
- 23,1521752853110566912,"Jag kommer idag att meddela arrangörerna att jag inte avser närvara och hålla tal på årets Järvaveckan, vilket tidigare planerats, om denna person på något sätt är en del av deras evenemang.",2022-05-04 09:25:27,95972673,jimmieakesson,[],1258,46,56
26
- 24,1521752814082535424,"Kakan Hermansson har genom åren gjort sig känd för en rad politiskt extrema och direkt stötande uttalanden, inte minst hatiska inlägg om svensk polis.",2022-05-04 09:25:18,95972673,jimmieakesson,[],1006,27,47
27
- 25,1521752766921781249,"Nu figurerar uppgifter om att årets upplaga av Järvaveckan, en politikervecka i norra Stockholm, återigen genomförs i samarbete med den mycket hårt kritiserade extremvänsterprofilen Kakan Hermansson.",2022-05-04 09:25:07,95972673,jimmieakesson,[],780,10,33
28
- 26,1521752718070755331,"Den senaste tidens utveckling, med Ramadan-kravaller innefattande grovt våld i uppenbart syfte att döda poliser, har aktualiserat behovet av sammanhållning och rakryggat stöd för Polisen och för det svenska samhället i stort.",2022-05-04 09:24:55,95972673,jimmieakesson,[],853,13,35
29
- 27,1521752661170794496,Järvaveckan får välja – Kakan Hermansson eller Jimmie Åkesson,2022-05-04 09:24:41,95972673,jimmieakesson,[],3924,465,215
30
- 28,1521489890369843200,Varför svenska barn påtvingas politisk indoktrinering i skolan är en fråga som kräver en omedelbar förklaring. Vi kommer att kalla Skolverkets generaldirektör till utbildningsutskottet. Från dagens nationella prov i historia.,2022-05-03 16:00:32,95972673,jimmieakesson,[],3359,168,246
31
- 29,1521489797038157827,Det här äcklar mig på riktigt. Propaganda riktad till skolbarn hör hemma i diktaturer. https://t.co/BDYiNs8NDV,2022-05-03 16:00:10,95972673,jimmieakesson,[],6804,735,711
32
- 30,1521395241454034945, https://t.co/tpIq94r7BG,2022-05-03 09:44:26,95972673,jimmieakesson,['https://www.youtube.com/watch?v=f-eK1cgzGF8&ab_channel=Sverigedemokraterna'],178,10,20
33
- 31,1521180859012943878,Ikväll medverkar jag i Aktuellt. Ämnet är trafiken och Sveriges åtgärder för att minska utsläppen. Debatt mot Annie Lööf. Aktuellt sänds i SVT2 med start kl 21.00.,2022-05-02 19:32:33,95972673,jimmieakesson,[],874,104,53