Twitter for Public Surveys Experiments

This is what we have for the experiments to decide which approach:

['الفساد, الصحة, اللإسكان, البطالة, الضرائب, البنزين, التعليم, الضمان, الترفيه, السعودة']

Conditions:
--- 1000-6000 Followers
--- location: list of Saudi cities (both in AR,EN)
--- No noise: fake followers, paid accounts and Ads

Experiment 1 : Collect

Experiment 2 : Stream

Experiment 3 : Search

Results summary:

Experiment 1 : Collect - is the best in eliminating noise, if time is of no essence to get the tweets mentioning the keywords list then this is the best option.

Experiment 2 : Stream - for general topic priorities, can be performed once a month.

Experiment 3 : Search - if sentiments is needed on topics within a specific keyword with a moderate noise elimination, this option is the best.

Experiment 1 : Collect

Step 1. Choose main sample poll accounts:

@hashKSA
@saudinews50
@ajelnews24
@alwatanNews24
@akhbaar24
@ksasociety
@3ajel_ksa
@saudi2society
@sparegions

Step 2. Get the last 5000 followers from each account:

---------- AJELNEWS24-FOLLOWERS.TXT: 5001
---------- 3AJEL_KSA-FOLLOWERS.TXT: 5003
---------- AKHBAAR24-FOLLOWERS.TXT: 5000
---------- ALWATANNEWS24-FOLLOWERS.TXT: 4999
---------- HASHKSA-FOLLOWERS.TXT: 5000
---------- KSASOCIETY-FOLLOWERS.TXT: 4999
---------- SAUDI2SOCIETY-FOLLOWERS.TXT: 5004
---------- SAUDINEWS50-FOLLOWERS.TXT: 5002
---------- SPAREGIONS-FOLLOWERS.TXT: 5002

---------- Total: 45010 followers

Step 3. Get common followers between accounts and look for abnormalities:

---------- Combinations equation:
---------- Cr = n! / r! (n - r)!
---------- Cr= 9! / 2! (9-2)!
---------- Cr= 362880 / 2 (5040) =  36

Step 4. Get Numbers of common followers from Step 3 (36 possibilities)

---------- 3AJEL_AJELNEWS24.TXT: 13
---------- 3AJEL_AKHBAAR24.TXT: 82
---------- 3AJEL_ALWATANNEWS24.TXT: 222
---------- 3AJEL_HASHKSA.TXT: 20
---------- 3AJEL_KSASOCIETY.TXT: 307
---------- 3AJEL_SAUDI2SOCIETY.TXT: 51
---------- 3AJEL_SAUDINEWS50.TXT: 10
---------- 3AJEL_SPAREGIONS.TXT: 14
---------- AJELNEWS24_AKHBAAR24.TXT: 394
---------- AJELNEWS24_ALWATANNEWS24.TXT: 57
---------- AJELNEWS24_HASHKSA.TXT: 1338
---------- AJELNEWS24_KSASOCIETY.TXT: 86
---------- AJELNEWS24_SAUDI2SOCIETY.TXT: 1
---------- AJELNEWS24_SAUDINEWS50.TXT: 1335
---------- AJELNEWS24_SPAREGIONS.TXT: 464
---------- AKHBAAR24_ALWATANNEWS24.TXT: 254
---------- AKHBAAR24_HASHKSA.TXT: 707
---------- AKHBAAR24_KSASOCIETY.TXT: 454
---------- AKHBAAR24_SAUDI2SOCIETY.TXT: 1
---------- AKHBAAR24_SAUDINEWS50.TXT: 221
---------- AKHBAAR24_SPAREGIONS.TXT: 210
---------- ALWATANNEWS24_HASHKSA.TXT: 76
---------- ALWATANNEWS24_KSASOCIETY.TXT: 837
---------- ALWATANNEWS24_SAUDI2SOCIETY.TXT: 11
---------- ALWATANNEWS24_SAUDINEWS50.TXT: 19
---------- ALWATANNEWS24_SPAREGIONS.TXT: 26
---------- HASHKSA_KSASOCIETY.TXT: 115
---------- HASHKSA_SAUDI2SOCIETY.TXT: 2
---------- HASHKSA_SAUDINEWS50.TXT: 690
---------- HASHKSA_SPAREGIONS.TXT: 521
---------- KSASOCIETY_SAUDI2SOCIETY.TXT: 13
---------- KSASOCIETY_SAUDINEWS50.TXT: 43
---------- KSASOCIETY_SPAREGIONS.TXT: 45
---------- SAUDI2SOCIETY_SAUDINEWS50.TXT: 0
---------- SAUDI2SOCIETY_SPAREGIONS.TXT: 0
---------- SAUDINEWS50_SPAREGIONS.TXT: 292

Step 5. Analyze poll accounts for abnormalities :

Get accounts followers age
Get retweets hops

AJELNEWS24_HASHKSA have 1338 common followers out of 5000 (26.76%) AJELNEWS24_SAUDINEWS50 have 1335 common followers out of 5000 26.7%)

