Spaces:
Runtime error
Runtime error
fixed some logical cases in pipeline
Browse files- data/twitterdata.csv +20 -0
- textclassifier/TextClassifier.py +21 -14
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 |
-
|
293 |
-
self.df
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
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-
|
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()
|