Swearing on Twitter: Harvesting and visualizing data

Steven Coats

6th SwiSca Symposium

May 23rd, 2019

Twitter texts are very rich in non-standard language, including swearing/profanity/vulgarities.

The can also contain information that can be useful in the context of linguistic analysis, such as location, language, user demographics, images, or other attributes.

We can collect tweets that contain profanities in English

In [305]:
all_df[all_df["text"].str.contains("fuck")][["user_screen_name","text","lang"]].iloc[0:100].reset_index(drop=True)
Out[305]:
user_screen_name text lang
0 mannisxngh @mashable Yea, I would never fuck with this if my child was in it. I’ll just inconvenience myself and use my hands thank. en
1 Glen51023001 @BMarshh Raiders... of all the other 31 teams, it had to be the raiders. Dead to me. Trying to stay respectful, but fuck the raiders. en
2 aerithrr This won't be my last breath You can't take my life away You're just a worthless good for nothing fuck! en
3 samhopexo Who gives a fuck? They gotta win it all or this Ayesha stuff is still in play period. 😂😂😂😂 en
4 _benboomin @cessioty @DadWorried @Independent What the fuck does the EU have to do with how much tax each country charges corporations? 😂 en
5 RealNormanOKGuy Ashleigh has just came to her makeup appointment drunk as fuck :))) I hate you @ashleighscott03 en
6 GeeBloor @a_kochav They were so fucking wasted, but they spontaneously decided to leave the train early, jesus has answered my prayers holy shit en
7 Horace_nicolas Look at this cunt. The cheek, hypocrisy, fucking word's failing me here my bloods boiling. The amount of people tha… https://t.co/jE2ejzL51z en
8 h2gkmogem @senatemajldr Go fuck your self en
9 Julia_KateL fuck my life en
10 d0mbizzle Georgia really said fuck women like what a fucking trash state. Men should not be decided such laws they have no gr… https://t.co/PC1jC0q3my en
11 axlbeats1 @GovMikeHuckabee @realDonaldTrump Oh, shut the fuck up, you phony, ignorant bastard. Sane people are just plain sick of you. en
12 Itsbabyrider How the fuck is Glenn Whelan STILL playing football? He had midfield battles with Graeme Souness for fuck sake. en
13 nezz_16 @awneyjr c qui rafael meme? fuck les hommes fr
14 WeefreemenYT Can wasps just like fuck off en
15 heroldtho @sameerpervez23 i love you holy fuck thank u i am going to try & follow ur words rn i gtg bye ily en
16 lundqvistludvig @ElegantHarm I will if you go fuck yourself too. en
17 _mobyy @Nature_and_Race The alternative idea would to fuck them preferably in the trades mans entrance and then never call… https://t.co/xdxrQjXf1A en
18 AlexandraSoto_ @flutterking17 Might fuck around and make a review of the weak competitor en
19 canna_kenz @KFCBarstool Kevin, this is rude. I’m hungover as fuck and now you lay this shit on me. en
20 AliviaKerr 3 of us got chased by about 12 blokes at villa when we were 18/19! So fuck the villa up the baggies en
21 BlackCloud1966 Silky didn’t know the words to TLC No Scrubs... even straight white dudes know the fucking lyrics to that song. What the fuck Ru??? en
22 ProgFrog57 Fucking mother bloody fuck bitch en
23 karnatiramu For fuck sake 😭😂 en
24 _benboomin ....... what the fuck en
25 AthenaNike4 @rmaniello If anyone bothers you about those opinions, fuck 'em. I have issues with the last season, some of that… https://t.co/2fvuw2NY38 en
26 RaymeCVinson I really need 1 whole day of sleep , fuck it make that 2 days!!! lol🥵💀 en
27 jaskie47 when his shoulders did that thingy what the fuck sir en
28 yennnnnnnyyy @h0llowmind What the fuck lmao en
29 Horace_nicolas Most times when you're fighting w/ things, its better to say fuck it & go to bed. #LimitsReached w/ Github and ssh… https://t.co/ITHtAlWqzF en
... ... ... ...
70 itzfama_c Might fuck around and get Resident Evil 0, 1 & 4 for the Switch. 😂😅 en
71 JoRackzOfficial fuck you en
72 lookforthatgirl @PR0DUCERJJK Jin is and always will be the best, fuck the haters ^_^ en
73 Sanborn2kTweets @chuck_dc @Alyssa_Milano I am for rapists and ppl who commit these crimes to be punished. So fuck you. en
74 Grahamthecabbie It be boring as fuck when I’m not talkin to the person I really want in my life en
75 _fredz10 can everyone shut the fuck up we all know that hoseok's REAL y/n is yoo/ngi smh en
76 oohshesegyptian 和弟弟 @WiingT 在梯間的運動 part 3完🙈 首次聯名活動 支持請給讚 以後繼續拍😳 #nude #dick #butt #hard #fuck https://t.co/2eEyYvlJwv zh
77 J_MCII fucking bitch en
78 cyievanillaaa @iamblackbear I’m so glad I got to see you live! You fucked shit up and I love you for that 💛💛 thanks for giving a great show bear en
79 GlennRo50884138 @Little_rampage @Slut_Sissy_Slut https://t.co/zFrutd4nHR #سكس #Sex #سكس_عربي  #محارم #fuck #xnxx #ديوث . und
80 DarkBonee617 Woohoo! Twitter limited my functions for telling someone to fuck off! en
81 Princes27277411 I’m like fuck it I ain’t ducking if its war its bussing 😤 en
82 seebastiann_ turns out i was selected to be a verified fan and i didn’t see it until now AFTER the tickets went on sale...fuck m… https://t.co/TA9tjmuxLF en
83 MrVreyes20 A fucking banana in an hour and country en
84 Glen51023001 @amirtaljabal Go fuck u en
85 jmoneyhunnnyy @hugmepez @Stray_Kids fucking adorable I am almost speechless en
86 ctoh27 @Cabletreader Avatar....5? The first one fucking blew why FIVE en
87 alandoingoez I would just like to know what in the fuck is going on en
88 TheCxdy @Smile_Semone But right now........Don’t know what I’m capable of might fuck around & go crazy on cuz en
89 _benboomin I love myself, and that’s all that matters. I can’t let people get to me, they just wanna see me down and unhappy. fuck y’all! en
90 PrettySnob_ @matednuku93 @coadebun94 #sex #سكس #سكس_جديد #سكس_خليجي #سكس_سعودي #صور_سكس #porn #fuck #anal #porn #جنس #سكسيه… https://t.co/FWpHFFi91w und
91 RaymeCVinson my nails look so fucking ugly i’m mad i cut them ✌🏿😑 en
92 jaskie47 if theres actually a Nova movie in works im fucking hyped en
93 Kjt200 Dios bendito. This is interesting as fuck. en
94 IriasEzard10 fuck what he thinks 😂 i’m still NOT going to talk to him tf en
95 igorcarddoso Can today just hurry the fuck up already please for fucks sake en
96 RealNormanOKGuy yessss just fuck my mental breakdown I guess 🤪 https://t.co/HbDsKkxw9f en
97 JuliusCurving I’m hustling bitch fuck y’all opinions you either like it or you don’t. But if you ain’t doing shit with ya life yo… https://t.co/vwRryp7IEy en
98 frankfallon41 graduation oh graduation, please fucking come sooner... thanks!😘 en
99 stahc5280 changkyun better fucking not dye his hair greek or i WILL loose my shit en