If you want to make sure the accounts are good candidates for followers:
Do Full Analysis: SAUDINEWS50 AJELNEWS24

Step 6. Combine followers accounts into one file from Step 2

Step 7. Remove bio data, Arabic text, emojis etc. from Step 6

Step 8. Remove duplicates accounts from Step 7

Step 9. Count Summary:

------ Number of accounts from step 6: AllFollowers.txt:   45010 Accounts
------ Number of accounts from step 8: C2ALLFOLLOWERS.TXT: 38329 Accounts

------ 45010 (Step 7) - 38329 (Step 8) = 6681 duplicate accounts found

Step 10. Get basic info from the 38329 accounts from Step 8:

---------- User Screen Name
---------- User Location
---------- User Tweets Count
---------- User Followers Count
---------- User Friends Count
---------- User Account Created Date

Result:  Followers_STATS.csv

Step 11. Filter according to your criteria from Step 10, example:

-------- Pick only accounts with 1000-6000 Followers
-------- Pick only location information displayed 
-------- location: Saudi Arabia, list of Saudi cities (both in AR,EN)

352 accounts that met the criteria from Step 11
Final_07_03_2022.pdf      Final_07_03_2022.xlsx 

Step 12. Then follow accounts in Final_07_03_2022.xlsx for keywords:

 ['الفساد, الصحة, اللإسكان, البطالة, الضرائب, البنزين, التعليم, الضمان, الترفيه, السعودة']
Time: The question when the random sample will talk about the keywords?

Step 13. Consider concentration: sample poll accounts based on a keyword:‘التعليم’

@mo3lmi
@MOE_EPR
@moe_gov_sa
@MOE_HFB
@MOE_HHL
@MOE_JDH
@MOE_MHC
@MOE_NJR
@moe_qsm
@MOE_RYH
@MOE_TIF
@rt_teachers
@Saudi_Teachers

Experiment 2 : Stream

Step 1. Stream Live Tweets for two days:

Streaming from 3/9/2022 10:22:12 PM to 3/11/2022 8:29:02 PM

-------- Pick only location information displayed
-------- location: Saudi Arabia, list of Saudi cities (both in AR,EN)

Keywords: ['الفساد, الصحة, اللإسكان, البطالة, الضرائب, البنزين, التعليم, الضمان, الترفيه, السعودة']

Tweets count: 97885, TW_Location_Saudi_Arabia.xlsx

Step 2. Remove from Arabic text: Arabic list and emojis List etc. from Step 1

Step3. Get words frequencies:

[('الصحة', 6307), ('التعليم', 4846), ('وزارة', 2764), ('الضمان', 2587), ('العمل', 1732), ('البنزين', 1443), ('الحمد', 1112), ('الاجتماعي', 986), ('النادي', 866), ('خاص', 840), ('الخير', 781), ('الفساد', 780), ('تصفير', 749), ('بالرياض', 728), ('مدير', 718), ('بسب', 715), ('مفصوله', 708), ('التواصل', 706), ('دخل', 670), ('وزير', 639), ('يساوي', 629), ('يدركها', 626), ('فليحمد', 626), ('تكفون', 624), ('أسعار', 603), ('فتح', 583), ('نظام', 575), ('حافز', 574), ('وقت', 562), ('لاشيء', 549), ('وظائف', 534), ('العامة', 533), ('الدراسي', 529), ('نور', 526), ('تصميم', 526), ('تقديم', 523), ('سدادها', 518), ('الحر', 515), ('ارتفاع', 508), ('محطات', 501), ('واتساب', 493), ('تسجيل', 491), ('وظايف', 490), ('المرور', 485), ('اسنانك', 483), ('فالحكومي', 483), ('الفصل', 476), ('رب', 476), ('ورزق', 469), ('دعم', 468), ('شكرا', 463), ('طاقات', 463), ('الكليات', 461), ('الجامعات', 456), ('العظيم', 453), ('التسجيل', 453), ('الطوابير', 451), ('ريف', 449), ('تمهير', 448), ('قياس', 435), ('نقل', 434), ('البنوك', 433), ('عالج', 431), ('الكترونية', 428), ('أبشر', 424), ('التعليمية', 419), ('الرياض', 419), ('السعودية', 418), ('حسابات', 417), ('تغير', 414), ('نقدم', 412), ('هروب', 411), ('المحزن', 409), ('فاتورة', 409), ('التجارة', 408), ('الجوازات', 400), ('العدل', 398), ('البطالة', 396), ('العالمية', 395), ('اتصال', 393), ('التعقيب', 391), ('والقروض', 391), ('السعودي', 389), ('بلاغ', 389), ('وثيقه', 388), ('مدنية', 386), ('والتسجيل', 382), ('منظمة', 379), ('وانشاء', 378), ('بنكية', 378), ('عسكريةقطاع', 377), ('جدارةساند', 376), ('الضرائب', 373), ('الطلاب', 370), ('مباشرة', 365), ('المال', 362), ('الأمريكية', 354), ('شاهد', 345), ('الغة', 343), ('لحظة', 341)]

Step 4. Visualize words frequencies

