Using pandas to do a text mining with a large book
Using Pandas to iterate through a large book.
Note: The text is in Arabic, i will later on use an English book
example
The book we will use here has almost 114 chapters, every chapter
has its own number of versets and every
chapter has its own descendant location. I converted it the whole book into
Excel, putting every verset in one column (with a title of column = 'الآيات'), the number of verset ('رقم الآية'), the chapter name ('السورة'), the macca or madina ('المكي والمدني').
I will offer the downloading
of the book later on here
The goal here is to show you how to extract specific string or word
based on derives of specific verb in different chapter and bring them all
together to extract some concordance or anything else to get a clearer
understanding of any subject.
>>> import pandas as pd
# Pandas is a very important liberary in python used in data analysis,
here we have a text but I transformed as a data where we can extract some idea
and come together in some conclusion
>>> coran = pd.read_excel('bookexcelcoran.xlsx') # Pandas
is going to open my excel file and read it
>>> len(coran) # I can see the length of the rows which
correspond exactly the total verset of whole book in different chapters.
6236
>>> coran.columns
# The title of the column
Index(['Unnamed: 0', 'الآيات ', 'رقم
الآية', 'السورة', 'المكي والمدني'], dtype='object')
>>> coran.head() # The top ten rows of the whole book
Unnamed: 0 الآيات رقم الآية
السورة المكي والمدني
0 NaN بسم الله الرحمن
الرحيم 1 الفاتحة
مكية
1 NaN الحمد لله رب العالمين 2
الفاتحة مكية
2 NaN الرحمن الرحيم 3
الفاتحة مكية
3 NaN مالك يوم الدين 4
الفاتحة مكية
4 NaN إياك نعبد وإياك
نستعين 5 الفاتحة مكية
>>> alaayaat = coran['الآيات '] # I created a variable alaayat here to make it easier for
future iteration as the next of every following columns
>>> assura = coran['السورة']
>>> raqmalaaya = coran['رقم الآية']
>>> almakkiwalmadani = coran['المكي والمدني']
>>> alaayaat.value_counts() # I can find the length of the
most repeated verset, I just choosed a few here
فبأي آلاء ربكما
تكذبان
31
ويل يومئذ للمكذبين
11
وإن ربك لهو العزيز
الرحيم
8
فاتقوا الله وأطيعون
8
بسم الله الرحمن
الرحيم حم
7
ويقولون متى هذا
الوعد إن كنتم صادقين
6
بسم الله الرحمن
الرحيم الم 6
إن في ذلك لآية
وما كان أكثرهم مؤمنين
6
وما أسألكم عليه
من أجر إن أجري إلا على رب العالمين
5
إني لكم رسول أمين
5
إنا كذلك نجزي المحسنين
4
Before going for extraction, I would
try to verify the exact follow of the column, because we read from right to
left here, I use to techniques here, iteration and list method:
>>> for i in coran.columns:
print(i)
Unnamed: 0
الآيات
رقم الآية
السورة
المكي والمدني
>>> [i for i in
coran.columns]
['Unnamed: 0', 'الآيات ', 'رقم
الآية', 'السورة', 'المكي والمدني']
Here, I clearly didn’t used pandas
yet to extract the derives of the verb sarata “صرط”
as in my previous articles (there I’ve done this), because pandas is not having
the tool of split, python so far works with text mostly in split method.
I imported
the following variable from my previous article :
>>>
صرط = [( ' صراط ' ,
32), ( ' الصراط ' , 6), ( ' صراطا ' , 5), ( ' صراطي ' , 1), ( ' صراطك ' , 1)]
I have a
string and number , every word with its total frequency (or appearance) in the
whole book. Example we have ‘صراط’ 32 times in the
whole book. How to find there presences within each verset in different
chapters, here we go:
First I will
show you each key (word or string in the variable) and its value:
>>>
for k,v in صرط:
print(k,v)
صراط 32
الصراط 6
صراطا 5
صراطي 1
صراطك 1
I use
a,b,c,d , and zip à it’s all a techniques: a correspond
alaayat, b correspond raqmalaayaat, b correspond assura, c correspond
almakkiwalmadani and zip to combine them together. I’m looking the string or
word in a only because its representing
the versets or it’s the column of verset.
For k,v in
the next line: k correspond the key (string of variable صرط ) and v it’s value.
>>>
for a,b,c,d in zip(alaayaat, raqmalaaya, assura, almakkiwalmadani):
for k,v in صرط:
if k in a:
print(k, " ", a.partition(k), b, c, d)
صراط ('', ' صراط ', 'الذين أنعمت
عليهم غير المغضوب عليهم ولا الضالين') 7 الفاتحة
مكية
صراط (' سيقول السفهاء من الناس ما ولاهم عن قبلتهم التي
كانوا عليها قل لله المشرق والمغرب يهدي من يشاء إلى', ' صراط ', 'مستقيم') 142 البقرة مدنية
صراط (' كان الناس أمة واحدة فبعث الله النبيين مبشرين
ومنذرين وأنزل معهم الكتاب بالحق ليحكم بين الناس فيما اختلفوا فيه وما اختلف فيه إلا
الذين أوتوه من بعد ما جاءتهم البينات بغيا بينهم فهدى الله الذين آمنوا لما اختلفوا
فيه من الحق بإذنه والله يهدي من يشاء إلى', ' صراط ', 'مستقيم') 213 البقرة مدنية
صراط (' إن الله ربي وربكم فاعبدوه هذا', ' صراط ', 'مستقيم')
51 آل عمران مدنية
صراط (' وكيف تكفرون وأنتم تتلى عليكم آيات الله وفيكم
رسوله ومن يعتصم بالله فقد هدي إلى', ' صراط ', 'مستقيم') 101 آل عمران مدنية
صراط (' يهدي به الله من اتبع رضوانه سبل السلام ويخرجهم
من الظلمات إلى النور بإذنه ويهديهم إلى', ' صراط ', 'مستقيم') 16 المائدة مدنية
صراط (' والذين كذبوا بآياتنا صم وبكم في الظلمات من يشإ
الله يضلله ومن يشأ يجعله على', ' صراط ', 'مستقيم') 39 الأنعام مكية
صراط (' ومن آبائهم وذرياتهم وإخوانهم واجتبيناهم وهديناهم
إلى', ' صراط ', 'مستقيم') 87 الأنعام مكية
صراط (' وهذا', ' صراط ', 'ربك مستقيما قد فصلنا الآيات
لقوم يذكرون') 126 الأنعام مكية
صراط (' قل إنني هداني ربي إلى', ' صراط ', 'مستقيم دينا
قيما ملة إبراهيم حنيفا وما كان من المشركين') 161 الأنعام مكية
صراط (' ولا تقعدوا بكل', ' صراط ', 'توعدون وتصدون عن
سبيل الله من آمن به وتبغونها عوجا واذكروا إذ كنتم قليلا فكثركم وانظروا كيف كان عاقبة
المفسدين') 86 الأعراف مكية
صراط (' والله يدعو إلى دار السلام ويهدي من يشاء إلى',
' صراط ', 'مستقيم') 25 يونس مكية
صراط (' إني توكلت على الله ربي وربكم ما من دابة إلا
هو آخذ بناصيتها إن ربي على', ' صراط ', 'مستقيم') 56 هود مكية
صراط (' بسم الله الرحمن الرحيم الر كتاب أنزلناه إليك
لتخرج الناس من الظلمات إلى النور بإذن ربهم إلى', ' صراط ', 'العزيز الحميد') 1 إبراهيم مكية
صراط (' قال هذا', ' صراط ', 'علي مستقيم') 41 الحجر مكية
صراط (' وضرب الله مثلا رجلين أحدهما أبكم لا يقدر على
شيء وهو كل على مولاه أينما يوجهه لا يأت بخير هل يستوي هو ومن يأمر بالعدل وهو على',
' صراط ', 'مستقيم') 76 النحل مكية
صراط (' شاكرا لأنعمه اجتباه وهداه إلى', ' صراط ', 'مستقيم')
121 النحل مكية
صراط (' وإن الله ربي وربكم فاعبدوه هذا', ' صراط ',
'مستقيم') 36 مريم مكية
صراط (' وهدوا إلى الطيب من القول وهدوا إلى', ' صراط
', 'الحميد') 24 الحج مدنية
صراط (' وليعلم الذين أوتوا العلم أنه الحق من ربك فيؤمنوا
به فتخبت له قلوبهم وإن الله لهاد الذين آمنوا إلى', ' صراط ', 'مستقيم') 54 الحج مدنية
صراط (' وإنك لتدعوهم إلى', ' صراط ', 'مستقيم') 73 المؤمنون مكية
صراط (' لقد أنزلنا آيات مبينات والله يهدي من يشاء إلى',
' صراط ', 'مستقيم') 46 النور مدنية
صراط (' ويرى الذين أوتوا العلم الذي أنزل إليك من ربك
هو الحق ويهدي إلى', ' صراط ', 'العزيز الحميد') 6 سبإ مكية
صراط (' على', ' صراط ', 'مستقيم') 4 يـس مكية
صراط (' وأن اعبدوني هذا', ' صراط ', 'مستقيم') 61 يـس مكية
صراط (' من دون الله فاهدوهم إلى', ' صراط ', 'الجحيم')
23 الصافات مكية
صراط (' وكذلك أوحينا إليك روحا من أمرنا ما كنت تدري
ما الكتاب ولا الإيمان ولكن جعلناه نورا نهدي به من نشاء من عبادنا وإنك لتهدي إلى',
' صراط ', 'مستقيم') 52 الشوري مكية
صراط ('', ' صراط ', 'الله الذي له ما في السماوات وما
في الأرض ألا إلى الله تصير الأمور') 53 الشوري مكية
صراط (' فاستمسك بالذي أوحي إليك إنك على', ' صراط ',
'مستقيم') 43 الزخرف مكية
صراط (' وإنه لعلم للساعة فلا تمترن بها واتبعون هذا',
' صراط ', 'مستقيم') 61 الزخرف مكية
صراط (' إن الله هو ربي وربكم فاعبدوه هذا', ' صراط
', 'مستقيم') 64 الزخرف مكية
صراط (' أفمن يمشي مكبا على وجهه أهدى أمن يمشي سويا على',
' صراط ', 'مستقيم') 22 الملك مكية
الصراط (' اهدنا', ' الصراط ', 'المستقيم') 6 الفاتحة مكية
الصراط (' قل كل متربص فتربصوا فستعلمون من أصحاب', ' الصراط
', 'السوي ومن اهتدى') 135 طه مكية
الصراط (' وإن الذين لا يؤمنون بالآخرة عن', ' الصراط
', 'لناكبون') 74 المؤمنون مكية
الصراط (' ولو نشاء لطمسنا على أعينهم فاستبقوا', ' الصراط
', 'فأنى يبصرون') 66 يـس مكية
الصراط (' وهديناهما', ' الصراط ', 'المستقيم') 118 الصافات
مكية
صراطا (' ولهديناهم', ' صراطا ', 'مستقيما') 68 النساء
مدنية
صراطا (' فأما الذين آمنوا بالله واعتصموا به فسيدخلهم
في رحمة منه وفضل ويهديهم إليه', ' صراطا ', 'مستقيما') 175 النساء
مدنية
صراطا (' يا أبت إني قد جاءني من العلم ما لم يأتك فاتبعني
أهدك', ' صراطا ', 'سويا') 43 مريم مكية
صراطا (' ليغفر لك الله ما تقدم من ذنبك وما تأخر ويتم
نعمته عليك ويهديك', ' صراطا ', 'مستقيما') 2 الفتح مدنية
صراطا (' وعدكم الله مغانم كثيرة تأخذونها فعجل لكم هذه
وكف أيدي الناس عنكم ولتكون آية للمؤمنين ويهديكم', ' صراطا ', 'مستقيما') 20 الفتح
مدنية
صراطي (' وأن هذا', ' صراطي ', 'مستقيما فاتبعوه ولا تتبعوا
السبل فتفرق بكم عن سبيله ذلكم وصاكم به لعلكم تتقون') 153 الأنعام مكية
صراطك (' قال فبما أغويتني لأقعدن لهم', ' صراطك ', 'المستقيم')
16 الأعراف مكية
- If you had to do this for all the total derives of all verbs in one book, that would be extremely a big job as creating a dictionary for any language. There are a very easy method in python which can helps to accelerate the work in a very few weeks depends on your timing.
Just to notify you, there are a very great functions in Pandas dealing
with any kind of text extremely brilliant, just go and try them.
Comments
Post a Comment