100 rows × 3 columns

Or in Swedish

In [307]:
all_df[(all_df["text"].str.contains("helvete")) & (all_df["lang"]=="sv")][["user_screen_name","text","lang"]].iloc[0:100].reset_index(drop=True)
Out[307]:
user_screen_name text lang
0 dagdave As if he has any says in it😂😂😂 fucking vänta tills din morsa brinner i helvetet horunge sv
1 JosephOpoyan helvete va många fula nya lådbyggnader det byggs i halmstad sv
2 karnatiramu ”Nu börjar vi ladda upp för hocky-VM” säger nån idiot på TV. Vi närmar oss midsommar, för i glödheta helvete! sv
3 h2gkmogem @SofieLowenmark För i helvete! 😡 sv
4 d0mbizzle @Ericson_ubbhult Hur i helvete kommer detta sluta när lågkonjunkturen slår till med full kraft? sv
5 Nicsboys2 Läge att öppna Restaurang i Västerås nu, helvete vad med Lilla och Mellanmenyer det kommer göras där kommande säsonger. sv
6 MvcNvmxdTro Fick precis en kniv i ryggen av kollega... helvete... he is going down!! sv
7 Adrionic3000 @DahlmanJohan @weimers @sdriks Då kan du betala för kaoset som blir . Heja Polen . Far åt helvete Sverige. sv
8 Metanoia_1984 @tesslindkvist men helvete charlotta vi har ju en tradition med en pinne på julafton säg det så avbokar hon dirr sv
9 nezz_16 Killkompis ”måste bli smal” till sommaren. Jag: Neeeeej för helvete. Du är perfekt! sv
10 LuagoNosLivros @holmas52 Fy fan i helvete. Det här måste väl folk ändå ha reagerat på redan då? sv
11 Princes27277411 @anderslindberg GDPR är ett helvete för småföretagare som inte utrymme för omställningen. Det ör en kostsam process… https://t.co/kpkIfDdtY9 sv
12 ProgFrog57 @AllsvFantasy Åt helvete sv
13 Princes27277411 RT @Real_Alex_Ander: Nästa debatt mellan S, C och SD kommer att handla om migration, säger @svtnyheter's programledare. Varför i helvete ti… sv
14 mannisxngh @kvartalet @staffandopping @wingborg Tror den riktiga demokratin skulle stärkas om vi slapp denna koloss till maffiaorganisation. Tur man inte tillhör kommunal och därigenom tvingas finansiera sossarna. Hur i hela helvete kan de dessutom "lova röster" till S inför varje val? ... sv
15 seebastiann_ RT @Real_Alex_Ander: Nästa debatt mellan S, C och SD kommer att handla om migration, säger @svtnyheter's programledare. Varför i helvete ti… sv
16 MrVreyes20 @Pourkomeylian Sämsta reaktionen någonsin på ett problem, att få panik. Vi kommer att göra mer skada än nytta med våran strävan att hålla klimatmålen, garanterat. Vi vet för lite om sakernas tillstånd för att effektivt göra något som faller ut väl. Det kommer gå åt helvete al... sv
17 karnatiramu @SamnyttSimon @Jeff_Ahl O helvete om man varit på olats sv
18 lauti_abraham @thevampireduke @mymlan Har sett avsnitt 4 och här kom en sak jag stör mig på. SPOILER! Varför i helvete skulle Daenerys-gänget flyttas så fort från katastrofen vid Dragonstone till att stå utanför King's Landings murar? Avsnittet borde ha slutat efter sjöslagsnederlaget. sv
19 Glen51023001 @annieloof Kan inte ens börja att föreställa mig vilket helvete den vita kränkta mannen i kombination med bot:ar och Trollarméer ställer till med i ditt flöde. Imponeras av er som orkar stå emot, varje dag. Heja! sv
20 aerithrr @dinlillafitta Vad i helvete vi sitter och pratar om matte 1b precis just nu sv
21 samhopexo RT @Tellevinken: Vad i helvete är detta🤬🤬🤬🤬 https://t.co/0XHLoIRSjZ sv
22 iamredfoxx Hur i helvete klarar muslimer och andra fasta? Jag har snart varit utan mat i 24 timmar, pga en koloskopi ska göras idag, och funderar på att mörda någon jävel sv
23 ctoh27 @chrwallg @Tiina_Liina Va i helvete? 😏 sv
24 TheCxdy @katjanouch Vad i helvete är Syrienåtervändare kan man undra? sv
25 _benboomin Efter flera samtal till Polismyndigheten är där fortfarande inte en käft som kan svara på varför i helvete man beslagtar en journalists telefon pga en film man lika gärna kan spara från nätet. sv
26 AthenaNike4 @anno1540 @SweMedic Jag kan till en viss del förstå att man vill stänga kärnkraften och gå till "grön el". Men för i helvete! Bygg upp alternativet innan du stänger ner nuvarande försörjning. Amatörer... sv
27 PrettySnob_ @EmmaCarlssonAIK Den enkla förklaringen är att jag missförstod vad du syftade på. My bad. Att du sen tweetar "mansplaining" isf att förklara att jag missförstått visar bara att jag hade rätt. Du är oförskämd. Nu kan du dra åt helvete. sv
28 RaymeCVinson RT @erixon_leif: INTERNATIONELLA KRYSSNINGSFARTYG LÅG I HAMN MED MOTORERNA PÅ TOMGÅNG I ÖVER 5000 timmar säger SVT I helvete heller dom det… sv
29 igorcarddoso @Flickalilla Som jag sa i en annan tråd om ramadan, idioti baserad på idioti. Hur i helvete kan det vara okej att inte ge växande barn tillräckligt med mat för att man hänvisar till en jävla saga. Sen ska vi inte gå in på vad jag tycker om just den aktuella sagan. sv
... ... ... ...
70 crubked @frida__os Hur i helvete hamnade vi ens här där siffror och ord skrivna på ett papper är det som ska guida och bestämma i allt fast vi vet att det finns problem med detta sätt ?! Vi bara nickar och mumlar att så står det, och årsbudget har vi ju HITTAT PÅ men den är viktig at... sv
71 mel___dub @Tellevinken Köra motorbåt utav bara helvete :) sv
72 courttownsendx @KalleSydwest @WTF35167412 @BernthH Det är väl ingen som blir straffad för sånt. Om nån butiksägare skulle våga anmäla så gör ju inte rättsväsendet ett skit och butiksägaren får ett helvete och måste lägga ned och fly landet sv
73 LeXhosaGuy RT @erixon_leif: INTERNATIONELLA KRYSSNINGSFARTYG LÅG I HAMN MED MOTORERNA PÅ TOMGÅNG I ÖVER 5000 timmar säger SVT I helvete heller dom det… sv
74 DayOneMillion @Nisse_Hoa @liberalerna @Centerpartiet @sthlmssossar @socialdemokrat Så de kom till Sverige med direktflyg och sökte asyl? Hur i helvete har de annars kunnat få röra sig genom hela Europa utan id-handlingar för att komma till oss som första asylland? sv
75 BFRmurr @OdehagPhilip Vad i helvete försöker människan ens säga? Jag känner mig lite dummare efter att ha läst det där... sv
76 Nithish__10 @missfunboard Skaffa då för helvete inte LinkedIn. "du har 15 nya kontaktförfrågningar". Har inte en enda kontaktförfrågan, men LinkedIn har däremot gett flera förslag på kontakter. sv
77 JoveyUchiha @Bongoberra @BWhalbergarvid Åt helvete har det redan gått. Inbördeskrig är enda chansen att kräva tillbaka vårt land. Men. Vi har ingen militär, inget försvar.... Jag hade hoppats på att nåt vettigare land, typ Ryssland hade ockuperat oss. Då hade vi varit trygga nu. sv
78 dmitch1018 INTERNATIONELLA KRYSSNINGSFARTYG LÅG I HAMN MED MOTORERNA PÅ TOMGÅNG I ÖVER 5000 timmar säger SVT I helvete heller dom det gjorde man kan INTE KÖRA en fartygsmotor på tomgång. Vad dom menar är fartygens ELVERK som krävs för att hålla fartyget med elström till dess funktioner sv
79 kendallrella_ @PatrikAngelholm @tangaberg2 @svtnyheter Nyheten är ju uppmärksammandet av detta. Hitta nåt annat att gnälla på för helvete. sv
80 Dajthekilla RT @Real_Alex_Ander: Nästa debatt mellan S, C och SD kommer att handla om migration, säger @svtnyheter's programledare. Varför i helvete ti… sv
81 RearrangeNewark Men vad i helvete. Avgå.Tillfälligt stopp för fläskkött vid Örebro universitetssjukhus efter muslimska påtryckningar https://t.co/LgVsA5skl8 sv
82 gpappianne @mjomark Ärtor? Vad i helvete sv
83 DnlHarith RT @Real_Alex_Ander: Nästa debatt mellan S, C och SD kommer att handla om migration, säger @svtnyheter's programledare. Varför i helvete ti… sv
84 teeser RT @FidelKassler: En duktig diplomat kan be en person att dra åt helvete och samtidigt få denne att se fram emot resan dit. sv
85 zeuty RT @Tellevinken: Vad i helvete är detta🤬🤬🤬🤬 https://t.co/0XHLoIRSjZ sv
86 Niakfx Vad i helvete är detta🤬🤬🤬🤬 https://t.co/0XHLoIRSjZ sv
87 julieacuzar11 LOVAR att tatueraren köttade över en nerv i armen igår för assså helvete vad ont jag har hahah sv
88 sarahpinks Dra åt helvete med bägge två och ta med din heder också. https://t.co/WzvU6XB6on sv
89 badrinabahtiar @svarpamindolma Slutaa🥺 de är du som är underbar o fin som in i helvete ❤️❤️ sv
90 lacedlex @alfverner @JohanForssell @johanssonmorgan Nej att vara icke muslim i många muslimska länder är verkligen en helvete, bara se hur många åsikter som förföljs Ja nu verkar musliska förföljelsen av judar ha kommit till Sverige också, oacceptabelt det som sker i malmö där man ... sv
91 iiwantnikki Hon är imorgon allt drar igång och helvete va laddad man är för att han färgat håret sv
92 _wemissROBERT Dessvärre är imorgon allt drar igång och helvete va laddad man vill höra på fredagar "Bärs finns i kylen" sv
93 Returnofthepac1 RT @Backmanland: Det är alltid svårt rent filosofiskt att avgöra när exakt man slutar vara förbannad över hur åt helvete den här säsongen g… sv
94 GaryTaylorlfc1 RT @RTvivel: Det är förstås bra att ni vaknat upp. Men ,varför i helvete lät ni Reinfeldts M hållas så länge? Vi kommer aldrig att kunna re… sv
95 sammie_minaj193 @aikfotboll Varför i helvete är det 300 fiskrensare här inne i kommentarerna? Visst, ni alla jobbar som fiskrensare och fiskare, så ni kanske behövde ett nytt drag till erat fiskande? 🤔 sv
96 666amyk666 helvete ♥︎ sv
97 Pfinn1969 Dra åt helvete vad usla vi är just nu. Helt okej bortafölje idag. Åk på DIF! God natt kamrater! sv
98 FRESHprnce23 Det är imorgon allt drar igång och helvete va laddad man är för att stanna. sv
99 HaizanAjide RT @Real_Alex_Ander: Nästa debatt mellan S, C och SD kommer att handla om migration, säger @svtnyheter's programledare. Varför i helvete ti… sv

