Demea9000 commited on
Commit
b944971
1 Parent(s): 0b5fde3

checkpoint

Browse files
data/twitterdata.csv CHANGED
@@ -49,3 +49,43 @@ id,tweet,date,user_id,username,urls,nlikes,nreplies,nretweets,topic,sentiment,ta
49
  1239960121544933383,"Vi har alla ett ansvar. Oavsett vilka vi är, var vi bor eller hur vi drabbas, så är vi alla en del av Sverige. Låt oss alla hedra det i dessa svåra tider.",2020-03-17 18:01:44,95972673,jimmieakesson,[],196,6,12, 1. swedish society 2. coronavirus pandemic 3. solidarity,statements,The people of Sweden.
50
  1239960095993331712,"Vissa drabbas hårdare än andra, men det är bara genom gemensamma ansträngningar vi kan utmana och övervinna krisen.",2020-03-17 18:01:38,95972673,jimmieakesson,[],110,1,7, covid-19 sub topic 1: effects sub topic 2: solutions,statements,The people of Sweden.
51
  1239960079929090048,"Det kan inte nog betonas att vi befinner oss i ett riktigt allvarligt läge. Belastningen på samhället är redan hård, och allt tyder på att vi har en lång och svår period framför oss.",2020-03-17 18:01:35,95972673,jimmieakesson,[],154,3,10, 1. covid-19 2. sweden 3. lockdown,concern,The Swedish government.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  1239960121544933383,"Vi har alla ett ansvar. Oavsett vilka vi är, var vi bor eller hur vi drabbas, så är vi alla en del av Sverige. Låt oss alla hedra det i dessa svåra tider.",2020-03-17 18:01:44,95972673,jimmieakesson,[],196,6,12, 1. swedish society 2. coronavirus pandemic 3. solidarity,statements,The people of Sweden.
50
  1239960095993331712,"Vissa drabbas hårdare än andra, men det är bara genom gemensamma ansträngningar vi kan utmana och övervinna krisen.",2020-03-17 18:01:38,95972673,jimmieakesson,[],110,1,7, covid-19 sub topic 1: effects sub topic 2: solutions,statements,The people of Sweden.
51
  1239960079929090048,"Det kan inte nog betonas att vi befinner oss i ett riktigt allvarligt läge. Belastningen på samhället är redan hård, och allt tyder på att vi har en lång och svår period framför oss.",2020-03-17 18:01:35,95972673,jimmieakesson,[],154,3,10, 1. covid-19 2. sweden 3. lockdown,concern,The Swedish government.
