Demea9000 commited on
Commit
38b2250
1 Parent(s): 37589e2

fixed some bugs

Browse files
app.py CHANGED
@@ -66,7 +66,7 @@ if __name__ == "__main__":
66
  # )
67
  # demo.launch()
68
 
69
- text_classifier = tc.TextClassifier(from_date='2022-07-01', to_date='2022-07-31', user_name=USER_LIST[0], num_tweets=20)
70
  text_classifier.run_main_pipeline()
71
  print(get_summary_statistics(text_classifier.get_dataframe()))
72
  print(type(get_summary_statistics(text_classifier.get_dataframe())))
 
66
  # )
67
  # demo.launch()
68
 
69
+ text_classifier = tc.TextClassifier(from_date='2019-07-01', to_date='2022-07-31', user_name=USER_LIST[1], num_tweets=20)
70
  text_classifier.run_main_pipeline()
71
  print(get_summary_statistics(text_classifier.get_dataframe()))
72
  print(type(get_summary_statistics(text_classifier.get_dataframe())))
data/twitterdata.csv CHANGED
@@ -1,6 +1,21 @@
1
  id,tweet,date,user_id,username,urls,nlikes,nreplies,nretweets,class_tuple,main_topic,sub_topic,sentiment,target
2
- 1547162967430647808,"Varför är det så? Var är journalisternas frågor till Magdalena Andersson, Stefan Löfven och Fredrik Reinfeldt? ""Känns det bra?"", ""Är du nöjd med vad du har gjort?"", ""Var det värt det?"".",2022-07-13 12:16:10,95972673,jimmieakesson,[],2099,71,152," (journalism, media, negative, politicians)", journalism,media,negative,politicians
3
- 1547162886073491456,De politiker som överlagt har skapat denna situation kommer hela tiden undan utan att behöva ta ansvar.,2022-07-13 12:15:51,95972673,jimmieakesson,[],1834,42,109," (politics, government, negative, politicians)", politics,government,negative,politicians
4
- 1547162769023172609,"Tycker ni att det var värt det? Hur många obeskrivligt grova, fullkomligt omänskliga, vålds- och sexualbrott är massinvandringen värd? https://t.co/ucx4CfNeSM",2022-07-13 12:15:23,95972673,jimmieakesson,[],5075,401,669," immigration, mass immigration, negative, immigrants", immigration,mass immigration,negative,immigrants
5
- 1546801285021814784,"Sverigedemokraterna kommer även fortsättningsvis att vara den tyngsta rösten för kraftigt sänkta priser 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,[],1228,83,119," (fuel prices, lower fuel prices, positive, people who live outside of cities)", fuel prices,lower fuel prices,positive,people who live outside of cities
6
- 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,[],3514,179,145," (violence, femicide, negative, femicide victim's family)", violence,femicide,negative,femicide victim's family
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  id,tweet,date,user_id,username,urls,nlikes,nreplies,nretweets,class_tuple,main_topic,sub_topic,sentiment,target
2
+ 1548051538966237186,@olofzonmarcus @kdriks ❤️❤️,2022-07-15 23:07:02,1407151866,BuschEbba,[],206,6,0,"(n/a, n/a, n/a, n/a)",n/a,n/a,n/a,n/a
3
+ 1547174300100198400,"Över vårt sommarljusa Sverige faller nu ett mörker nyheterna om den 9-åriga flickan lämnar ingen oberörd. Hos mig blandas sorg, vrede och bestörtning. Läs längre kommentar: https://t.co/Dc8UTQs4jm",2022-07-13 13:01:12,1407151866,BuschEbba,['https://www.facebook.com/100044182642032/posts/pfbid0RQnAUVZDDBvrxMyYT7MSLJkEzUm8gJZfAJCYc3zU3YUcsZ9dQbCid6orJPqTRYorl/?d=n'],3209,195,275,"(crime, child abuse, negative, the perpetrators)",crime,child abuse,negative,the perpetrators
4
+ 1545832564388253696,Hej 50-talet! Det var ett tag sen nu men ibland så blir man påmind om att det fortfarande finns folk som tycker att en kvinna inte kan vara tillräcklig i sig själv. Sorgligt nog så är det också många gånger av andra kvinnor - som kallar sig ”feminister”. Kämpa. https://t.co/2Min2LyfQS,2022-07-09 20:09:38,1407151866,BuschEbba,[],893,58,39,"(feminism, social inequality, negative, people who think women can't be enough by themselves)",feminism,social inequality,negative,people who think women can't be enough by themselves
5
+ 1544998212724989955,"Enligt uppg verkar det som att gärningsmannen har kopplingar till en nazistisk organisation. Avskyvärt. Oavsett motivet för gårdagens hemska dåd måste extremism bekämpas kraftfullare än idag. Vi behöver förbjuda deltagande i den typen av kriminella, våldsbejakande organisationer.",2022-07-07 12:54:13,1407151866,BuschEbba,[],479,88,13,"(extremism, nazism, negative, extremism)",extremism,nazism,negative,extremism
6
+ 1544998118927859712,"Enligt kammaråklagaren var Ing-Marie Wieselgrens offentliga profil och engagemang sannolikt skäl till att hon mördades. Det är nattsvart att en person som påverkat många, mördades grund av det hon jobbade med. Skyddet för offentliganställda måste stärkas.",2022-07-07 12:53:50,1407151866,BuschEbba,[],1053,95,34,"(public servants, murdered public servant, negative, murdered public servant)",public servants,murdered public servant,negative,murdered public servant
7
+ 1544678859655856130,Just hemkommen från Almedalen och nås av den hemska nyheten att en kvinna knivhuggits och allvarligt skadats vid Donners plats mitt i Visby 💔,2022-07-06 15:45:13,1407151866,BuschEbba,[],955,47,25,"(crime, knife attack, negative, woman)",crime,knife attack,negative,woman
8
+ 1544652756841021440,Det sägs att bli härmad är den finaste komplimangen man kan få. Särskilt många komplimanger fick jag däremot inte 2016. Klipp från gårdagens Politikbyrån i SVT. https://t.co/nTcoOE3WwK,2022-07-06 14:01:30,1407151866,BuschEbba,[],3006,133,265,"(media, television, negative, self)",media,television,negative,self
9
+ 1544381155943845893,Bra av @JohanPehrson om medelklassen — den måste vara öppen för fler och rörligheten uppåt öka. Ser fram emot att samarbeta kring detta efter valet.,2022-07-05 20:02:15,1407151866,BuschEbba,[],984,63,29,"(income inequality, social mobility, positive, middle class)",income inequality,social mobility,positive,middle class
10
+ 1544316284636127233,"Sverige ska vara ett land där det är möjligt för alla att bygga sig ett gott liv. Vi kristdemokrater vill öppna upp Svenssonlivet för fler, vi vill hjälpa fler att uppnå de tre klassiska svenska V:na. Villan, Volvon och Vovven. https://t.co/DTtGpRAqdN",2022-07-05 15:44:28,1407151866,BuschEbba,['https://www.expressen.se/debatt/busch-svenssonlivet-ska-inte--vara-en-lyxvara-for-de-rikaste/'],1356,135,68,"(social policy, income inequality, positive, general public)",social policy,income inequality,positive,general public
11
+ 1544210451764072448,"Sverige ska inte vara ett köland! KD är redo att ingå i en ny regering som tacklar köerna, levererar den stora vårdreform som behövs, och säkrar tryggheten i hela landet. Läs mer i DI Debatt inför vår dag i Almedalen: https://t.co/rSo9EWt63A",2022-07-05 08:43:56,1407151866,BuschEbba,['https://www.di.se/debatt/debatt-kolandet-sverige/'],938,112,55,"(healthcare, long wait times, positive, sweden)",healthcare,long wait times,positive,sweden
12
+ 1543896057490415616,"Utmärkt tal av Ulf Kristersson. Tydligt om vad våra fyra partier som vill ha en ny start för Sverige är eniga om, i kontrast till vänsterkartellen. Tack för orden om KD:s tydlighet om vikten av en god vård i tid och äldreomsorg. Redo för en ny regering! @moderaterna",2022-07-04 11:54:38,1407151866,BuschEbba,[],2131,185,97,"(politics, government, positive, the moderate party)",politics,government,positive,the moderate party
13
+ 1543847274945646592,Almedalens första tack går till @Anna_Ekstrom som såg att jag inte var helt med på morgonen och kosten kopp svart kaffe! 🙏 #Almedalen https://t.co/5p8b9VMvLR,2022-07-04 08:40:48,1407151866,BuschEbba,[],466,18,7,"(almedalen, almedalen's first thank you goes to @anna_ekstrom who saw that i was not quite with",almedalen,almedalen's first thank you goes to @anna_ekstrom who saw that i was not quite with,None,None
14
+ 1543840671953555456,Supporttruppen har anlänt till Gotland. Kör så det ryker Ulf Kristersson @moderaterna #almedalen2022 https://t.co/i39h6M8ZBy,2022-07-04 08:14:34,1407151866,BuschEbba,[],4361,241,114,"(sweden, politics, positive, ulf kristersson @moderaterna)",sweden,politics,positive,ulf kristersson @moderaterna
15
+ 1543675217565945857,Oslo. Och nu Köpenhamn. Fasansfulla bilder från den danska huvudstaden. Mina tankar är hos offren och alla deras anhöriga.,2022-07-03 21:17:06,1407151866,BuschEbba,[],1020,21,45,"(terrorism, suicide bombing, negative, victims and their families)",terrorism,suicide bombing,negative,victims and their families
16
+ 1543624914254577666,Senaste dygnen har jag turnerat runt i vårt vackra land. Från Nyköping i öst till Halmstad & Markaryd i väst med mängder av stopp däremellan. Att få träffa så mkt folk var höjdpunkten och nådde sin absoluta kulmen i mötet med lille livräddaren Eton 😍 Nu mot Visby & Almedalen. https://t.co/AnGzK9K3MC,2022-07-03 17:57:13,1407151866,BuschEbba,[],1310,47,37,"(touring, none, positive, swedish people)",touring,none,positive,swedish people
17
+ 1543567455397855232,Varken hushållen eller våra företag har råd med fyra år till av den här regeringens energipolitik. Socialdemokraterna har misslyckats - men våra fyra partier är ense om framtiden för energipolitiken. Den kommer innehålla ny kärnkraft. https://t.co/oKovG3Ha9c,2022-07-03 14:08:54,1407151866,BuschEbba,['https://www.dn.se/debatt/sa-skapar-vi-forutsattningar-for-att-bygga-ny-karnkraft/'],819,44,55,"(energy policy, nuclear power, positive, sweden)",energy policy,nuclear power,positive,sweden
18
+ 1543196052077117441,@Catoman71 Stort! :),2022-07-02 13:33:04,1407151866,BuschEbba,[],23,1,0,"(n/a, n/a, n/a, n/a)",n/a,n/a,n/a,n/a
19
+ 1543188983471132672,Ping @AckoAnkarberg @jakobforssmed @andreas_carlson @kommunalradet @germundsson @MiaFrisk,2022-07-02 13:04:59,1407151866,BuschEbba,[],25,9,3,"(local government, funding, neutral, local government)",local government,funding,neutral,local government
20
+ 1543185686471315457,Inte förstått grejen med att partiledare lägger ut bilder på vad dem äter i parti och minut. Men däremot har jag nu förstått storheten i Småländsk kebabsås. Den här var mycket god på Rendez Vouz i Smålandsstenar. Uppfattat att det finns lokala variationer. Var finns den bästa? https://t.co/DkKR910RLR,2022-07-02 12:51:53,1407151866,BuschEbba,[],3124,470,58,"(food, kebabs, positive, rendez vouz)",food,kebabs,positive,rendez vouz
21
+ 1542795970127314946,Varje dag anmäls 27 våldtäkter. Idag presenterar vi att våldtäktsmän och personer som begår sexualbrott mot barn ska kunna kastreras kemiskt. Om en person som Nytorgsmannen ska kunna bli fri ska kemisk kastrering ha skett innan frigivningen.,2022-07-01 11:03:17,1407151866,BuschEbba,[],4050,416,267,"(crime, sexual assault, negative, perpetrators)",crime,sexual assault,negative,perpetrators
functions/functions.py CHANGED
@@ -26,4 +26,16 @@ def separate_string(string):
26
 