100 rows × 3 columns

Using tweet metadata, we can also look at code-switched English profanities in Swedish texts, for example.

In [308]:
all_df["user_screen_name"] = json_normalize(all_df["user"])["screen_name"]

all_df[(all_df["text"].str.contains("fuck")) & (all_df["lang"]=="sv") & (all_df["retweeted_status"].isnull())][["user_screen_name","text","lang"]].reset_index(drop=True)
Out[308]:
user_screen_name text lang
0 _ciennadoll The fuck ?!?!? "För egen del föredrar jag rå och öppen rasism" sv
1 SammytheHoodlum @ouassim1122 fucking flemmli sv
2 Koirazon As if he has any says in it😂😂😂 fucking vänta tills din morsa brinner i helvetet horunge sv
3 lizannmm @turtleeatsfish HAHAHAHAHAHAHA fuck man du kommst mich sv
4 Afro_American86 @turtleeatsfish HAHAHAHAHAHAHA fuck man du killst mich sv
5 auto_explorer @kylienigger Sammanfattning av allt folk skrivit: en koreansk kpop grupp Man behöver inte gå in i folk för en fucking fråga sv
6 angelporterrr @dekusneakers Lana I fucking choked kajskdnfj sv
7 MinasNathan99 Hatar paradise hotel, alltså åt helvete med skiten. Är så fucking trött sv
8 maria_yicel jag: fuck jag vill inte hålla tal pappa: varför i helvete ska ni hålla tal för? är det nåt man ska behöva gör i dagens samhälle? vad är det för jävla dumheter? jag mår som min pappa sv
9 sabrisanchi Efter en riktig keff dag igår på CS så börjar denna härliga måndag med: Råkar köpa en fucking koffeinfri nocco när man har slaggat i 4h. Min hanldeare har försovit sig så in åt helvete så man får sitta på macken och vänta i 30min. GLAD JÄVLA MÅNDAG NU ÄR JAG SUR SOM FAN sv
10 BigOYanited @Unibet_Sverige Men dra åt helvete!! Jävla äckel bolag fuck er och hoppas ni fan går i konkurs :) sv
11 kaikasx @erikkayser Då är du mentalt bortkopplad från objektiv verklighet och är en del av problemet. Har du lyssnat på dessa individer ens? Brutit mot vilka godtyckliga regler? För helvete människa! Terrorister??? IS är terrorister. Inte fucking Alex Jones!!! sv
12 MMrssweet Chris blev otroligt känd i en ung ålder ( 15 i think?) och han var helt kaos efter deras relation liksom det fuckade honom rejält bland annat för the guilt över the pain han fick Rihanna att gå igenom. Han blev dömd efter det och hela hans liv gick åt helvete. sv
13 therese_rose_ Men för helvete. Don't fuck this up, Rafa https://t.co/qp1pFRzO2X sv
14 Leoopequeno Verkligen jävligt tråkigt hur vi satsar stenhårt på enbart lewa? Visst han är fan fenomenal men helvete så snubben försvinner i viktiga matcher. Hoppas verkligen pepe väljer att gå till oss. Han eller fucking dybala räcker sv
15 40sBrns vissa dagar kan jag känna att jag liksom är ~fin~ men fuck nej min hjärna ska börja jämföra mig med andra och därifrån går det åt helvete sv
16 magicbouba @danielcroona @ohnoesp Jag vill de ska på ett trovärdigt sätt förklara hur i helvete de ska kunna slåss mot 20.000 sellswords när de är 1,5 drake och typ 20 man kvar i Winterfell. Och ge mig fucking C-C-C-Clegane Bowl (get hype) sv
17 fckbluelivesbot Ryggen gör ont igen men det har varit trevligt med ett par relativt smärtfria veckor. Önskar inte en enda människa på jorden kronisk värk för jävlar helvete vad det fuckar med ens psyke sv
18 PiffWhiffle ”sTarKt aV diG aTt bE oM uRsÄkT” HAHAHSHQHHW VAD I HELVETE? Some of y’all är verkligen fucking bottom tier sv
19 oreochocolatee Alltså ordningsbetyg fuck me dra åt helvete alltså. Finns ingenting bra med det. Varför finns det så många politiker som inte lyssnar på lärarkåren (som vet bäst kring vad skolan behöver)?. sv
20 ThatSelenaTho Hade bazz mig själv ja e så fucking snygg helvete sv
21 Josh_H_6 @monkeyena I'm so fucking sorry for u helvete asså... :( sv
22 ayeembur Efter sju år av rent fucking helvete valde jag för en vecka sedan att äntligen söka hjälp för min depression och ett beroende. Jag har förstört så mycket av mitt liv, sårat så många, ljugit för så många, men framförallt behandlat mig själv som världens minsta människa. sv
23 mohamed_mislam @AlfvonDuring2 Många drar upp det där med tur...de kan fucka åt helvete....vi har jobbat hårt för det vi har..inget har ramlat från himlen....i kyla har hys byggts och folk har uppfunnit nya saker som kommit till världen,löpande band.(Att vi spelade under ww2 på två fronter ä... sv
24 ashiaaa____ @magnuslundinHV @AddesPlace Du @AddesPlace använder oftast for fuck's sake, det betyder "för i helvete lägg av", det är betydligt grövre svordom än "fa fan" faktiskt. Jag fattar fortfarande varför du inte går med i Facebook faktiskt, Twitter är exakt samma som Facebook. Då lä... sv
25 lilthrd @decetre Och min: Wow/Helvete/Holy fuck pms sv
26 NotPredicate Det finns två tweets just nu. 1. "Wow/Helvete/Holy fuck! GoT!" 2. "Wow/Helvete/Holy Fuck! Endgame!" sv
27 tofffffeeee Män ja varenda jävla en av er som inte känner en våldtäktsman som inte sett/hört något sexuellt övergrepp gjorda av någon i er närhet är antingen blinda eller så skiter ni i. Ni kan dra åt helvete. Eller ta fucking ansvar. sv
28 Sprklepowerr Skicka ut fucking Follow us ifrån AIK. Den jävla cirkusen kan dra åt helvete med! Kommer aldrig sponsra masaa töntar som stör verksamheten. Direkt till Karlberg med för teäning efter match. Kasta alla jävla återhämtningsben som dom postar på sociala medier. Bortskämda fittnyllen sv
29 QueenAnarchyy Poolfansen klagar på att bollen nästan var inne men alla verkar glömt att mane fucking missa friläget för helvete sv
30 ZachariasA5 @fustakx Helvete 🥴🤮 va fucking vidrigt. Plus jag klarar inte av vodka, kan inte ens shota det. Den nivån jani sv
31 CantuBoss23 Fan man blir så lack när vissa som har sociala medier uttrycker sina tröga jävla kommentarer med försök till fakta som är helt jävla fucking fel! ÅTMINSTONE KAN DU VARA PÅLÄST NÄR DU ARGUMENTERA ANNARS SKIT I DET! sv
32 angelica_sucks Riktigt jävla soft move av busschauffören att köra så fort den anslutande bussen stannar så att alla vi som skulle byta fick vänta en halvtimme i fucking Dalby sv

There are many metadata fields in each tweet

Tweets are delivered in JSON

JSON is a data serialization format that stands for JavaScript Object Notation

Originally intended to be part of the specifications for the JavaScript programming language, the format is language-independent

It is the most widely-used format for data transfer between servers and web browsers

Social media platforms give access to data in JSON format through their APIs ("Application Programming Interfaces")

The entities in JSON are attribute-value pairs

Attributes are strings, values are strings, numbers, boolean True or False, objects, null, or arrays of these elements

In [191]:
{"event": "SwiSca 6"}
Out[191]:
{'event': 'SwiSca 6'}
In [113]:
{"event": "SwiSca 6", "people": ["Kristy", "Steven", "Michael"]}
Out[113]:
{'event': 'SwiSca 6', 'people': ['Kristy', 'Steven', 'Michael']}
In [114]:
{"event": "SwiSca", "people": ["Kristy", "Steven", "Michael"], "day":1}
Out[114]:
{'event': 'SwiSca', 'people': ['Kristy', 'Steven', 'Michael'], 'day': 1}
In [115]:
{"event": "SwiSca", "people": ["Kristy", "Steven", "Michael"], "day":1,"presentation":True}
Out[115]:
{'event': 'SwiSca',
 'people': ['Kristy', 'Steven', 'Michael'],
 'day': 1,
 'presentation': True}

Our tweets are stored in files in which each line is a long json object with many attribute-value pairs

Let's look at a basic tweet

In [310]:
with open("/home/cloud-user/Documents/SwiSca_Workshop-master/SwiSca_Workshop-master/tweetdata/20190508/streamer.20190508-114530.json") as f:
    for x in f:
        tweet = json.loads(x)
        if  not "retweeted_status" in tweet:
            if tweet["user"]["description"] != None:
                print(json.dumps(tweet,indent = 4))
                break
            else:
                continue
    
{
    "created_at": "Wed May 08 08:45:25 +0000 2019",
    "id": 1126045428737351680,
    "id_str": "1126045428737351680",
    "text": "Now I've noticed another typo fuck this.",
    "source": "<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>",
    "truncated": false,
    "in_reply_to_status_id": 1126043886252638208,
    "in_reply_to_status_id_str": "1126043886252638208",
    "in_reply_to_user_id": 1254046026,
    "in_reply_to_user_id_str": "1254046026",
    "in_reply_to_screen_name": "ToshiXyrho",
    "user": {
        "id": 1254046026,
        "id_str": "1254046026",
        "name": "Toshi",
        "screen_name": "ToshiXyrho",
        "location": "County Durham, UK.",
        "url": null,
        "description": "31 | \ud83c\uddec\ud83c\udde7 | Nintendo Fan | Yoshi, but sometimes a Fox for my bae @ArtamisSnowpaw | He/They | Lefty | Uses an Auto-Blocker | Semi-NSFW | !!! No Under 18s !!! |",
        "translator_type": "none",
        "protected": false,
        "verified": false,
        "followers_count": 489,
        "friends_count": 441,
        "listed_count": 8,
        "favourites_count": 952,
        "statuses_count": 14211,
        "created_at": "Sat Mar 09 10:48:18 +0000 2013",
        "utc_offset": null,
        "time_zone": null,
        "geo_enabled": false,
        "lang": "en",
        "contributors_enabled": false,
        "is_translator": false,
        "profile_background_color": "000000",
        "profile_background_image_url": "http://abs.twimg.com/images/themes/theme15/bg.png",
        "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme15/bg.png",
        "profile_background_tile": false,
        "profile_link_color": "1B95E0",
        "profile_sidebar_border_color": "000000",
        "profile_sidebar_fill_color": "000000",
        "profile_text_color": "000000",
        "profile_use_background_image": false,
        "profile_image_url": "http://pbs.twimg.com/profile_images/1115899007040200705/DWxEeCMN_normal.jpg",
        "profile_image_url_https": "https://pbs.twimg.com/profile_images/1115899007040200705/DWxEeCMN_normal.jpg",
        "profile_banner_url": "https://pbs.twimg.com/profile_banners/1254046026/1554886029",
        "default_profile": false,
        "default_profile_image": false,
        "following": null,
        "follow_request_sent": null,
        "notifications": null
    },
    "geo": null,
    "coordinates": null,
    "place": null,
    "contributors": null,
    "is_quote_status": false,
    "quote_count": 0,
    "reply_count": 0,
    "retweet_count": 0,
    "favorite_count": 0,
    "entities": {
        "hashtags": [],
        "urls": [],
        "user_mentions": [],
        "symbols": []
    },
    "favorited": false,
    "retweeted": false,
    "filter_level": "low",
    "lang": "en",
    "timestamp_ms": "1557305125780"
}

There are many entities in every tweet, which, depending on our planned analysis, may or may not be interesting

The unique id of the tweet:

In [311]:
tweet["id"]
Out[311]:
1126045428737351680

The tweet text:

In [131]:
tweet["text"]
Out[131]:
"Now I've noticed another typo fuck this."

The language of the tweet:

In [132]:
tweet["lang"]
Out[132]:
'en'

The name of the user:

In [133]:
tweet["user"]["name"]
Out[133]:
'Toshi'

The screen name of the user (i.e. the "handle", prepended by @):

In [134]:
tweet["user"]["screen_name"]
Out[134]:
'ToshiXyrho'

The location of the user (i.e. the "home location"):

In [135]:
print(tweet["user"]["location"])
County Durham, UK.

Has the user appended a place object by clicking on the field when composing the text?

In [136]:
print(tweet["place"])
None

Did the user send exact latitude-longitude coordinates of the device location when the tweet was broadcast? (Need to have activated the option in the profile)

In [309]:
print(tweet["coordinates"])
None

The user's description of him/herself:

In [138]:
print(tweet["user"]["description"])
31 | 🇬🇧 | Nintendo Fan | Yoshi, but sometimes a Fox for my bae @ArtamisSnowpaw | He/They | Lefty | Uses an Auto-Blocker | Semi-NSFW | !!! No Under 18s !!! |

You may be able to extract demographic information from this field.

If the tweet has a link to "possibly sensitive" content (mostly links to porn):

In [140]:
print(tweet.get("possibly_sensitive"))
None

Whether or not a national government has decided that this tweet should not be visible in that country (usually due to a copyright violation, sometimes due to political censorship):

In [141]:
print(tweet["user"].get("withheld_in_countries"))
None

The user's profile image

user_image

Other tweet entities are usually not so important for an analysis

Whether or not the Twitter agent who downloaded these tweets (in this case, Steven Coats!) favorited this tweet:

In [139]:
tweet["favorited"]
Out[139]:
False

The background image for the tweet

user_image

There are many other fields! You get the idea.

JSON parsing

"Parsing" JSON is getting the fields of interest out of the tweet object

We are interested in the text

We may also be interested in the language and the location of the user

We could be interested in other fields as well

Maybe we are interested in the hashtags people use in tweets that contain profanity

In [145]:
from pandas.io.json import json_normalize
entities = json_normalize(all_df["entities"])

Here are the hashtags from some of our tweets that contain profanity

In [147]:
for i,x in entities.iterrows():
    if x["hashtags"]:
        print([y["text"] for y in x["hashtags"]])
        
['afterlife']
['VENGANZA']
['SoundCloud']
['MUFC']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['SorryNotSorry']
['SaveSomeFoYoMon']
['GetTheStrap']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['JohnWick3']
['SundownerKBC']
['SansaStark']
['BillionDollarLoser']
['verification', 'findom', 'efdp', 'FRTQ', 'BBR']
['lucifer']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['fuck']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['Salute']
['NoPremTitles']
['sex', 'porn', 'fuck', 'anal', 'porn']
['HappinessBeginsTour']
['TroyeSivanBKK2019']
['SAA2019']
['TrumpLies']
['notok']
['MUFC']
['sex', 'porn', 'fuck', 'anal', 'porn']
['lol']
['AlwaysBeAlert']
['COYS']
['adult', 'amateurporn', 'amazon', 'bondage', 'clip', 'film', 'fleshlight']
['EnoughIsEnough']
['GoT']
['kinklife']
['NeverBiden']
['DavidAttenborough']
['ForTheThrone']
['honeybutt', 'femboy', 'dildo', 'ass', 'bubblebutt']
['MetGala']
['bigtits', 'handjob', 'blowjob', 'fucking', 'sex']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['LastNightInSweden', 'Sweden']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['geenstijl']
['ThisMorning']
['LeadersDebate']
['AllOutAteneo']
['DemThrones', 'GameOfThrones']
['COYS']
['AllOutAteneo']
['AllOutAteneo']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['LuciferSeason4']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['AllOutAteneo']
['jakol', 'bagets', 'kantot', 'tripper']
['Bebestmyass']
['GoT']
['LeadersDebate']
['israel', 'armageddon', 'USSAbrahamLincoln']
['Lucifer', 'LuciferSeason4']
['BWFC']
['fucktrump', 'Drumpf', 'fucktrump', 'DonaldTrump', 'AntiTrump']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['hilariousmemes', 'memeedits', 'vinesthatkeepmefromendingitall', 'memes', 'dankmemes']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['xxx', 'xxxporn', 'xxxvideo', 'porn', 'pornvideo', 'sex', 'sexvideo', 'adult', 'adultporn', 'adultvideo', 'amateurporn']
['rt', 'follow', 'sugarbaby', 'sugardaddy', 'flymetoyou', 'girlfriend']
['RT']
['droptoyourkneesbitch']
['doobiesfordivock', 'ynwa']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['LeechPussyPoppnHoez']
['NHS', 'Cuts']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['Lucifer', 'LuciferSeason4']
['vaporugang']
['wednesdaywisdom']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['MetGala']
['horny', 'girls', 'snapme', 'nudes', 'snapchat', 'porn', 'pussy', 'xxx']
['SheWarnedUs', 'IListened']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['JerryNadler']
['IKESUXDICK', 'IKEEATSCRAYONS', 'piranhaplantisbetterthanfireemblem', 'FFE']
['sex', 'porn', 'fuck', 'anal', 'porn']
['LuciferSeason4']
['SayHerName', 'SandraBland']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['anal', 'analvideo', 'analsex', 'porn', 'pornvideo', 'xxx', 'xxxvideo', 'adult', 'adultporn', 'adultvideo']
['sex', 'porn', 'fuck', 'anal', 'porn']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['nsfr', 'nsfw']
['SpiderManFarFromHome']
['hot', 'single', 'sexy', 'sexxx', 'xxx', 'boys', 'boy', 'girl', 'girls', 'fuck', 'deutsch', 'german']
['pornstar']
['Lucifer', 'LuciferSeason4']
['lfc', 'ynwa', 'LIVBAR']
['XXX']
['shemale', 'bdsm']
['eileen_rose', 'amateur', 'anal', 'bigass', 'cam4']
['ValverdeOut', 'BartomeuOut', 'RakiticOut', 'CoutinhoOut']
['LOCKROMNEYUP', 'LOCKROMNEYUP', 'LOCKROMNEYUP']
['liverpool']
['findom']
['BITCOIN']
['CFC']
['ellaa91', 'amateur', 'anal', 'ass', 'bigtits']
['Teen', 'Porn', 'Young', 'LegalTeen']
['LuciferSeason4']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['ліверпуль']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['lucifer', 'luciferseason4']
['jeremykyle']
['auspol']
['JeremyKyle']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['clip', 'STRAPON']
['justsaying']
['bitters', 'smallclub']
['nzxt', 'ASUS_USA', 'ASUS_ROG', 'Corsair', 'MSIGAMING', 'ALIENWARE', 'HyperX']
['clip', 'TEACHERFETISH']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['thetazshow', 'RTG', 'overlikeroverjones']
['danaerys']
['Iran', 'VENEZUELA']
['Custer', 'SlipknoT']
['man']
['traitor']
['Riverdale']
['getleveintofuck']
['follow', 'horny', 'dm', 'nude', 'nudes', 'cumslut']
['virtuesignal']
['BDS', 'BoycottEurovision2019', 'FreePalestine']
['trump']
['JohnKellyIsNoHero']
['ChampionsCup', 'ChampionsLeagueFinal', 'LiverpoolBarcellona', 'LiverpoolBarca', 'Liverpool']
['RT', 'dm', 'nude', 'FREE']
['Trump', 'JerryFalwellJr']
['OddThingsToComplainAbout']
['candles']
['gayass', 'gayPorn', 'GaySex', 'Fucking', 'Bareback']
['AdultWork']
['whothefuckisyou']
['JAFTM']
['Brexit', 'EU']
['BillionDollarLoser']
['valverde']
['dailytweet']
['เลือกตั้ง62']
['young']
['TheRenaissanceReport']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal']
['GameofThrones']
['newonfolksy']
['BillionDollarLoser']
['IBelieveHer']
['MyMum']
['fincuck', 'findom', 'paypig']
['TrumpTaxes', 'TrumpIsAFraud']
['CumShot', 'CumBlast', 'BiCumShot', 'Cum', 'BateBro', 'BateOn']
['Latina', 'Deepthroat', 'Blowjob', 'Bottino', 'ChrisStreams', 'Culo']
['SDLive', 'WWE', 'SmackdownLive']
['BillionDollarLoser']
['UberStrike']
['IGCSEHistory']
['LGB', 'Stlblues', 'StanleyCup']
['Barr']
['TLP']
['AllOutAteneo']
['XLM']
['Xavi', 'Cule', 'valverdedimissio']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['AvalancheTheArchitect', 'bodybuildermusic']
['NRGAMShow']
['AllOutAteneo']
['AllOutAteneo']
['VALVERDE']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal']
['Thismorning']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['MyTwitterAnniversary']
['nsfw', 'amateur', 'orgasm', 'wet', 'fucking', 'horny', 'pussy', 'sex']
['fucking', 'sex', 'hot']
['ThisMorning']
['UAAPSeason81Volleyball']
['AllOutAteneo']
['LeadersDebate']
['BB21']
['bcafc']
['AllOutAteneo']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['VRAINS']
['horny', 'sexchat', 'fuck', 'cock', 'hard']
['masterchefau']
['UAAPSeason81Volleyball']
['JOHNNYinCHICAGO']
['MyTwitterAnniversary']
['LeadersDebate']
['raining']
['控えめなおっぱい大好きな人RT', '控えめなおっぱい大好きな人RT', '貧乳は芸術']
['AllOutAteneo']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['AusVotes']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['AllOutAteneo']
['AllOutAteneo']
['SQAenglish', 'higherenglish']
['MVSales']
['BabySussex']
['Days']
['MTVLAKPOPREDVELVET', 'PremiosMTVMIAW', 'RedVelvet']
['BoycottIDCbyEdSheeranAndJustinBieber']
['PS4share', 'DBD', 'デッドバイデイライト']
['cashiers', 'store', 'freeuse', 'erotica', 'freewithpurchase']
['BillionDollarLoser', 'impeachment', 'ImpeachBarr']
['sex', 'video', 'porn', 'xxx', '3x']
['UnfollowManchesterUnited']
['TrumpPutinAlliance', 'MARINESagainstTrump', 'VeteransAgainstTrump']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['crimeminister']
['MVSales', 'ManyVids']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['delicious']
['GaryVee309']
['BringBackTom']
['gameofthrones']
['ShallmeansSHALL']
['maga']
['KerryVsTheDWP']
['sex', 'porn', 'fuck', 'anal', 'porn']
['BillionDollarLoser']
['True2theGame']
['LGM']
['DC', 'Seattle', 'Arizona', 'chicago', 'NY', 'Vegas']
['ausvotes', 'leadersdebate']
['payme', 'fucking']
['よく使う言葉から人間性が見えてくる']
['curiouscat']
['AllOutAteneo', 'Finals']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['NintendoSwitch']
['Leadersdebate']
['SophyDiva', '22yearsold']
['GrowSouthAfrica']
['LIVBAR', 'REMONTADA', 'PSG']
['AndersonOut', 'ConmanKen', 'NoKenDo']
['AllOutAteneo']
['britbox']
['art']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس']
['Same']
['MAGA']
['TwitterPromises']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['LeadersDebate']
['clip', 'ODDINSERTIONS']
['BiggestLoser', 'FakeBillionaireSaysWhat']
['TrumpLies']
['aoc']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['chipcruncher', 'hateit', 'myears', 'iCANNOTtoday']
['StrikeUberLyft']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس']
['bestoftoday']
['naruto', 'hentai', 'jav', 'bugil', 'toket', 'tocil', 'ngentot', 'ngewe', 'memek', 'kontol']
['SAVESHADOWHUNTERS']
['IAAF']
['FearTheDeer']
['dntkillthemessanger']
['DavidAttenborough']
['SoundCloud', 'np']
['dndschool']
['JKatana']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['Nairobirahagirls', 'kenyanpussy', 'pussy', 'clit', 'nudes', 'boobs', 'escort']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['triggered']
['BillionDollarLoser']
['ados']
['BasketOfDeplorables']
['nipple', 'lips', 'neuken', 'nudism', 'pijpen', 'geil', 'tits', 'ass', 'horny', 'nudes', 'dm', 'cumtribute', 'nsfw', 'nude', 'porn', 'pussy']
['BillionDollarLoser']
['RandomAssHastag']
['nipple', 'lips', 'neuken', 'nudism', 'pijpen', 'geil', 'tits', 'ass', 'horny', 'nudes', 'dm', 'cumtribute', 'nsfw', 'nude', 'porn', 'pussy']
['thatshot', 'blowjob', 'throatbarrier']
['CarolCity', 'RipTre']
['blackteen']
['TrumpRussia', 'TrumpLiesEverytimeHeSpeaks', 'BiggestLoserTrump']
['Lucifer', 'LuciferSeason4']
['JPBetterThanRema']
['Canada']
['nipple', 'lips', 'neuken', 'nudism', 'pijpen', 'geil', 'tits', 'ass', 'horny', 'nudes', 'dm', 'cumtribute', 'nsfw', 'nude', 'porn', 'pussy']
['NinaBot']
['BigCock', 'bigass', 'black', 'bubblebutt', 'musclee']
['BigCock', 'assfuck', 'assfucking', 'bigcock', 'teens']
['COYS']
['SPNSummer2019']
['GameOfThrones']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['fucktrump']
['gameofthrones']
['Lucifer', 'LuciferSeason4']
['BillionDollarLoser', 'TrumpTapes']
['AusVotes2019', 'DicksonVotes']
['period', 'facts']
['BDS', 'BoycottEurovision2019']
['HumpDay']
['GiveWWEWomenAChance']
['FF', 'tac', 'tacamateurs', 'mature', 'milf', 'twitter', 'money', 'fun', 'adult', 'fuck', 'pussy']
['PoliticsLive', 'PMQs']
['FreeSchoolMeals']
['jmbartomeu_dog']
['chloeamour']
['SDLive', 'WWE', 'SmackdownLive']
['relationship', 'fuck', 'boobs', 'tits', 'hangout', 'hookup']
['HomeandAway']
['bbcslut']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس']
['Teen', 'Porn', 'Young', 'LegalTeen', 'SexyTeen', 'HotTeen']
['eerieindiana', 'bringbackeerie']
['cannabis', 'pharmafree']
['LuciferSeason4', 'Lucifer']
['BillionDollarLoser']
['horny', 'boobs', 'tits']
['BillionDollarLoser']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['milf', 'hotmom', 'hornymilf']
['lrt']
['gay', 'LGBT']
['Texas']
['spoilers', 'CORRIE', 'EMMERDALE']
['BillionDollarLoser']
['McGahn', 'Mueller']
['GameofThrones']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['ReleaseTheSnyderCut', 'TheGodsDeserveBetter']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['PutinsPuppet']
['dating']
['Amateur', 'Teen', 'HD']
['GOT']
['LuciferSeason4', 'Lucifer']
['19honeysuckle', 'ass', 'bigass', 'dildo']
['hairypussy', 'xxx', 'xxxporn', 'xxxvideo', 'porn', 'pornvideo', 'adult', 'adultporn']
['MetBall2019']
['AdultWork']
['fpr']
['endgame']
['iontheprize']
['ContemptOfCongress']
['Dante', 'Bot']
['dating']
['50cent', '50cent_shuted_down_smart_aleck']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['ExecutivePrivilege']
['pornhub']
['MetGala']
['stlblues']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['booty', 'roleplay', 'fuck', 'slut']
['KanganaRanaut', 'HrithikRoshan']
['LuciferNetflix']
['taurusszn']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn']
['RT']
['RT']
['RT']
['RT']
['RT']
['prodiseaseGOP']
['PS4share']
['Shemale', 'lovely', 'hot', 'fuck', 'porn', 'sissy', 'femboy']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['nn1998playlist', 'np', 'SoundCloud']
['Endgame']
['nowplaying', 'onkyo', 'hfplayer']
['FatFuckTrump']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['voitures']
['BITCOIN']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه', 'افلام_سك']
['cdnpoli', 'onpoli']
['GoogleIO2019', 'Pixel', 'Android']
['LHHATL']
['indian', 'bhabhi', 'hot', 'cute', 'sexy', 'nude', 'boobs', 'pussy', 'ass', 'striper', 'porn', 'nipple']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['AndyBlackComeToUkraine']
['lfc', 'ynwa', 'LIVBAR']
['lucifer']
['DavidAttenborough']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['BillionDollarLoser']
['horny', 'boobs', 'tits', 'pussy', 'porn', 'amateurporn', 'nsfw', 'cumslut']
['HappinessBeginsTour']
['hurt']
['writingcommmunity']
['TICKETMASTER']
['Game5']
['amwriting', 'blog', 'SPIRITUAL']
['MK8D', 'NintendoSwitch']
['FuckLilWayne', 'FuckHisVoice']
['BitchIsYouStupid', 'Logic']
['AEWDON', 'AEW', 'ALLELITEWRESTLING']
['MinecraftMemories', 'MinecraftWorld']
['ImpeachTrump']
['StarWars']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['ChickenBURGER']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['BillionDollarLoserDonald']
['PremiosMTVMiaw', 'MTVLAICONOCALLEYPOCHE']
['Generalstrike']
['slut', 'HumpDayMotivation', 'anal', 'AssWednesday', 'ass']
['SeanMaygers']
['bwfc']
['IAAF']
['hornyaf', 'sluts', 'whore', 'fuck', 'dmme', 'pussy', 'tits', 'ass', 'anal', 'cumslut', 'cumwhore']
['TrumpTaxReturns']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['Championsleague']
['SalentoCoffee', 'ilovewpb']
['MeghanMarkle']
['MOODALL2K19']
['petite', 'fuck', 'underwear', 'lingerie', 'boobs', 'asian', 'teen', 'tight', 'young']
['givemestrength']
['unfollowManUnited']
['unfollowmanunited']
['horny', 'boobs', 'tits', 'pussy', 'porn', 'amateurporn', 'nsfw', 'cumslut']
['NCFC']
['laborfail', 'LaborHypocrisy', 'auspol', 'ausmedia', 'ausmediafail']
['XsěGoVote', 'SADecides2019', 'SAElections2019']
['MetaGala']
['liverpool']
['JIMIN']
['schoolgirl', 'cumslut', 'cockslut', 'slut', 'cumwhore']
['SquiggyBot']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['StudioCat']
['OHIO']
['tentabulge', 'eribot']
['rt']
['浦島坂田船', 'crew']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['Adult']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['MichaelBot']
['nzlabourbushpig']
['gcse2019']
['jeremykyle']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal']
['WTF']
['LIVBAR']
['YNWA', 'theboys']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['Teen', 'Porn', 'Young', 'LegalTeen', 'SexyTeen', 'HotTeen']
['RobertMueller']
['RAW']
['thatshot', 'blowjob', 'throatbarrier']
['MyMum']
['BILLIONDOLLARLOSER']
['recovery']
['milf', 'xxx', 'premiumsnapchat', 'nudesforsale', 'camgirl', 'nudesnap', 'cybersex', 'porn', 'sex']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه', 'افلام_سك']
['Fortnite', 'Respect']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['bbc', 'bigblackcock', 'bigblackdick', 'cumtribute', 'cocktribute', 'wanktribute']
['BigMoodForTheDay']
['LockMnuchinUp']
['danaerys']
['FailedAdGuy']
['stop']
['sex', 'freesex', 'girls', 'horny', 'boobs', 'tits', 'pussy', 'porn', 'amateurporn', 'nsfw']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['findom']
['voitures']
['wato', 'RemainBacklash', 'PeoplesVote', 'BrexitIsPersonal']
['WhoLosesABillionDollars']
['BillionDollarLoser']
['lucifer']
['Preach']
['bleu', 'DragibusTwitterPack']
['Babe', 'Bbw', 'Bigtits', 'Booty', 'Chubby', 'Fat', 'Nsfw', 'Porn', 'Sex', 'Sexy', 'Ssbbw', 'Thick']
['FFBE', 'Viendez']
['iostoconmila', 'GF16']
['blessed', 'WebCamModel', 'WednesdayMotivation', 'wank', 'WednesdayWisdom', 'WednesdayThoughts']
['notaroyalisteither']
['Blink']
['lawtwitter']
['TheFlash']
['THESEHOESAINTLOYAL']
['wtf']
['etsy']
['Lucifer', 'Luciferseason4']
['relationship', 'fuck', 'boobs', 'tits', 'hangout', 'hookup', 'meetup', 'date']
['RT']
['snapme', 'fuck', 'snapme']
['Lucifer', 'Luciferseason4']
['NoFascistsInLiverpool']
['mentalhealth', 'lifestyleblogger', 'selflove']
['LoveTheGame', 'HappierWorking']
['fuck', 'anal', 'asian', 'babe', 'dick', 'ass', 'nude']
['findom']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck']
['YNWA']
['TheFarewellMovie', 'TheFarewell']
['荒野行動', 'ガソリンfuck', 'フレンド若干募集中']
['nodirt_lv', 'growwarslasvegas']
['samanthamarkle']
['findom']
['PS4share']
['relationship', 'fuck', 'boobs', 'tits', 'hangout', 'hookup', 'meetup', 'date']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه', 'افلام_سك']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس']
['findom', 'fendom', 'paypig', 'paypigswanted', 'domme']
['MAGA']
['おっぱい', '自撮り', 'エロ垢']
['dutton', 'pilkington']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['3Racha', 'BangChan']
['MyMum']
['GE14']
['NaomiBot']
['Lucifer']
['FuckTrump']
['shmoney', 'mood']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn', 'جنس', 'سكسيه']
['BillionDollarLoser']
['WeThePeople']
['BeforeWeHadCellPhones']
['CommunityRelations', 'GoodCop', 'GotEm']
['cantdeal']
['porn', 'free']
['Hollande']
['Lucifer', 'LuciferSeason4']
['buffalove', 'CityOfGoodNeighbors']
['SorryNotSorry']
['HappinessBeginsTour']
['flexible_baby', 'adult', 'amateur', 'anal', 'bigass', 'camshow', 'camsoda']
['sex', 'سكس', 'سكس_جديد', 'سكس_خليجي', 'سكس_سعودي', 'صور_سكس', 'porn', 'fuck', 'anal', 'porn']
['F45', 'WorstPresidentEver']
['Ifkgbg']
['Ässät', 'Lukko', 'Liiga']
['regjering']
['ILO169']
['sldk', '1div']
['FOOLIES']
['AwholeNewWorld']
['PremiosMTVMIAW', 'MTVLAPAREJAJULIANTINA', 'MTVLAFANDOMJULIANTINAFANS']
['Pennywise']
['คําด่าที่ไม่มีคําหยาบ']
['BloodFreshSupply']
['蔡英文', '民進黨']
['COYS', 'THFC', 'TTID', 'AJATOT', 'Yiddos']
['Watchmen', 'HBO']
['OlesAtTheWheel']
['NowPlaying', 'IndieArtists', 'TMVCafe']
['سكس', 'Sex', 'سكس_عربي', 'محارم', 'fuck', 'xnxx', 'ديوث']

