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

fixed some logical cases in pipeline

Browse files
data/twitterdata.csv CHANGED
@@ -29,3 +29,23 @@ id,tweet,date,user_id,username,urls,nlikes,nreplies,nretweets,topic,sentiment,ta
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, 1. immigration 2. economic policy 3. labor market,skepticism,the proposed changes
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, 1. swedish politics 2. the moderate party 3. immigration,criticism,The Moderaterna party
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, 1. swedish politics 2. immigration 3. employment,agreement,Moderaterna
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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, 1. immigration 2. economic policy 3. labor market,skepticism,the proposed changes
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, 1. swedish politics 2. the moderate party 3. immigration,criticism,The Moderaterna party
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, 1. swedish politics 2. immigration 3. employment,agreement,Moderaterna
32
+ 1242829277067968512,Har vi inte mod nog att omedelbart genomföra riktade satsningar till själva navet i vår ekonomi så riskerar konsekvenserna att bli katastrofala med massarbetslöshet som följd https://t.co/0f6rUgooxQ,2020-03-25 16:02:44,95972673,jimmieakesson,['https://www.expressen.se/debatt/sd-regeringen-gor-inte-nog-har-ar-var-krisplan/'],501,48,73, 1. economics 2. unemployment,criticism,Sweden
33
+ 1242517494763421697,"Diskuterar Sveriges coronahantering i kvällens Aktuellt. SVT2, kl 21 🇸🇪",2020-03-24 19:23:50,95972673,jimmieakesson,[],592,50,64, 1. swedish news 2. aktuellt 3. coronahantering,statements,Sveriges coronahantering
34
+ 1242388073457037312,En rak fråga: Är regeringen beredd att söka brett stöd i riksdagen för åtgärder av den här omfattningen?,2020-03-24 10:49:33,95972673,jimmieakesson,[],153,9,8, 1. swedish politics 2. the government 3. legislation,questions,The Swedish government.
35
+ 1242388055824175104,"Hittills har finansministern inte visat något som helst intresse av att samtala med oss eller lyssna till våra inspel. Även andra oppositionspartier upplever samma ointresse. Det är ett anmärkningsvärt agerande, givet det rådande läget.",2020-03-24 10:49:29,95972673,jimmieakesson,[],255,20,27, 1. swedish politics 2. governmental transparency 3. opposition parties,criticism,N/A
36
+ 1242388026011144192,"Hyresbidrag, borttagna skatter och avgifter, räntefria lån, minst 75 procents rabatt på korttidsjobben (som ska omfatta även familjeföretag), se över möjligheten att ge kontanta direktstöd beroende på omsättning, och så vidare.",2020-03-24 10:49:22,95972673,jimmieakesson,[],126,2,9, 1. swedish economy 2. government policy 3. stimulus measures,support,Small businesses
37
+ 1242388001898012675,"även små och medelstora, som under normala omständigheter är livskraftiga men som riskerar att gå omkull i coronakrisens spår.",2020-03-24 10:49:16,95972673,jimmieakesson,[],78,0,4, 1. swedish economy 2. coronavirus pandemic 3. economic impact of coronavirus,questions,Small and medium businesses
38
+ 1242387950379380736,Vi är beredda att stötta krisåtgärder i en sådan exceptionell skala. Framför allt handlar det om stimulanser för efterfrågan och substantiella stöd till företag,2020-03-24 10:49:04,95972673,jimmieakesson,[],92,1,5, 1. swedish government 2. stimulus measures 3. support for businesses,support,The Swedish government
39
+ 1242387732816592896,Detta är också vad den nationalekonomiska expertisen framhåller som nödvändigt. Vi har inte råd att vänta!,2020-03-24 10:48:12,95972673,jimmieakesson,[],87,3,2, 1. economics 2. economic policy 3. swedish economics,statements,N/A
40
+ 1242387675992264705,Nu krävs exceptionella satsningar. Sverige har utrymme att möta krisen med kraft. Vår relativt låga skuldkvot möjliggör omfattande satsningar på åtminstone 10-20 procent av BNP. Alltså 500-1 000 miljarder kronor.,2020-03-24 10:47:59,95972673,jimmieakesson,[],93,4,5, 1. swedish economy 2. fiscal policy 3. stimulus measures,support,Sverige
41
+ 1242387638759366656,SD har sedan tidigare presenterat satsningar om tiotals miljarder för att stimulera ekonomin och stötta krisande företag. Givet hur situationen utvecklats kommer inte heller dessa åtgärder att räcka.,2020-03-24 10:47:50,95972673,jimmieakesson,[],82,4,4, 1. swedish economy 2. government stimulus 3. business relief,skepticism,Regeringen
42
+ 1242387613874638848,"Regeringens hittills presenterade krispaket innehåller flera bra och nödvändiga åtgärder, men dessa är otillräckliga. Dels riktar de sig främst till större företag, dels handlar det främst om krediter till höga räntor.",2020-03-24 10:47:44,95972673,jimmieakesson,[],101,1,3, 1. swedish government's coronavirus response 2. stimulus measures 3. loans,criticism,Regeringen
43
+ 1242387590193598466,"På kort sikt skulle man kunna säga att ""the sky is the limit"" när det kommer till finanspolitiska stimulanser. Vi kan, utan att överdriva, tvingas bevittna en massdöd av företag inom bara dagar eller veckor. Imorgon ska lönerna betalas, idag saknar många pengar på kontot.",2020-03-24 10:47:38,95972673,jimmieakesson,[],108,2,5, 1. economics 2. fiscal policy 3. businesses,fear,The Swedish government.
44
+ 1242387544807018497,I kölvattnet av smittspridningen genomgår stora delar av näringslivet ett stålbad. Tvärbromsad efterfrågan gör att företag slåss för sin existens. Hundratusentals jobb hotas. Situationen är synnerligen allvarlig.,2020-03-24 10:47:27,95972673,jimmieakesson,[],614,41,78, 1. economics 2. business 3. coronavirus,synnerligenallvarlig.,N/A
45
+ 1242115832555110405,Vi måste alla ta ansvar för att stoppa smittan och göra allt vi kan för att minska belastningen på vården. https://t.co/v1MCvBAQ1S https://t.co/fn3sszTBEi,2020-03-23 16:47:46,95972673,jimmieakesson,['https://www.youtube.com/watch?v=BTvzu-gP4OI&feature=youtu.be'],1078,94,141, 1. covid-19 2. prevention 3. healthcare,statement,N/A
46
+ 1241022349249581057, https://t.co/1TpSHrRYpm,2020-03-20 16:22:39,95972673,jimmieakesson,[],947,76,95, 1. social media 2. twitter 3. promotions,questions,N/A
47
+ 1239960225622474752, https://t.co/0kCZGnAH1R,2020-03-17 18:02:09,95972673,jimmieakesson,['https://www.youtube.com/watch?v=TSFRHELEG7M&feature=youtu.be'],115,9,22, 1. social media 2. twitter 3. advertising,questions,The target of this tweet is the general public.
48
+ 1239960144563163136,Ta hand om er!,2020-03-17 18:01:50,95972673,jimmieakesson,[],219,21,10, 1. social media 2. twitter 3. hashtags,praise,Sweden
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.
textclassifier/TextClassifier.py CHANGED
@@ -283,25 +283,32 @@ class TextClassifier:
283
  """
284
  # Check if file exists, if not, create it
285
  if os.path.exists(filename):
 
286
  already_classified_df = pd.read_csv(filename, on_bad_lines='skip')
287
  print("Already classified tweets: {}".format(already_classified_df.shape[0]))
288
  # Create a temporary df where values from already_classified_df that are not it self.df are stored
289
  temp_df = self.df[self.df['id'].isin(already_classified_df['id'])]
290
  # Remove rows from self.df that are not in already_classified_df
291
  self.df = self.df[~self.df['id'].isin(already_classified_df['id'])]
292
- print("Classifying topic of {} tweets...".format(self.df.shape[0]))
293
- self.df = self.classify_topics_of_tweets()
294
- print("Classifying sentiment of {} tweets...".format(self.df.shape[0]))
295
- self.df = self.classify_sentiment_of_tweets()
296
- print("Waiting for 1 minute... before analyzing targets...")
297
- time.sleep(65)
298
- self.df = self.analyze_sentiment_of_tweets()
299
- print("Writing to csv...")
300
- self.df_to_csv(filename)
301
- # Concatenate temp_df and self.df
302
- self.df = pd.concat([temp_df, self.df], ignore_index=True)
303
- print("Appended {}.".format(filename))
304
- return None
 
 
 
 
 
 
305
  else:
306
  print("No csv file found. Continuing without removing already classified tweets.")
307
  print("Classifying topics...")
@@ -325,5 +332,5 @@ class TextClassifier:
325
 
326
 
327
  if __name__ == "__main__":
328
- tc = TextClassifier(from_date="2020-02-01", to_date="2020-02-28", user_name='jimmieakesson', num_tweets=20)
329
  tc.run_main_pipeline()
 
283
  """
284
  # Check if file exists, if not, create it
285
  if os.path.exists(filename):
286
+ # Fetch tweets from csv file
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
294
+ if self.df.shape[0] > 0:
295
+ print("Classifying topic of {} tweets...".format(self.df.shape[0]))
296
+ self.df = self.classify_topics_of_tweets()
297
+ print("Classifying sentiment of {} tweets...".format(self.df.shape[0]))
298
+ self.df = self.classify_sentiment_of_tweets()
299
+ print("Waiting for 1 minute... before analyzing targets...")
300
+ time.sleep(65)
301
+ self.df = self.analyze_sentiment_of_tweets()
302
+ print("Writing to csv...")
303
+ self.df_to_csv(filename)
304
+ # Concatenate temp_df and self.df
305
+ self.df = pd.concat([temp_df, self.df], ignore_index=True)
306
+ print("Appended {}.".format(filename))
307
+ return None
308
+ else:
309
+ self.df = pd.concat([temp_df, self.df], ignore_index=True)
310
+ print("No new tweets to classify.")
311
+ return None
312
  else:
313
  print("No csv file found. Continuing without removing already classified tweets.")
314
  print("Classifying topics...")
 
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()