52
+ 1239960040028557312,Vi välkomnar naturligtvis dessa besked. Att minimera sociala kontakter är avgörande för att vi ska ha möjlighet att bromsa smittspridningen. Låt oss nu hoppas att besked om grundskolan kommer snarast.,2020-03-17 18:01:25,95972673,jimmieakesson,[],128,2,11, covid-19 sub topic 1: social distancing sub topic 2: school closures,agreement,Swedish people
53
+ 1239960011159281667,Regeringen bereder också lag som ska möjliggöra stängning av grundskolorna och samtidigt möjliggöra för samhällskritisk personal att få barnomsorg.,2020-03-17 18:01:18,95972673,jimmieakesson,[],114,3,10, 1. swedish government 2. legislation 3. childcare,opinions,The Swedish government.
54
+ 1239959976837177346,Idag kom dock beskedet att gymnasieskolan och högre utbildning rekommenderas att hålla undervisning på distans. Elever och studenter ska stanna hemma.,2020-03-17 18:01:10,95972673,jimmieakesson,[],108,0,11, 1. education 2. online learning 3. coronavirus,statements,Elevers and students.
55
+ 1239959938622992385,"Det är, som jag tidigare framhållit, ett högt spel. Vårt samhälle är, tyvärr, illa rustat för sådana här situationer. Kritiken kvarstår, således.",2020-03-17 18:01:01,95972673,jimmieakesson,[],141,2,12, 1. swedish politics 2. the coronavirus pandemic 3. government responses to the pandemic,criticism,The Swedish government
56
+ 1239959864228696064,"Det är ingen hemlighet att jag och SD varit kritiska till vad vi upplevt som en defensiv hållning från regeringens och myndigheternas sida. Medan andra länder vidtagit skarpa och långtgående åtgärder för att bromsa smittspridningen, har Sverige avvaktat.",2020-03-17 18:00:43,95972673,jimmieakesson,[],183,3,17, 1. swedish government 2. coronavirus response,criticism,The Swedish government.
57
+ 1239959742035849216,Dagens partiöverläggningar med statsministern hölls – föredömligt – över videolänk. Utöver partiledarna deltog Folkhälsomyndigheten och Socialstyrelsen.,2020-03-17 18:00:14,95972673,jimmieakesson,[],628,22,38, 1. swedish government 2. videoconferencing 3. public health,praise,The Swedish prime minister.
58
+ 1239469549642227712,Regeringen med stödpartier presenterar nytt krispaket för företag och jobb. Känns väl avvägt och rimligt. Delar uppfattningen att det just nu är bättre att agera snabbt än perfekt. https://t.co/TTeaIHjxbA,2020-03-16 09:32:23,95972673,jimmieakesson,[],1151,50,75, 1. swedish government 2. economic policy 3. coronavirus,agreement,Regeringen
59
+ 1239306859032522753,"Imorgon går nära 1,5 miljon barn och unga till skolan... Läs artikeln: https://t.co/jkVCCcqOkg",2020-03-15 22:45:55,95972673,jimmieakesson,['https://www.svd.se/fler-atgarder-kravs-for-att-bromsa-smittspridning'],199,26,32, 1. education 2. children 3. school,statements,Swedish children and youth
60
+ 1239306781559533579,En grupp experter menar i en debattartikel att Sverige behöver vidta mer kraftfulla åtgärder för att bromsa smittspridningen. Jag tycker att de resonerar klokt. Regeringens hittills defensiva hållning kan få oerhörda konsekvenser. https://t.co/dgpU3Io2Cy,2020-03-15 22:45:36,95972673,jimmieakesson,[],798,47,125, 1. covid-19 2. sweden 3. regeringens hittills defensiva hållning,criticism,Regeringen
61
+ 1238499207746633728,Således: Stäng skolorna! Behåll vissa fritidshem öppna för barn till samhällskritisk personal.,2020-03-13 17:16:35,95972673,jimmieakesson,[],372,34,34, 1. swedish schools: 2. closing schools: 3. keeping some after-school programs open:,statements,N/A
62
+ 1238499155888295936,"Ansvaret faller ytterst på politiken, och jag vill se en regering som tar det ansvaret, som tar det säkra för det osäkra, som vidtar kraftfulla för att bromsa smittspridning och inskärper situationens allvar hos befolkningen.",2020-03-13 17:16:23,95972673,jimmieakesson,[],219,12,24, 1. swedish politics 2. coronavirus 3. government response,criticism,Regeringen
63
+ 1238499139664646144,Men tänk om de har fel — igen...,2020-03-13 17:16:19,95972673,jimmieakesson,[],117,6,5, 1. social media 2. twitter 3. opinions,skepticism,N/A
64
+ 1238499108102569985,"Ja, till och med trots att samma myndighet hittills har svajat betänkligt i sina analyser och rekommendationer, så kan de ha rätt .",2020-03-13 17:16:12,95972673,jimmieakesson,[],95,2,3, 1. swedish government 2. coronavirus 3. public health,skepticism,the government
65
+ 1238499046911881217,"Även om andra länder med långt mindre problem än vi gör en annan bedömning, och även om sunt förnuft och rimligt försiktighetstänk talar emot det, så kan den statliga myndigheten ha rätt.",2020-03-13 17:15:57,95972673,jimmieakesson,[],104,2,6, 1. swedish government 2. other countries 3. sunt förnuft,skepticism,The state agency
66
+ 1238499026254934019,"i offentlig förvaltning. Det är vi folkvalda som ska fatta besluten, givetvis mot bakgrund av vilka fakta som presenteras för oss. Om en myndighet gör bedömningen att en viss åtgärd är onödig så kan de givetvis ha alldeles rätt.",2020-03-13 17:15:52,95972673,jimmieakesson,[],107,3,5, 1. government 2. policy 3. decision-making,statements,N/A
67
+ 1238498914128494597,"En sak som dock verkar ha gått förbi regeringen är att forskare och experter inte är politiker. De har inte det yttersta ansvaret. Politiska beslut måste bygga på politiskt ansvarstagande. Det duger inte att skyffla över ansvaret på myndigheter, kommuner eller enskilda tjänstemän",2020-03-13 17:15:25,95972673,jimmieakesson,[],175,5,22, 1. government 2. scientists 3. responsibility,skepticism,The government
68
+ 1238498683563491329,som helt förlitar sig på ännu mer defensiva myndigheter. Det är ett högt spel. Vi politiker är lekmän. Vi vet naturligtvis inte mer om virus och smittspridning än vetenskapen. Därför måste de åtgärder som vidtas politiskt bygga på de fakta vetenskapen ger oss.,2020-03-13 17:14:31,95972673,jimmieakesson,[],179,6,16, 1. politics 2. science 3. technology,skepticism,politicians
69
+ 1238498584401756161,"""Vi planerar för det värsta och hoppas på det bästa."" Den devisen borde vara vägledande för det politiska ledarskapet i dessa kristider. Så är det också i andra länder, men i Sverige har vi istället en defensiv regering.",2020-03-13 17:14:07,95972673,jimmieakesson,[],1221,57,138, 1. politics 2. government 3. sweden,skepticism,Regeringen
70
+ 1238492917414625281, https://t.co/xeMvdcVRdG,2020-03-13 16:51:36,95972673,jimmieakesson,[],575,33,59, 1. social media 2. twitter 3. advertising,statements,The target of this tweet is the general public.
71
+ 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,[],1825,107,205, 1. immigration 2. sweden,statements,The target of this tweet is Sweden.
72
+ 1222908147108470784,@klasskamp1 https://t.co/Rwu7VrJCA8,2020-01-30 16:43:17,282532238,dadgostarnooshi,[],3,1,0, 1. social media 2. twitter 3. @klasskamp1,statements,The target of this tweet is @klasskamp1.
73
+ 1222841879194210304,Raketen Jonas Sjöstedt ligger etta. https://t.co/cObFogV93H,2020-01-30 12:19:57,282532238,dadgostarnooshi,['https://www.dn.se/nyheter/sverige/ras-for-lofven-i-fortroendeligan-lyft-for-sjostedt/'],96,4,8, 1. swedish politics 2. the green party 3. opinion polls,praise,Jonas Sjöstedt
74
+ 1221142930531979264,Ska hon inte städa upp lite i sin egen region innan hon kräver att andra ska göra samma sak? https://t.co/ni76Bo3gKH,2020-01-25 19:48:57,282532238,dadgostarnooshi,['https://sverigesradio.se/sida/artikel.aspx?programid=83&artikel=7392613'],109,6,18, 1. europe 2. migration 3. politics,criticism,"The TARGET of this criticism TWEET is ""Sweden."""
75
+ 1221098172241661952,@Nabila_AFR Hahaha,2020-01-25 16:51:05,282532238,dadgostarnooshi,[],2,0,0, 1. social media 2. twitter 3. jokes,jokes,Nabila_AFR
76
+ 1220654619187126273,Överklassknarkandet måste stoppas. https://t.co/xwpNilOTbn,2020-01-24 11:28:34,282532238,dadgostarnooshi,['https://www.expressen.se/nyheter/sprangt-ostermalmshus-var-overklassens-knarkcentral/'],156,33,25, 1. crime 2. drug use 3. social class,opinion,N/A
77
+ 1220428618406531073,@river_mattie Det har gällt fram till 2015. Och det gäller på exakt alla områden förutom just plats för förskolor än idag. Därav inte ”nytt”.,2020-01-23 20:30:31,282532238,dadgostarnooshi,[],5,3,0, 1. swedish education 2. daycare,statements,N/A
78
+ 1220421384041574401,@river_mattie Vill o vill. Det måste ju finnas gator o vägar om det ska gå att ha ett bostadsområde. Därför är ett byggprojekt ett samarbete mellan privat o kommun gnm exploateringsavtal.,2020-01-23 20:01:46,282532238,dadgostarnooshi,[],0,0,0, 1. construction 2. private vs. public,statements,N/A
79
+ 1220420640177623043,@river_mattie Läs sid 14 o alla författningsförslag. Sluta bara låtsas som att detta är nåt helt nytt. Alla byggherrar har i alla år behövt bidra till allmänna anläggningar. Annars riskerar ju kommunerna avstå byggande helt.,2020-01-23 19:58:49,282532238,dadgostarnooshi,[],3,1,0, 1. construction 2. regulations 3. infrastructure,statements,"The target of this tweet is ""all byggherrar."""
80
+ 1220417650880393217,"@river_mattie Ja, vi vill ju inkludera plats för förskolor. Detta gäller ju redan torg, gator, parker osv. Du ansåg dej vara emot hela principen.",2020-01-23 19:46:56,282532238,dadgostarnooshi,[],0,1,0, 1. inclusion 2. preschools 3. public spaces,statements,"The target of this tweet is ""river_mattie."""
81
+ 1220416683371913216,@river_mattie Nja. Det är inte så. Det är ändå byggherren/fastighetsägare som betalar den offentliga infrastrukturen genom avgifter. Om du läser hela betänkandet istf skärmdumpar är det lättare. Skillnaden är bara om man tycker att förskolor o tex kommersiella torg är likvärdigt.,2020-01-23 19:43:06,282532238,dadgostarnooshi,[],2,1,0, 1. infrastructure 2. funding,skepticism,N/A
82
+ 1220409230055874570,"@river_mattie Du vet att detta redan är svensk rätt va? Det finns inget parti som driver att byggherren inte ska stå för den off infrastrukturen i projekten. Eller tycker du kommunen ska betala det? Skulle ju innebära kraftigt höjda skatter, men visst kan det diskuteras.",2020-01-23 19:13:29,282532238,dadgostarnooshi,[],3,1,0, 1. swedish law 2. infrastructure 3. taxes,statements,N/A
83
+ 1220406636583563266,"@river_mattie Detta har varit svensk rätt fram till 2015. Vad är problemet? Ska det inte finnas förskolor i nya bostadsområden? Det är ju inte folks fastigheter utan byggherrens, precis som med all annan offentlig infrastruktur som skäligen måste ingå i projektet.",2020-01-23 19:03:10,282532238,dadgostarnooshi,[],3,1,0, 1. swedish law 2. preschools 3. infrastructure,statements,N/A
84
+ 1220403593624412160,@river_mattie ?,2020-01-23 18:51:05,282532238,dadgostarnooshi,[],1,1,0, 1. social media 2. twitter 3. engagement,questions,The target of this tweet is river_mattie.
85
+ 1220312838373347330,DN föreslår att vi ska återinföra värnskatten. Jag tycker det är en bra idé. https://t.co/xSNG1cktqy,2020-01-23 12:50:27,282532238,dadgostarnooshi,[],365,13,48, 1. swedish politics 2. taxation 3. defense,agreement,The Swedish people
86
+ 1219961234457530375,@matstromberg Över 7 miljarder till välfärden.,2020-01-22 13:33:18,282532238,dadgostarnooshi,[],14,1,0, 1. swedish welfare system 2. financial support for welfare programs 3. taxation,statements,N/A
87
+ 1219958326605287425,Jorå. https://t.co/xjw2iMDvWJ,2020-01-22 13:21:45,282532238,dadgostarnooshi,['https://svt.se/nyheter/inrikes/m-kd-och-v-mer-pengar-till-valfarden'],48,4,3, 1. social media 2. twitter 3. jorå,jokes,The target of this tweet is Jorå.
88
+ 1219199886907801600,Pressen på regeringen blev för stor. Välkommet med 5 extra miljarder till välfärden.,2020-01-20 11:07:59,282532238,dadgostarnooshi,[],143,7,16, 1. swedish politics 2. government spending 3. welfare,statements,The Swedish government
89
+ 1218474712986267648,"@sjunnedotcom Hej. Detta är fel. Det har alltid varit byggherren som i proportion till sitt byggande betalar den offentliga infrastrukturen. Vi tar bara bort ett specifikt förbud mot att även plats för förskolor ska ingå, som infördes 2015.",2020-01-18 11:06:24,282532238,dadgostarnooshi,[],3,0,0, 1. construction 2. infrastructure 3. preschools,statements,sjunnedotcom
90
+ 1218242708101312512,18 år ändå. https://t.co/84kTfcz86n,2020-01-17 19:44:30,282532238,dadgostarnooshi,['https://www.expressen.se/nyheter/ny-matning-vansterpartiet-nar-hogsta-siffran-pa-18-ar/'],70,4,6, 1. age 2. social media,anecdotes,N/A
91
+ 1217521506487603200,(V) har med @jsjostedt som partiledare lyckats förändra på riktigt t.o.m. i ett läge då alla sa att det va omöjligt. Det är väldigt tråkigt att en så rakryggad och skarp företrädare väljer att sluta. Det har varit en ynnest a få jobba tillsammans m dig.,2020-01-15 19:58:42,282532238,dadgostarnooshi,[],388,3,16, 1. swedish politics 2. the moderate party 3. anna kinberg batra,praise,@jsjostedt
textclassifier/TextClassifier.py CHANGED
@@ -10,6 +10,7 @@ from dotenv import find_dotenv, load_dotenv
10
  import pandas as pd