Step 5. Filter based on conditions:

From 3/9/2022 10:22:12 PM To 3/11/2022 8:29:02 PM

-------- Pick only accounts with 1000-6000 Followers
-------- Pick only location information displayed
-------- location: Saudi Arabia, list of Saudi cities (both in AR,EN) 

Keywords: ['الفساد, الصحة, اللإسكان, البطالة, الضرائب, البنزين, التعليم, الضمان, الترفيه, السعودة'] 

Tweets count: 4821, 1000-6000.xlsx

Step 6.  Remove from Arabic text: Arabic list and emojis List etc. from Step 5

Step 7. Get words frequencies:

[('الصحة', 1483), ('التعليم', 914), ('الضمان', 598), ('مفصوله', 347), ('البنزين', 324), ('الخير', 286), ('تكفون', 281), ('سدادها', 235), ('رب', 222), ('الفساد', 210), ('وزارة', 189), ('فاتورة', 188), ('صعبه', 173), ('أهل', 168), ('الاجتماعي', 167), ('نت', 166), ('الحمد', 148), ('الكهرباء', 147), ('تراكم', 143), ('معسر', 141), ('صعبة', 141), ('العافية', 139), ('أسرة', 139), ('يناشدكم', 138), ('ظروفه', 138), ('المعشية', 138), ('الديون', 138), ('يناشد', 138), ('بمساعدته', 138), ('العمل', 137), ('مكتب', 133), ('وتفريج', 131), ('أسعار', 127), ('وهم', 127), ('الفزعه', 125), ('نسترجع', 124), ('بالسن', 123), ('مدير', 122), ('لعائله', 120), ('ضروفهم', 120), ('لايستطيعون', 120), ('حاجتها', 120), ('يساوي', 119), ('وزير', 119), ('كبيره', 119), ('يدركها', 118), ('فليحمد', 118), ('شهرين', 116), ('ويطلبون', 115), ('ورزق', 111), ('الخاص', 110), ('لاشيء', 107), ('نظام', 106), ('مطلقه', 106), ('الجمعة', 103), ('نور', 103), ('الدنيا', 103), ('العالمية', 102), ('إيجار', 102), ('السعودية', 100), ('بالرياض', 98), ('محطات', 96), ('يتيمه', 94), ('شكرا', 91), ('ارتفاع', 91), ('الطوابير', 90), ('بالنص', 89), ('كربته', 89), ('منظمة', 88), ('يارب', 87), ('ياهل', 87), ('جدة', 87), ('وحساب', 87), ('ثوب', 86), ('المال', 86), ('الرياض', 86), ('وماعندي', 82), ('التواصل', 81), ('بيضاء', 81), ('الجمعه', 79), ('لباس', 78), ('تغير', 78), ('السعودي', 78), ('العمر', 78), ('ساعه', 78), ('الأمريكية', 77), ('نعمة', 76), ('الح', 74), ('المواطن', 73), ('الدراسي', 73), ('اقسم', 73), ('الفصل', 72), ('افزعو', 72), ('كلمت', 72), ('مباشرة', 71), ('عاجزة', 71), ('والآخرة', 70), ('رمضان', 70), ('الطول', 70), ('استجابه', 70)]

Step 8. Visualize words frequencies

['الفساد, الصحة, البنزين, التعليم, الضمان'] is talked about more than ['اللإسكان, البطالة, الضرائب ,الترفيه, السعودة']

['الصحة ,التعليم ,الضمان] is talked about more than ['البنزين ,الفساد] 

Compare Tweets count: 97885 (Step 1) with Tweets count: 4821 (Step 5) both have the same order: 
1 ----------------------------- الصحة
2 ----------------------------- التعليم
3 ----------------------------- الضمان
4 ----------------------------- البنزين
5 ----------------------------- الفساد

Step 9. Words associated with keyword: ‘الصحة’

From Step 9 we didn't get what the sample want? or their sentiments towards 'الصحة'

Experiment 3 : Search

Step 1. Concentrate the search of a specific subject related to a keyword at a time:

For 'الصحة':

وزارة الصحة + جهود + نعود بحذر + الصحة + كورونا + المستشفى + معاملة + مصابين + الكادر الطبي + تفشي + المستشفيات + التأخير

Then remove the noise:

افضل شركة نقل عفش + موعد القبول + منتج تنحيف + للتواصل + خدمات + شيخ روحاني + عاجل + أخبار_السعودية

Step 2. Filter according to your criteria from Step 1:

-------- Pick only accounts with 1000-6000 Followers
-------- Pick only location information displayed 
-------- location: Saudi Arabia, list of Saudi cities (both in AR,EN)

Step 3. Split each word in a Tweet  based on training set Negative.txt and Positive.txt

The results are promising with model prediction 83% correct: Result.TXT

Can be improved by adding Saudi dialects in Negative.txt and Positive.txt

This approach was used before here for YouTube Arabic comments

This third approach:

- Will concentrate on specific subjects within each keyword on the list

- Needs team brain-storming for specific subjects related to each keyword

- BUT has moderate noise elimination