Demea9000 commited on
Commit
fa0430c
1 Parent(s): 6f26738

fixed bug in pandas apply function in TextClassifier.py

Browse files
.idea/misc.xml CHANGED
@@ -1,4 +1,4 @@
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <project version="4">
3
- <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (politweet)" project-jdk-type="Python SDK" />
4
  </project>
 
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (politweet)" project-jdk-type="Python SDK" />
4
  </project>
textclassifier/TextClassifier.py CHANGED
@@ -26,16 +26,6 @@ class TextClassifier:
26
  # self.api_key = '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'
27
  openai.api_key = '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'
28
 
29
- def store_tweets(self, file_name: str):
30
- # TODO: implement this method
31
- """
32
- Stores the tweets of a user.
33
- :param file_name:
34
- :param user_name: string of the user name.
35
- """
36
- df_tweets = self.df
37
- df_tweets.to_csv(file_name + '.csv', index=False)
38
-
39
  @staticmethod
40
  def cleanup_sentiment_results(classification_unclean):
41
  """
@@ -162,9 +152,10 @@ class TextClassifier:
162
  assert 'sentiment' in self.df.columns, \
163
  "'sentiment' column does not exist. Please run classify_sentiment_of_tweets first."
164
 
165
- df_analyze = self.df.copy()
166
- df_analyze['target'] = df_analyze['tweet'].apply(self.analyze_sentiment, args=(df_analyze['sentiment'].values))
167
- self.df = df_analyze
 
168
  return self.df
169
 
170
  def classify_topics(self, text: str):
 
26
  # self.api_key = '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'
27
  openai.api_key = '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'
28
 
 
 
 
 
 
 
 
 
 
 
29
  @staticmethod
30
  def cleanup_sentiment_results(classification_unclean):
31
  """
 
152
  assert 'sentiment' in self.df.columns, \
153
  "'sentiment' column does not exist. Please run classify_sentiment_of_tweets first."
154
 
155
+ df_sentiment = self.df.copy()
156
+ df_sentiment['target'] = df_sentiment.apply(lambda row: self.analyze_sentiment(row['tweet'], row['sentiment']),
157
+ axis=1)
158
+ self.df = df_sentiment
159
  return self.df
160
 
161
  def classify_topics(self, text: str):
twitterscraper/TwitterScraper.py CHANGED
@@ -10,6 +10,7 @@ class TwitterScraper(object):
10
  input: user, from_date, to_date, num_tweets
11
  output: dict
12
  """
 
13
  def __init__(self, from_date="2022-07-01", to_date=str(date.today()), num_tweets=20):
14
  # TODO: add a check to make sure that the dates are in the correct format.
15
  # TODO: add a check to make sure that the number of tweets is a positive number.
@@ -67,7 +68,7 @@ class TwitterScraper(object):
67
  tweets_info = tweet_and_replies_info.drop(labels=indx_replies, axis=0)
68
  # drop removes the columns which its index specified by
69
  # indx_replies. axis=0 if we want to delete rows.
70
- #print(len(tweets['tweet']), " of them are Tweets")
71
  return tweets_info
72
 
73
  def __get_tweets__from_twint__(self):
@@ -95,6 +96,7 @@ class TwitterScraper(object):
95
  tweet_and_replies_inf = tweet_and_replies_inf[
96
  ["id", "tweet", "date", "user_id", "username", "urls", 'nlikes', 'nreplies', 'nretweets']]
97
  return tweet_and_replies_inf
 
98
  # def __check_date_type(d1,d2): if (type(d1) or type(d2)) is not type("str"): # If the type of ite date input
99
  # is not string it generates exception print("[!] Please make sure the date is a string in this format
100
  # \"yyyy-mm-dd\" ") raise EXCEPTION("Incorrect date type Exception!") elif (len(d1.split("-")) or len(d2.split(
@@ -104,11 +106,11 @@ class TwitterScraper(object):
104
  def __repr__(self):
105
  return "TwitterScraper(from_date={}, to_date={}, num_tweets={})".format(self.from_date, self.to_date,
106
  self.num_tweets)
107
- if __name__ == "__main__":
108
- sc = TwitterScraper(from_date="2022-05-01", to_date="2022-07-31", num_tweets=40)
109
- dc = sc.scrape_by_user("jimmieakesson")
110
- print(dc.head())
111
- print(dc.shape)
112
- print(dc.columns)
113
 
114
 
 
 
 
 
 
 
 
10
  input: user, from_date, to_date, num_tweets
11
  output: dict
12
  """
13
+
14
  def __init__(self, from_date="2022-07-01", to_date=str(date.today()), num_tweets=20):
15
  # TODO: add a check to make sure that the dates are in the correct format.
16
  # TODO: add a check to make sure that the number of tweets is a positive number.
 
68
  tweets_info = tweet_and_replies_info.drop(labels=indx_replies, axis=0)
69
  # drop removes the columns which its index specified by
70
  # indx_replies. axis=0 if we want to delete rows.
71
+ # print(len(tweets['tweet']), " of them are Tweets")
72
  return tweets_info
73
 
74
  def __get_tweets__from_twint__(self):
 
96
  tweet_and_replies_inf = tweet_and_replies_inf[
97
  ["id", "tweet", "date", "user_id", "username", "urls", 'nlikes', 'nreplies', 'nretweets']]
98
  return tweet_and_replies_inf
99
+
100
  # def __check_date_type(d1,d2): if (type(d1) or type(d2)) is not type("str"): # If the type of ite date input
101
  # is not string it generates exception print("[!] Please make sure the date is a string in this format
102
  # \"yyyy-mm-dd\" ") raise EXCEPTION("Incorrect date type Exception!") elif (len(d1.split("-")) or len(d2.split(
 
106
  def __repr__(self):
107
  return "TwitterScraper(from_date={}, to_date={}, num_tweets={})".format(self.from_date, self.to_date,
108
  self.num_tweets)
 
 
 
 
 
 
109
 
110
 
111
+ if __name__ == "__main__":
112
+ sc = TwitterScraper(from_date="2022-05-01", to_date="2022-07-31", num_tweets=40)
113
+ dc = sc.scrape_by_user("jimmieakesson")
114
+ print(dc.head())
115
+ print(dc.shape)
116
+ print(dc.columns)
twitterscraper/jimmieakesson.csv ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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