11
  import warnings
12
  from pandas.core.common import SettingWithCopyWarning
 
13
 
14
  warnings.simplefilter(action="ignore", category=SettingWithCopyWarning)
15
 
@@ -287,7 +288,7 @@ class TextClassifier:
287
  already_classified_df = pd.read_csv(filename, on_bad_lines='skip')
288
  print("Already classified tweets: {}".format(already_classified_df.shape[0]))
289
  # Create a temporary df where values from already_classified_df that are not it self.df are stored
290
- temp_df = self.df[self.df['id'].isin(already_classified_df['id'])]
291
  # Remove rows from self.df that are not in already_classified_df
292
  self.df = self.df[~self.df['id'].isin(already_classified_df['id'])]
293
  # Only classify non-empty rows
@@ -323,6 +324,28 @@ class TextClassifier:
323
  print("Created {}.".format(filename))
324
  return None
325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  def __repr__(self):
327
  """
328
  Gives a string that describes which user is classified
@@ -332,5 +355,8 @@ class TextClassifier:
332
 
333
 
334
  if __name__ == "__main__":
335
- tc = TextClassifier(from_date="2020-03-01", to_date="2020-03-31", user_name='jimmieakesson', num_tweets=20)
336
- tc.run_main_pipeline()
 
 
 
 
10
  import pandas as pd
11
  import warnings
12
  from pandas.core.common import SettingWithCopyWarning
13
+ import matplotlib.pyplot as plt
14
 
15
  warnings.simplefilter(action="ignore", category=SettingWithCopyWarning)
16
 
 
288
  already_classified_df = pd.read_csv(filename, on_bad_lines='skip')
289
  print("Already classified tweets: {}".format(already_classified_df.shape[0]))
290
  # Create a temporary df where values from already_classified_df that are not it self.df are stored
291
+ temp_df = already_classified_df[already_classified_df['id'].isin(self.df['id'])]
292
  # Remove rows from self.df that are not in already_classified_df
293
  self.df = self.df[~self.df['id'].isin(already_classified_df['id'])]
294
  # Only classify non-empty rows
 
324
  print("Created {}.".format(filename))
325
  return None
326
 
327
+ @staticmethod
328
+ def split_topics(text:str):
329
+ """
330
+ splits a string of format '1. topic1 2. topic2 3. topic3' into a list of topics
331
+ :param text: string of format '1. topic1 2. topic2 3. topic3'
332
+ :return: list of topics
333
+ """
334
+ topics = text.split(' ')
335
+ topics = [topic.split('.')[1] for topic in topics if int(topic.split('.')[0]) > 0]
336
+ return topics
337
+
338
+ def plot(self, type: int):
339
+ """
340
+ Plots the sentiment of the tweets. Since self.df['topics'] is in the format '1. topic 1 2. topic 2 3. topic 3',
341
+ we first split the string into new columns
342
+ :param type:
343
+ :return: plot
344
+ """
345
+
346
+
347
+
348
+
349
  def __repr__(self):
350
  """
351
  Gives a string that describes which user is classified
 
355
 
356
 
357
  if __name__ == "__main__":
358
+ text_classifier = TextClassifier(from_date="2020-01-01", to_date="2020-01-31", user_name='dadgostarnooshi', num_tweets=20)
359
+ text_classifier.run_main_pipeline()
360
+ print(text_classifier.split_topics("1. topic1 2. topic2 3. topic3"))
361
+
362
+
twitterscraper/TwitterScraper.py CHANGED
@@ -27,7 +27,7 @@ class TwitterScraper(object):
27
  # Make sure to_date is later than from_date
28
  assert from_date < to_date, "from_date must be earlier than to_date"
29
  # Make sure num_tweets is a positive integer
30
- assert 0 < num_tweets <= 20, "num_tweets must be a positive integer and at most 20"
31
 
32
  self.from_date = from_date
33
  self.to_date = to_date
 
27
  # Make sure to_date is later than from_date
28
  assert from_date < to_date, "from_date must be earlier than to_date"
29
  # Make sure num_tweets is a positive integer
30
+ assert 0 < num_tweets <= 200, "num_tweets must be a positive integer and at most 20"
31
 
32
  self.from_date = from_date
33
  self.to_date = to_date