27
 
28
  def convert_to_tuple(string):
 
 
 
 
 
 
29
  return tuple(string.strip('()').split(', '))
 
 
 
 
 
 
 
26
 
27
 
28
  def convert_to_tuple(string):
29
+ """
30
+ This function converts a string to a tuple.
31
+ :param string:
32
+ :return: tuple of strings
33
+ """
34
+ string = string.strip()
35
  return tuple(string.strip('()').split(', '))
36
+
37
+
38
+
39
+ if __name__ == '__main__':
40
+ s = ' (politics, government, negative, sweden)'
41
+ print(convert_to_tuple(s))
textclassifier/TextClassifier.py CHANGED
@@ -48,10 +48,10 @@ class TextClassifier:
48
  start_time = time.time()
49
  while True:
50
  self.df = self.ts.scrape_by_user(user_name)
51
- if 0 < len(self.df) <= num_tweets:
52
  break
53
  else:
54
- if time.time() - start_time > 10:
55
  raise Exception("Could not get enough tweets. Please try again. Perhaps try different time range.")
56
  continue
57
  # Make id as type int64
@@ -99,8 +99,9 @@ class TextClassifier:
99
 
100
  @staticmethod
101
  def cleanup_topic_results(text):
102
- new_item = text.replace("\n", " ")
103
- new_item = new_item.replace(" ", " ")
 