What images are in swearing tweets? Let's look a random selection of 10 tweets that contain images and have the word "fuck" in the text.

For this presentation, we are filtering out the "possibly_sensitive" tweets!

In [355]:
from IPython.display import Image, display

all_df_noporn = all_df[(all_df["possibly_sensitive"] == False) & (all_df["text"].str.contains("fuck"))]
for i,z in all_df_noporn[all_df_noporn["extended_entities"].notnull()].sample(n=10).iterrows():
    try:
        x = z["extended_entities"]
        for y in x["media"]:
            try:
                img = Image(y["media_url"])
                print(z["text"])
                display(img)
            except:
                continue
            
    except:
        continue
What a fucking night... Up the Fucking Reds 🔴 https://t.co/9paemDjQkd
I was debating on skipping the test this morning and the moment I said “fuck it” I got this text &lt;3 https://t.co/kpiYD6GAuS
it’s fucking freezing why’d i ask nini for an iced capp https://t.co/BxMY1P47a3
why can’t I fucking purchase Jonas brothers tickets @Ticketmaster https://t.co/JrfjGqbhgO
I speak for the trees, and the trees say shut the fuck up https://t.co/wGY8Dvm8KV
@jonasbrothers @joejonas @nickjonas @kevinjonas what the actual fuck https://t.co/titJxvDLWg
give this bitch her well deserved solo dance performance you cowards she’s the fucking main dancer of the group https://t.co/h9E1YHTPDQ
This song fucking slaps 👏👏 https://t.co/T3VrUJcSff
so fucking wholesome I can’t take it https://t.co/NlBqceVY6w
y'all lucifer's out na pero mag iipon muna ako ng mga eps so don't fucking spoil, thx😈 https://t.co/4BVbgHq1IO

Retweets, quotes, and replies

  • Retweets: retweeting someone else's tweet
  • Quote: including someone elses's tweet, but adding your own text
  • Reply: directing a tweet to someone by using @username

These three tweet types have specific metadata we can utilize to include or filter them

In many studies (language/linguistics), researchers have chosen to filter out retweets and quotes

  • Do not represent "genuine" discourse in the same way as an original tweet?

A few Scripts!

These basic scripts should automate the process of tweet collection from the Streaming API and the REST API.

  • The Streaming API pushes tweets in real time as they are published. We have default access to up to 1% of them.

  • The REST API searches for all tweets matching our criteria published in the last 7 days.

SwiSca_script.py gets tweets from the Streaming API.

Twarc gets tweets from the REST API.

SwiSca_vis.py makes a map of tweets that have geographical metadata.

SwiSca_text.py makes a csv of tweets containing words of interest.

Let's get some tweets with the scripts!

Thanks for listening!