برای درس شبکههای پیچیده و پویا که در این ترم داشتم میبایست پروژهای انجام میگرفت که و من تصمیم گرفتم با توجه به علاقهام به ادبیات تحقیقی روی شبکهی همنشینی واژگان در اشعار حافظ انجام دهم. شبکهی همنشینی واژگان تقریبا گرافی است که راسهای آن کلمات به کار رفته در یک متن هستند و میان دو واژه یال وجود دارد اگر آن دو واژه در یک واحد متنی آمده باشند. با تحلیل این شبکه میتوان برخی ویژگیهای زبانی هر متنی را استخراج کرد.
۰) مقدمه
در درس شبکههای پیچیده و پویا با انواع شبکههای پیچیده موجود در دنیا آشنا شدیم. چهار نوع اصلی آن یعنی شبکههای اجتماعی، شبکههای تکنولوژی، شبکههای اطلاعاتی و شبکههای زیستی را دیدیم و دانستیم این برای این شبکهها ویژگیهای خاصی با توجه به ساختار، ارتباطات، پویایی و … قابل تعریف است که این ویژگیها در بسیاری از این شبکهها شبیه به هم و مشترک است. از این رو با مشاهده و اندازهگیری این ویژگیها با ابزارهای موجود میتوان اعضای شبکه و ارتباطات میان آنها را بررسی و تحلیل کرد و به دادههای قابل توجهی در آن حوزه رسید. یکی از انواع شبکههای پیچیده که در چهار نوع اصلی ذکر شده نمیگنجد شبکهی همنشینی کلمات در یک متن است. به این ترتیب که در هر متن هر کلمه به صورت یک توکن در نظر گرفته میشود که گرههای شبکه را تشکیل میدهند و در واحدهای مشخص اندازهگیری متن (مثلاً تعداد مشخصی توکن که دنبال هم در متن آمدهاند یا یک جمله و یک بند از متن و یا یک مصرع یا بیت در شعر) هر دو توکن را با یک یال به هم متصل میکنیم. (بدیهی است که با این تعریف شبکه میتواند شامل یالهای چندگانه باشد که میتوان با تعریف وزن برای یال آن را نمایش داد.) با ساخت گراف شبکهی همنشینی کلمات برای یک متن میتوان به دادههای جالبی دست پیدا کرد. برای مثال میتوان با ویژگیهای ساختاری یک متن و حتی ویژگیهای سبکی نویسندهی آن متن آشنا شد و با مقایسهی این ویژگیها برای دو متن مشخص کرد آیا نویسندهی این دو متن یک نفر است یا نه.
در این زمینه کارهای قابل توجهی در زبانهای غیر فارسی و عموماً انگلیسی انجام شده است. Akimushkin و همکارانش[1] در مقالهای به دنبال تشخیص نویسندهی یک متن با استفاده از تحلیل ساختار همنشینی کلمات و نه صرفاً آماری از کلمات است. در روشهای قدیمیتر تنها فراوانی واژهها، طول جمله یا واژه و n-grams مورد توجه بودند اما این مقاله نشان میدهد سبک نویسنده تنها در انتخاب واژگان نیست بلکه در الگوی ارتباطی بین واژهها نفهتهاست. Akimushkin و همکارانش برای هر متن یک شبکهی همنشینی واژگان با یالهای وزندار تشکیل دادند سپس با محاسبهی برخی ویژگیهای شبکه یعنی درجهی گرهها، clustring coefficient، میانگین فاصلهی بین واژهها، betweenness centerality و assortativity به توصیف سبک نویسنده پرداختند. یک ویژگی قابل توجه در کار آنها این بود که هر متن را به چند قسمت تقسیم کردند و به ترتیب قسمتها را مانند بازهی زمانی در نطر گرفتند و برای هر قسمت شبکهی کوچکی تشکیل دادند و تغییر و پویایی ویژگیهای این شبکهها را در سیر متن بررسی کردند و از خود این تغییرات نیز برای تحلیل سبک نویسنده استفاده کردند و نشان دادند هر نویسنده الگوی خاصی در تغییر این شاخصها دارد. برای مثال بعضی نویسندهها واژه محوریشان در سراسر متن پایدار میماند و بعضی نه. دقت تشخیص نویسنده در کار آنها تا حود ۸۵٪ تا ۹۰٪ است. Amancio[2] در مقالهای تلاش برای تشخیص نویسندهی متن با استفاده از بررسی نوسانات در ساختار شبکه و همچنین نامرتبی یا بین دورهای بودن واژهها است. روش او به این صورت است که متنها را به بخشهای کوچکتر تقسیم میکند و برای هر بخش یک شبکه میسازد. ویژگیهایی مانند متوسطها، واریانسها یا شاخصهای نوسان استخراج میشوند و با استفاده از الگوریتمهای یادگیری ماشین برای تشخیص نویسنده به کار میروند. این مقاله نشان میدهد که نویسندههای مختلف الگوهای نوسان متفاوتی در ویژگیهای شبکه و واژهها دارند و از همین برای تشخیص نویسنده استفاده میکند. یک ویژگی استفاده شده در این مقاله intermittency واژهها است. به این معنی که واژهها چگونه در طول متن پدیدار میشوند و دورههای فاصلهی بین تکرارشان چقدر است. این ویژگی برای هر واژه محاسبه شده است. Marinho[3] در مقالهای با بررسی موتیفهای شبکهی همنشینی واژگان برای تشخیص نویسندهی متنها تلاش میکند. در این مقاله گراف شبکهی همنشینی واژگان ساخته شده و از گرافها ۱۳ نوع موتیف با اندازهی ۳ استخراج شده و فراوانی هر نوع موتیف مشخص شدهاست. این روش در بهترین حالت تقریباً ۵۷/۵٪ از کتابها با نویسندههای متعدد درست طبقه بندی شدند. همچنین در این مقاله به بررسی حذف stop-words و لماتایزینگ پرداخته شده و نشان داده در برخی تنظیمها حذف کلمات عملکردی باعث افت عملکرد میشود. Liang و همکاران[4] در مقالهای روی اشعار مدرن چینی (ریمها، آزاد و اشعار نثرگون) شبکهی همنشینی را بررسی کردهاند. آنها ۶۰۶ شبکهی همنشینی روی این اشعار ساختند و نشان دادند که ۹۸/۵٪ از این شبکهها scale-free هستند، حدود ۱۹/۸٪ از شبکهها small-world نیستند، ۶۱/۴٪ شبکهها ساختار هرمی قابل توجه دارند و ۹۸٪ شبکهها disassortative هستند. سپس از منظر زبانشناسی تحلیل کردند که چرا این ویژگیها در این اشعار دیده میشوند. این مقاله نمونهای از کار در زمینهی شبکهی همنشینی واژگان در زبانهای غیر انگلیسی میباشد. از مجموع این مقالات میتوان اینطور برداشت کرد که تحلیل شبکههای همنشینی واژگان در متون مختلف میتواند تحلیلهای جالبی از آن متنها به ما بدهد و به سبک شناسی یا تشخیص نویسندهی متنها کمک کند. از طرفی جای خالی این بررسی در متون و اشعار فارسی حس میشود و تا کنون کاری در این زمینه انجام نگرفته است. پس تصمیم بر این شد که در این پروژه شبکهی همنشینی واژگان در غزلیات حافظ مورد بررسی قرار گیرد و با استخراج ویژگیها و تحلیل این شبکه، امید است تحلیل اشعار حافظ و تشخیص شعرهای منسوب به او آسانتر گردد.
۱) روش شناسی
قدم اول در این پروژه ساختن گراف شبکهی همنشینی واژگان در غزلیات حافظ است. این امر خود نیز از مراحل مختلفی تشکیل شده است. ابتدا به یک منبع نسبتاً قابل اعتماد برای استخراج غزلیات نیاز داشتیم. برای این امر سایت گنجور انتخاب شد و با یک اسکریپت پایتون غزلیات از سایت استخراج و در یک فایل txt ذخیره شد. پس از آن نیاز بود تا کلمات از هم جدا و مشخص شوند. برای این کار نیاز به نرمالسازی و توکنایز و لماتایز غزلیات بود. در نرمالسازی علایم نگارشی و حرکتی حذف میشوند، حروف مشابه مانند ی و ي یکسان سازی و استاندارد میشوند و حالت استاندارد نوشتار فارسی مانند قرار دادن نیمفاصله در متن اتفاق میافتد. بعد از نرمالسازی نوبت به توکنایز میرسد که میان کلمات مرز قائل میشود. و در نهایت به مرحلهی لماتایز میرسیم. در این مرحله هر کلمه به ریشهی خود برمیگردد. یعنی هر فعل به بن یا مصدر خود تبدیل میشود و اسمها از حالت مشتق خارج میشوند برای مثال علایم جمع یا ی نکره از انتهای اسمها حذف میشود. برای این منظور کتابخانههای hazm و parsivar در پایتون که برای زبان فارسی هستند و شامل این سه تابع مذکور میشوند وجود دارند که در این پروژه از hazm که نتایج بهتری ارائه میداد استفاده شد ولی باز هم خروجی راضی کننده نبود. نتایج نرمالسازی قادر به تشخیص ای به عنوان حرف ندا و ای به عنوان پسوند کلمات در میان مصرع نبود و تمام ایهای حرف ندا را به کلمات قبلش میچسباند. همچنین در توکنایز هم ایراداتی دیده شد ولی خروجی لماتایز اصلاً قابل استفاده نبود و اشتباهاتی داشت که قابل اغماض نبود. درنتیجه با چشمپوشی از برخی خطاها از نتیجهی توکنایز برای ساخت گراف استفاده شد و با پایتون گراف ساخته شد. با استفاده از ابزار gephi شمایل گراف پدیدار شد و ویژگیهای اولیه را استخراج کردیم. سپس تصمیم بر این شد که شبکه را با حذف حروف اضافه و ربط دوباره بازسازی کنیم و نتایج را باهم مقایسه کنیم.
۲) نتایج
ویژگیهای استخراج شده از شبکه اولیه ساخته شده به شرح زیر میباشد
ابتدا درجهی هر گره مشخص شد که میانگین آن ۲۶/۲۵۸ میباشد.
قطر گراف ۵ است و میانگین کمترین فاصله میان کلمات ۲/۴۸۲ میباشد.
چگالی گراف ۰/۰۰۳ میباشد.
تعداد کامپوننتهای تشخیص داده شده در گراف ۷ عدد است که ۶ تای آنها بسیار کوچک(حدود ۳ یا ۴ گره) و یک کامپوننت بزرگ شامل باقی گرهها است.
اندازهی ماژولاریتی برای گراف ۰/۱۳ میباشد و تعداد ماژولهای تشخیص داده شده برای گراف ۱۳۱ عدد است.
برای هرگره مقدار closeness و betweenness محاسبه شدهاست که بیشترین مقدار برای closeness مقدار ۱ و کمترین مقدار ۰/۲۵۴۳۳۷ میباشد. همچنین برای betweenness این مقادیر ۰/۱۶۴۸۰۹ و صفر میباشد.
برای هر گره مقدار clustering coefficient هم محاسبه شد که بیشترین و کمترین آن به ترتیب ۱ و ۰/۰۰۹۷۲۳ میباشد.
همچنین تعداد مثلثهای هر گره هم محاسبه شد که بیشترین و کمترین آن به ترتیب ۷۷۹۵۸ و ۱ میباشد.
در آخر بیشترین وزن در میان یالها ۴۴۸ میباشد.
و ویژگیهای به دست آمده برای شبکهی دوم (با حذف حروف اضافه و ربط و …)
کلمات حذف شده به شرح زیر میباشد:
از، ز، دارد، کز، همه، گر، کن، کرد، اگر، نه، نیست، شد، او، ای، چون، بود، هر، سر، با، تا، چو، ما، چه، آن، را، بر، است، و، به، در، تو، این، من، که
میانگین درجات برابر است با ۱۵/۷
قطر برابر ۸ و میانگین کمترین فاصله برابر است با ۳/۱۱
چگالی شبکه برابر است با ۰/۰۰۲
تعداد کامپوننتها ۳۳
اندازه ماژولاریتی برای شبکه ۰/۲۷۷ و تعداد ماژولها ۵۰ میباشد.
برای هرگره مقدار closeness و betweenness محاسبه شدهاست که بیشترین مقدار برای closeness مقدار ۱ و کمترین مقدار ۰/۱۹۱ میباشد. همچنین برای betweenness این مقادیر ۰/۸۵ و صفر میباشد.
برای هر گره مقدار clustering coefficient هم محاسبه شد که بیشترین و کمترین آن به ترتیب ۱ و ۰ میباشد.
همچنین تعداد مثلثهای هر گره هم محاسبه شد که بیشترین و کمترین آن به ترتیب ۱۵۰۹۴ و ۰ میباشد.
در آخر بیشترین وزن در میان یالها ۴۶ میباشد.
همانطور که انتظار میرفت با حذف کلمات مذکور شبکه بسیار تنکتر شد زیرا بیشتر یالهای موجود در شبکهی اول با کلماتی که بعداً حذف شدند تشکیل شده بود و به نوعی آن کلمات پل ارتباطی تمام کلمات بودند. و این نتیجهای بود که انتظار میرفت. البته که شبکهی اول در تحلیل ما را از هدف دور میکرد و کلمات و همنشینیهایی که به لحاظ زبانی پر اهمیتتر هستند را به حاشیه میبرد. برای مثال کلمات حذف شده دارای بیشترین درجه بودند ولی با حذف آنها کلمات پرتکرار اصلی نمایان شدند که شامل دل، حافظ، جان و عشق است به ترتیب با درجهی ۱۰۹۹، ۹۷۵، ۵۶۴، ۵۵۸. همچنین همنشینیهای پرتکرار شامل دل و جان، دل و حافظ، دل و غم و دل و خون با تعداد تکرار ۲۷، ۲۴، ۲۱ و ۲۱ میباشد.
این نتایج گرچه قابل بهبود و دقیقتر شدن است ولی به نظر میرسد برای اهل فن قابلیت تحلیل دیوان حافظ را فراهم کند که از دانش و فرصت ما فراتر است.
۳) کارهای آینده
اولین اقدامی که خوب است در امتداد این کار انجام شود بهبود مراحل توکنیاز و لماتایز است تا به شبکهی دقیقتر و قابل اتکاتری دست پیدا کنیم. استفاده از عاملهای زبانی میتواند یکی از روشها باشد.
همچنین برای این پروژه آثار شاعر گرانقدر، حافظ، به این دلیل انتخاب شد که تعداد غزلهای کمتری دارد و مراحل ساخت گراف و تحلیل آن به دلیل کوچکتر بودن شبکه سادهتر است. امید میرود در آینده این شبکهی همنشینی کلمات برای آثار دیگر شاعران فارسی کلاسیک مانند مثنوی مولانا یا شاهنامه فردوسی نیز ساخته شود که با توجه به حجم زیاد و تعدد نسخهها تحلیل سبکی آنها سختتر به نظر میرسد. اما به دلیل بزرگتر بودن شبکه طبیعتاً تحلیلهای زبانی بهتری قابل انجام است. همچنین در این صورت میشود نتایج را میان این آثار مقایسه کرد و تحلیلهایی ازاین دست نیز انجام داد.
و البته میتوان این بررسیها را به سمت شاعران معاصر نیز آورد و مقایسهای میان سبکهای شعری مختلف در گذر زمان انجام داد.
منابع
[1] C. Akimushkin, D. R. Amancio, and O. N. Oliveira Jr, “Text authorship identified using the dynamics of word co-occurrence networks,” PloS One, vol. 12, no. 1, p. e0170527, 2017.
[2] D. R. Amancio, “Authorship recognition via fluctuation analysis of network topology and word intermittency,” J. Stat. Mech. Theory Exp., vol. 2015, no. 3, p. P03005, 2015.
[3] V. Q. Marinho, G. Hirst, and D. R. Amancio, “Authorship attribution via network motifs identification,” in 2016 5th Brazilian conference on intelligent systems (BRACIS), IEEE, 2016, pp. 355–360.
[4] W. Liang, Y. Wang, Y. Shi, and G. Chen, “Co-occurrence network analysis of modern Chinese poems,” Phys. Stat. Mech. Its Appl., vol. 420, pp. 284–293, 2015.