104
  return new_item
105
 
106
  def df_to_csv(self, filename="{}/data/twitterdata.csv".format(ROOT_PATH)):
@@ -150,11 +151,12 @@ class TextClassifier:
150
  df_topic['topics_temp'] = df_topic['class_tuple'].apply(f.convert_to_tuple)
151
  df_topic_split = pd.DataFrame(df_topic['topics_temp'].tolist(),
152
  columns=['main_topic', 'sub_topic', 'sentiment', 'target'])
153
- self.df = df_topic.merge(df_topic_split, how='left', left_index=True, right_index=True)
154
- self.df.drop(['topics_temp'], axis=1, inplace=True)
155
- # Remove '(' and ')' from main_topic
156
- self.df['main_topic'] = self.df['main_topic'].apply(lambda x: x.replace("(", ""))
157
- self.df['main_topic'] = self.df['main_topic'].apply(lambda x: x.replace(")", ""))
 
158
 
159
  def run_main_pipeline(self, filename="{}/data/twitterdata.csv".format(ROOT_PATH)):
160
  """
@@ -210,6 +212,6 @@ class TextClassifier:
210
 
211
 
212
  if __name__ == "__main__":
213
- text_classifier = TextClassifier(from_date="2022-07-01", to_date="2022-07-15", user_name='jimmieakesson',
214
- num_tweets=20)
215
  text_classifier.run_main_pipeline()
 
48
  start_time = time.time()
49
  while True:
50
  self.df = self.ts.scrape_by_user(user_name)
51
+ if num_tweets-5 < len(self.df) <= num_tweets:
52
  break
53
  else:
54
+ if time.time() - start_time > 15:
55
  raise Exception("Could not get enough tweets. Please try again. Perhaps try different time range.")
56
  continue
57
  # Make id as type int64
 
99
 
100
  @staticmethod
101
  def cleanup_topic_results(text):
102
+ new_item = text.strip()
103
+ new_item = new_item.replace("\n", "")
104
+ new_item = new_item.replace(" ", "")
105
  return new_item
106
 
107
  def df_to_csv(self, filename="{}/data/twitterdata.csv".format(ROOT_PATH)):
 
151
  df_topic['topics_temp'] = df_topic['class_tuple'].apply(f.convert_to_tuple)
152
  df_topic_split = pd.DataFrame(df_topic['topics_temp'].tolist(),
153
  columns=['main_topic', 'sub_topic', 'sentiment', 'target'])
154
+
155
+ # Manually add columns to self.df
156
+ self.df['main_topic'] = df_topic_split['main_topic'].astype(str)
157
+ self.df['sub_topic'] = df_topic_split['sub_topic'].astype(str)
158
+ self.df['sentiment'] = df_topic_split['sentiment'].astype(str)
159
+ self.df['target'] = df_topic_split['target'].astype(str)
160
 
161
  def run_main_pipeline(self, filename="{}/data/twitterdata.csv".format(ROOT_PATH)):
162
  """
 
212
 
213
 
214
  if __name__ == "__main__":
215
+ text_classifier = TextClassifier(from_date='2019-01-01', to_date="2022-07-15", user_name='jimmieakesson',
216
+ num_tweets=60)
217
  text_classifier.run_main_pipeline()
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 <= 60, "num_tweets must be a positive integer and at most 60"
31
 
32
  self.from_date = from_date
33
  self.to_date = to_date