You are on page 1of 61

‫به نام خداوند بخشاینده مهربان‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‬


‫دانشگاه صنعتی امیرکبیر(پلی تکنیک تهران)‬

‫محمد حیدری‬

‫‪BigDataWorld.ir‬‬

‫‪@BigDataSchool‬‬ ‫‪@BigData_School‬‬ ‫‪@BigData_School‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪1‬‬
‫آشنایی با من‬
‫محمد حیدری (بنیانگذار مدرسه بیگ دیتا‪ ،‬پژوهشگر علوم داده و یادگیری ماشین)‬
‫• پژوهشگر یادگیری ماشین در ‪HiTS‬‬

‫• مدرس دوره های نرم افزاری در مرکز آموزش های تخصصی جهاد دانشگاهی‬

‫• کارشناسی مهندسی نرم افزار و ارشد مهندسی فناوری اطالعات‪ ،‬دانشگاه تربیت مدرس تهران‬

‫• سخنران کارگاه آموزشی ‪ Graph Analytics‬در پنجمین سمینار زمستانه علوم کامپیوتر‪ ،‬صنعتی شریف‬

‫• ارائه دهنده مقاله برتر در ‪6th IEEE International Conference on Web Research, ICWR‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪2‬‬
‫منظور از داده چیست ؟‬
‫▪داده انواع و اقسام متنوعی دارد‪.‬‬
‫▪ صدا‬
‫▪ تصاویر‬
‫▪ کلمات‬
‫▪ اعداد‬
‫▪حمل و نقل‬
‫▪علمی‬
‫▪مالی‬
‫▪آماری‬
‫▪هواشناسی‬
‫▪جغرافیایی‬
‫▪و ‪...‬‬
‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪3‬‬
‫گام های انجام یک پروژه علم داده‬
‫▪گام اول‪ ،‬شناخت سیستم (فهم کسب و کار)‬
‫▪گام دوم‪ ،‬شناخت داده ها (درک داده)‬
‫▪گام سوم‪ ،‬آماده سازی داده (پاکسازی)‬
‫▪گام چهارم‪ ،‬مدل سازی داده‬
‫▪گام پنجم‪ ،‬ارزیابی داده‬
‫▪گام ششم‪ ،‬توسعه‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪4‬‬
‫مفهوم کتابخانه )‪(Library‬‬
‫▪کتابخانه مجموعه ای از ماژول هاست! (ماژول چی هست اصال؟)‬
‫▪ماژول مجموعه ای از کدها است که برای یک هدف خاص استفاده می شود و می توان در برنامه های گوناگونی از‬
‫آن استفاده کرد‪.‬‬
‫▪مزیت کلیدی‬
‫▪پرهیز از تکرار کد‬
‫▪اختراع دوباره چرخ‪ ،‬ممنوع‬
‫▪ کسی که در حال ساخت ماشین است‬
‫زمان خود را صرف دوباره چرخ نمی کند‪،‬‬
‫بنابراین‪ ،‬چرخ یک ماژول است‪ ،‬چون می تواند در سایر تولیدات‬
‫استفاده شود‪.‬‬
‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪5‬‬
‫طبقه بندی کتابخانه ها در پایتون‬
‫▪ماژول ها یا کتابخانه هایی که در پایتون نوشته می شوند سه دسته اند‪:‬‬
‫▪ توسط شخص ما نوشته شده اند‪.‬‬
‫▪ توسط دیگران یا منابع خارجی نوشته شده اند‪)PyPI( .‬‬
‫▪ به صورت پیش فرض به همراه پایتون نصب شده اند‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪6‬‬
‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪7‬‬
‫پیش نیازهای الزم برای شرکت در کارگاه آموزشی‬
‫دانش مقدماتی پایتون‬
‫اطالعات مقدماتی در رابطه با داده کاوی‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪8‬‬
‫نصب ابزارهای الزم‬
‫‪Anaconda Jupyter Notebook‬‬
‫‪PyCharm‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪9‬‬
‫کاربردهای پردازش متن‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪10‬‬
‫ابزارهای پردازش زبان طبیعی در زبان فارسی‬
‫هضم‬
‫◦ تمیز و مرتب کردن متن‬
‫◦ تقطیع جمله‌ها و واژه‌ها‬
‫◦ ‪Sentence Segmentation‬‬
‫◦ ‪Tokenization‬‬
‫◦ ریشه‌یابی واژه‌ها‬
‫◦ تحلیل صرفی جمله‬
‫◦ تجزیه نحوی جمله‬
‫◦ واسط استفاده از داده‌های زبان فارسی‬
‫◦ سازگاری با بسته ‪NLTK‬‬
‫◦ پشتیبانی از پایتون نسخه ‪ ۲‬و ‪۳‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪11‬‬
‫ابزارهای پردازش زبان طبیعی در زبان فارسی‬
‫پارسی ور‬
‫◦ تمیز و مرتب کردن متن‬
‫◦ تقطیع جمله‌ها و واژه‌ها‬
‫◦ ‪Sentence Segmentation‬‬
‫◦ ‪Tokenization‬‬
‫◦ ریشه‌یابی واژه‌ها‬
‫◦ تحلیل صرفی جمله‬
‫◦ تجزیه نحوی جمله‬
‫◦ قابلیت استخراج مقادیر تاریخی عددی از متن‬
‫◦ تبدیل کلمات فــــینگلیش یا پــــینگلیش به فارسی‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪12‬‬
‫چالشهای پردازش زبان طبیعی در زبان فارسی (مقاله ‪)2019‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪13‬‬
‫چالشهای پردازش زبان طبیعی در زبان فارسی‪( ،‬مقاله ‪)2020‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪14‬‬
‫کتابخانه های برتر به منظور بهره برداری در پروژه های یادگیری ماشین‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪15‬‬
‫گامها و مراحل متن کاوی‬
‫❑انتخاب متن‬
‫❑پردازش متن‬
‫❑تبدیل متن به صفات خاصه‬
‫❑انتخاب صفات خاصه از متن‬
‫❑داده‌کاوی بر روی متن‬
‫❑تفسیر و ارزیابی خروجی متن کاوی‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪16‬‬
‫کتابخانه های برتر ‪NLP‬‬
‫‪Persian‬‬
‫)‪◦ Hazm (Persian Supported‬‬
‫)‪◦ Parsivar(Persian Supported‬‬
‫)‪◦ FastText (Persian Supported‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪17‬‬
‫مهمترین روش های پیش پردازش متن‬
‫به ترتیب‬
‫تبدیل متن به حروف کوچک‬ ‫◦‬
‫پاک کردن اعداد‬ ‫◦‬
‫پاک کردن عالئم نقطه گذاری‬ ‫◦‬
‫پاک کردن فضاهای خالی‬ ‫◦‬
‫توکن بندی کلمات‬ ‫◦‬
‫حذف کردن کلمات فاقد اهمیت کافی‬ ‫◦‬
‫ریشه یابی کلمات‬ ‫◦‬
‫برچسب گذاری نقش کلمات در متن‪Part of Speech (POS) Tagging ،‬‬ ‫◦‬
‫تجزیه و تحلیل سطحی جمالت‬ ‫◦‬
‫شناسایی موجودیت های اسمی در جمالت‪NER ،‬‬ ‫◦‬
‫شناسایی هم رُخدادی کلمات در جمالت‬ ‫◦‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪18‬‬
‫پیش پردازش متن‪ ،‬انواع تحلیل ها‬
‫تحلیل صرفی‬
‫◦ ‪POS‬‬
‫◦ ‪Tokenizer‬‬
‫◦ ‪Lemmatizer‬‬
‫تحلیل نحوی‬
‫◦ ‪Parser‬‬
‫◦ ‪Chunker‬‬
‫تحلیل معنایی‬
‫◦ ‪NER‬‬
‫◦ ‪Event Detection‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪19‬‬
‫ابزارهای پیش پردازش متن فارسی‬
‫نرمال ساز‬
‫تقطیع واژه و جمله‬
‫ریشه یابی‬
‫برچسب ادات سخن‬
‫حذف کلمات توقف‬
‫پارسِر‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪20‬‬
‫نرمال ساز‪Normalizer ،‬‬
‫هدف‪ :‬تمیز‪ ،‬مرتب کردن متن و یکسان‌سازی کاراکترها با جایگزین کردن کاراکترهای استاندارد در متن ورودی‬
‫همه‌ی حروف متن با جایگزینیِ معادل استاندارد آنها‪ ،‬یکسان‌سازی گردند‪.‬‬
‫◦ مثال‪ :‬چالش شباهت رسم الخط فارسی با عربی و استفاده از کاراکترهای عربی به جای فارسی‬
‫◦ حروف "ک" و "ی"‬
‫◦ اصالح و یکسان‌سازی نویسه‌ی نیم‌فاصله و فاصله‬
‫◦ حذف نویسه‌های اعراب‪ ،‬تشدید‪ ،‬تنوین و «ـ» برای کشش نویسه‌های چسبان‬
‫◦ مطابق با یک سری قاعده دقیق و مشخص‪ ،‬فاصله‌ها و نیم‌فاصله‌های موجود در متن برای وندهایی نظیر‬
‫◦ "ها"‪" ،‬تر" و "ی" غیرچسبان (در انتهای لغات)‬
‫◦ و همچنین پیشوندها و پسوندهای فعل‌ساز نظیر "نمی"‪" ،‬می"‪" ،‬ام"‪" ،‬ایم"‪" ،‬اید"‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪21‬‬
‫تقطیع واژه و جمله‪Sentence Splitter and Tokenizer ،‬‬
‫هدف‪ :‬تشخیص جمالت در متن ورودی‬
‫◦ با مشخص سازی مرز جمالت و کلمات‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪22‬‬
‫تشخیصدهندهی لغات‬
‫هدف‪ :‬با استفاده از عالمت‌های فضای خالی‪ “-” ،“,” ،“،” ،‬واحدهای با معنی مانند واژه‌ها را شناسایی می‌نماید‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪23‬‬
‫حذف کلمات توقف‪Stop Word Removal ،‬‬
‫هدف‪ :‬حذف عالئم‪ ،‬اعداد‪ ،‬کلمات عمومی و بدون ارزش معنایی (مثل‪ :‬از‪ ،‬در‪ ،‬با‪ ،‬به‪ ،‬است‪ ،‬پس‪ )… ،‬در جمله‬
‫◦ می‌تواند بدون از بین بردن معنا باعث بهبود دقت و سرعت الگوریتم‌های متن‌کاوی شوند‪.‬‬
‫لیست کلمات توقف وابسته به کاربرد مورد نظر باید تهیه شود‪.‬‬
‫◦ مثال‪ :‬کلمات “هست” و “نیست” برای دسته‌بندی موضوعی متن حائز اهمیت نیستند‬
‫◦ ولی در تحلیل حس‪ ،‬می‌توانند حس جمله را معکوس کنند!‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪24‬‬
‫ریشهیابی کلمات‪Stemmer and Lemmatizer ،‬‬
‫هدف‪ :‬ریشه‌یابی‪ ،‬حذف پیشوند و پسوندهای کلمات و تعیین ریشه اصلی کلمه‬
‫معروفترین الگوریتم ریشه یابی در انگلیسی‬
‫◦ ‪Porter‬‬
‫در روش‌های ریشه‌یابی رایج‪ ،‬بعد از حذف انواع وندها ممکن است معنای کلمه تغییر یابد‪.‬‬
‫ولی در ‪ Lemmatizer‬سعی در ریشه‌یابی بُن کلمه بدون تغییر مفهوم اصلی کلمه در جمله می باشد‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪25‬‬
‫بن واژه یاب‪Lemmatizer ،‬‬
‫سطوح مختلف‬
‫◦ مثال‪ :‬کلمه دانشجویان‬
‫◦ سطح ‪ :1‬دانشجو‬
‫◦ سطح ‪ :۲‬دانش‬
‫◦ سطح ‪ :۳‬دان‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪26‬‬
‫تصحیحکننده خطاهای امالیی‪Spell Correction ،‬‬
‫به ازای کلمات بدون مفهوم (که کلمه یا ریشه‌ی آن در لیست کلمات رسمی یا محاوره‌ای زبان فارسی وجود‬
‫ندارند)‪ ،‬شبیه‌ترین کلمه براساس تحلیل‌های آماری و از نظر امالیی جایگزین آن خواهد شد‪.‬‬
‫معیار استفاده شده برای آستانه شباهت امالیی تبدیل کلمات‬
‫◦ جداسازی کلمات بهم چسبیده‬
‫◦ اصالح‪/‬تغییر تنها یک حرف با یکی از کاراکترهای مجاور آن در صفحه کلید استاندارد زبان فارسی‬
‫◦ اصالح حروف هم صدا از نظر تلفظ‬
‫◦ مثال‪ :‬مانند حروف‪ :‬س‪ ،‬ص‪ ،‬ث که همگی به صدای ‪ S‬اشاره دارند‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪27‬‬
‫برچسبزنی ادات سخن یا نقش کلمات در جمله‪POS Tagging ،‬‬
‫انتساب برچسبهای نحوی (از قبیل اسم‪ ،‬انواع صفت‪ ،‬انواع قید‪ ،‬نوع فعل‪ ،‬انواع حروف و …) به واژهها‬
‫◦ ‪Part of Speech Tagging‬‬
‫نقش کلمات در جمالت از مهم ترین پیش پردازش‌هایی است که در ‪ Chunker‬هم استفاده می‌شود‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪28‬‬
‫قطعهبند ‪ Chunker‬یا پارسر کمعمق ‪Shallow Parser‬‬
‫ابزاری برای تشخیص گروه‌های اسمی‪ ،‬فعلی‪ ،‬صفات و …‪ .‬در یک جمله است‪.‬‬
‫برای مثال اولین دارنده مدال طالی المپیک یک عبارت اسمی است‪.‬‬
‫جهت تقویت ابزارهای سطح باالتر از قبیل‬
‫◦ پارسر‪،‬‬
‫◦ برچسب‌زن نقش معنایی‬
‫◦ و تشخیص موجودیت‌های نامدار‬
‫الزم است نه تنها نقش‌های کلمات مشخص گردند‪ ،‬بلکه باید وابستگیهای کلمات مجاور هم به لحاظ‬
‫نقشی در جمله مشخص شوند‪ .‬از اینرو به این ابزار پارسر سبک ‪ light‬یا کم عمق ‪ Shallow‬می گویند‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪29‬‬
‫تشخیص موجودیتهای نامدار‪Named Entity Recognition ،‬‬
‫به این معناست که اسامی خاص در یک متن را بتوان تشخیص داد و آنها را به رده‌های مشخصی دسته‌بندی کرد‪.‬‬
‫از قبیل اعم از‬
‫اسامی افراد‪،‬‬ ‫◦‬
‫اماکن‪،‬‬ ‫◦‬
‫سازمان‌ها‪،‬‬ ‫◦‬
‫مقادیر عددی و …‬ ‫◦‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪30‬‬
‫شبکه واژگان‪WordNet ،‬‬
‫پایگاه داده لغوی شامل مجموعه‌ای از لغات در قالب گروه‌های هم‌معنی و ارتباطات مختلف معنایی بین آنهاست‪.‬‬
‫ارتباطات معنایی در داخل این مجموعه شامل ‪ 1۶‬نوع رابطه می‌باشد‪.‬‬
‫این مجموعه به عنوان یک مرجع در بسیاری از پردازش‌های زبانی برای توجه به معنای لغات استفاده می شود‪.‬‬
‫نمونه های انگلیسی‬
‫◦ ‪Princeton WordNet‬‬
‫◦ ‪EuroWordNet‬‬
‫نمونه های فارسی‬
‫◦ فارس‌نت (شهید بهشتی و مرکز تحقیقات مخابرات)‬
‫◦ فردوس نت ( دانشگاه فردوسی)‬
‫◦ شبکه واژگان (دانشگاه تهران)‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪31‬‬
‫کتابخانه ‪NLTK: Natural Language Toolkit‬‬
‫یکی از جامع‌ترین و قدیمی‌ترین کتابخانه‌های پردازش زبان طبیعی در پایتون است‬
‫پایه و استانداردی برای کتابخانه‌های پردازش متن محسوب شده و برای کاربردهای پژوهشی فوق‌العاده است‪.‬‬
‫دارای بیش از ‪ ۵۰‬مجموعه متن و ‪ ۹‬تکنیک مختلف برای ریشه یابی کلمات است‪.‬‬
‫یکی از ویژگی‌های خوب این کتابخانه امکان اتصال به پیکره‌های مختلف متنی است‪.‬‬
‫برای کار با این کتابخانه الزم است تا در ابتدا مجموعه‌ای از متون را دانلود کنیم‪.‬‬
‫◦ این مجموعه متون که با نام‪ Corpus‬نیز شناخته می شوند از طریق ‪ NLTK‬قابل دانلود هستند‪.‬‬
‫◦ یک ‪ Corpus‬که صورت جمع آن ‪ Corpora‬است مجموعه ای از داده های متنی است که در توصیف و تحلیل زبان کاربرد دارند‬
‫◦ حجم تمامی ‪ Corpus‬های ‪ NLTK‬نزدیک به ‪ 11‬گیگابایت است‪.‬‬
‫منبع‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪32‬‬
‫کتابخانه ‪Stanford’s CoreNLP‬‬
‫ابزار بسیار مناسب برای تحلیل‌های دستوری برای زبان است‪.‬‬
‫این ابزار با زبان جاوا نوشته شده اما ‪ API‬آن برای زبان‌های مختلف از قبیل پایتون و سی‌شارپ موجود است‪.‬‬
‫چندزبانه بودن و تمرکز بر استخراج اطالعات باز از متن از ویژگی‌های اصلی این ابزار است‪.‬‬
‫از زبان فارسی پشتیبانی می کند‪.‬‬
‫‪https://github.com/stanfordnlp/python-stanford-corenlp‬‬

‫‪https://nlp.stanford.edu/pubs/StanfordCoreNlp2014.pdf‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪33‬‬
‫کتابخانه ‪SpaCy‬‬
‫با زبان پایتون برای متن کاوی تهیه شده و با اجرا روی ‪ Cython‬به سرعت مشهور است‪.‬‬
‫ارتباط خوبی با ابزارهای یادگیری ماشین و یادگیری عمیق از قبیل ذیل دارد‪.‬‬
‫‪Gensim‬‬ ‫◦‬
‫‪Keras‬‬ ‫◦‬
‫‪TensorFlow‬‬ ‫◦‬
‫‪scikit-learn‬‬ ‫◦‬
‫از زبان فارسی پشتیبانی نمی کند‪.‬‬

‫‪http://spacy.io/‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪34‬‬
‫مقایسه جالبی بین سرعت اجرای چهار کتابخانه مطرح‬

‫‪https://pdfs.semanticscholar.org/5930/efbf01efa8944258b1c0f7349111702f779e.pdf‬‬
‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪35‬‬
‫مقایسه دقت در شناسایی کلمات و برچسبزنی نقش ادات سخن چهار کتابخانه مطرح‬

‫‪https://www.computer.org/csdl/proceedings/msr/2017/1544/00/07962368.pdf‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪36‬‬
‫کتابخانه ‪TextBlob‬‬
‫یکی از ابزارهای بسیار کامل و راحت برای پردازش داده‌های متنی در زبان پایتون است‪.‬‬
‫از قابلیت های ‪ NLTK‬و کتابخانه ‪ Pattern‬استفاده می کند و فرآیند تحلیل احساسات در آن بسیارساده است‪.‬‬
‫این کتابخانه شامل ابزارهای مختلف پردازش زبان طبیعی از قبیل‬
‫استخراج عبارات اسمی‪،‬‬ ‫◦‬
‫بن‌واژه‌یابی‪،‬‬ ‫◦‬
‫برچسب‌زنی نقش ادت سخن‪،‬‬ ‫◦‬
‫پارسر (تجزیه‌گر) جمالت‪،‬‬ ‫◦‬
‫تحلیل احساسات‪،‬‬ ‫◦‬
‫دسته‌بندی (نایوبیز و درخت تصمیم)‪،‬‬ ‫◦‬
‫ترجمه (بوسیله مترجم گوگل)‪،‬‬ ‫◦‬
‫تصحیح اشتباهات امالیی‪،‬‬ ‫◦‬
‫و اتصال به ‪ WordNet‬است‪.‬‬ ‫◦‬
‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪37‬‬
‫کتابخانه ‪StanfordNLP‬‬
‫یکی از جدیدترین کتابخانه‌های پردازش متن چندزبانه است که در ‪ 2018‬ایجاد شد‪.‬‬
‫پشتیبانی بیش از ‪ ۵۳‬زبان با استفاده از آموزش مدلهای یادگیری عمیق بوسیله ‪ PyTorch‬است‪.‬‬
‫مدل‌های یادگیری عمیق ابزارهای مختلف این کتابخانه‪ ،‬براساس پیکره خانم دکتر سراجی‪ ،‬برای زبان فارسی‬
‫نیز آموزش داده شده و در زبان فارسی نیز قابل استفاده هستند‪.‬‬
‫تصمیم جالب دانشگاه استنفورد این بود که برخالف کتابخانه ‪ Stanford CoreNLP‬که با زبان جاوا نوشته‬
‫شده بود‪ ،‬این کتابخانه کالً با زبان محبوب پایتون نوشته شده است‪.‬‬
‫از زبان فارسی پشتیبانی می کند‪.‬‬

‫‪https://stanfordnlp.github.io‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪38‬‬
‫کتابخانه ‪Gensim‬‬
‫یکی از محبوب‌ترین و بهترین ابزارهای مدلسازی موضوع و بازنمایی متن است و برای تشخیص شباهت متون‬
‫مختلف بسیار مناسب است‪.‬‬
‫◦ ‪Topic Modeling‬‬
‫◦ ‪Vector representation‬‬
‫در این کتابخانه اغلب روش‌های مشهور در زبان پایتون پیاده‌سازی شده و به خوبی بروزرسانی و پشتیبانی می‌شوند‬
‫◦ ‪Word embedding‬‬
‫◦ ‪Word Representation‬‬
‫برای پیشپردازش متن بهتر است از کتابخانه‌های ‪ NLTK, SpaCy‬استفاده کنید‪.‬‬
‫برای تحلیل‌های بَعدی مانند استخراج کلمات کلیدی یا موضوعات درون متن از ‪ Gensim‬استفاده نمایید‪.‬‬
‫‪https://radimrehurek.com/gensim/index.html‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪39‬‬
‫کتابخانه ‪SparkNLP‬‬
‫برای استفاده از ماژول‌های کاربردی پردازش متن روی بستر ‪ Spark‬و کتابخانه ‪ Spark ML‬توسعه یافته است‬
‫برای استفاده در زبان‌های متنوع و با هدف محاسبات مقیاسپذیر برای بیگ دیتا بصورت توزیع شده‪ ،‬ایجاد شده است‪.‬‬
‫◦ ‪Python‬‬
‫◦ ‪Java‬‬
‫◦ ‪Scala‬‬
‫اغلب امکانات این کتابخانه بصورت رایگان در اختیار پژوهشگران قرار داده شده است‬
‫و تنها امکانات بخش یادگیری عمیق و ارتباط با ‪ Tensorflow‬بصورت تجاری میسر است‪.‬‬
‫‪nlp.johnsnowlabs.com/quickstart.html‬‬
‫‪github.com/JohnSnowLabs/spark-nlp/blob/2.0.0/python/example/vivekn-sentiment/sentiment.ipynb‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪40‬‬
‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪41‬‬
‫مقایسه دقت ‪ SpaCy‬و ‪ SparkNLP‬برای برچسبزنی نقش کلمات در جمله برای زبان انگلیسی‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪42‬‬
‫مقایسه کارایی ‪ SpaCy‬و ‪ SparkNLP‬در آموزش مدل یادگیر برای برچسبزنی نقش کلمات‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪43‬‬
FastText ‫کتابخانه‬
Text Classification ‫ و‬Word Embedding ‫کتابخانه ای به منظور یادگیری‬
.‫ ساخته شده است‬Facebook's AI Research (FAIR) ‫◦ توسط آزمایشگاه‬
‫ به منظور دریافت بازنمایی بُرداری کلمات‬UnSupervised ‫ و‬Supervised ‫امکان ساخت الگوریتم های‬
.‫ زبان در دسترس است‬۲۹4 ‫ برای‬FastText ‫ شده‬Pretrain ‫◦ در حال حاضر مدل های‬
.‫ استفاده می کند‬Word Embedding ‫این کتابخانه از یک شبکه عصبی به منظور‬
.‫ مقاله پژوهشی است‬۲ ‫ بر اساس این‬FastText ‫الگوریتم‬
◦ Enriching Word Vectors with Subword Information , Piotr Bojanowski, Edouard Grave, Armand Joulin
and Tomas Mikolov, 2016
◦ Bag of Tricks for Efficient Text Classification, Armand Joulin, Edouard Grave, Piotr Bojanowski, Tomas
Mikolov, 2016

‫ محمد حیدری‬،‫ دانشگاه صنعتی امیرکبیر‬،‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‬ 44
‫دسته بند متن‬
‫دسته بند متن‪ ،‬امکان دستهبندی خودکار و هوشمند متن را در دسته‌ های دلخواه فراهم می‌کند‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪45‬‬
‫خالصه ساز‬
‫خالصه‌ساز‪ ،‬بخش‌های مهم متن‌های طوالنی را تشخیص می دهد و متن خالصه شده را ارائه می کند‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪46‬‬
‫تعبیه سازی کلمات یا ‪Words Embeddings‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪47‬‬
‫تعبیه سازی کلمات یا ‪Words Embeddings‬‬

‫برای بسیاری از روشهای پردازش متن‪ ،‬نیاز به نمایش عددی کلمات و متون داریم تا بتوانیم از انواع روشهای‬
‫عددی حوزه یادگیری ماشین مانند اکثر الگوریتم های دسته بندی روی لغات و اسناد استفاده کنیم‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪48‬‬
‫تعبیه سازی کلمات یا ‪Words Embeddings‬‬
‫روش ‪ Bag of Words‬یا صندوقچه کلمات‬
‫◦ برای هر لغت در صندوقچه یا بردار ما‪ ،‬مکانی درنظر گرفته شده است‬
‫مثال‬
‫‪◦ Sentence 1: The cat sat on the hat‬‬
‫‪◦ Sentence 2: The dog ate the cat and the hat‬‬
‫◦ برای این دو جمله فرهنگ لغت ما عبارت خواهد بود از ‪:‬‬
‫} ‪◦ { the, cat, sat, on, hat, dog, ate, and‬‬
‫◦ نمایش صندوقچه کلمات این دو جمله‪:‬‬
‫} ‪◦ Sentence 1: { 2, 1, 1, 1, 1, 0, 0, 0‬‬
‫}‪◦ Sentence 2: { 3, 1, 0, 0, 1, 1, 1, 1‬‬

‫◦ با‌این‌روش‌ما‌دو بردار عددی داریم‌که‌حال‌می‌توانیم‌از‌این‌دو‌در‌الگوریتم‌های‌عددی‌خود‌استفاده‌کنیم‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪49‬‬
‫تعبیه سازی کلمات یا ‪Words Embeddings‬‬
‫◦ با‌وجود‌سادگی‌این‌روش‌‪‌،‬اما‌معایب‌بزرگی‌دارد‪.‬‬
‫◦ مثالً‌اگر‌فرهنگ‌لغت‌ما‌صد‌هزار‌لغت‌داشته‌باشد‌‪‌،‬به‌ازای‌هر‌متن‌ما‌باید‌برداری‌صد‌هزارتایی ذخیره‌کنیم‬
‫◦ که‌هم‌نیاز‌به‌فضای ذخیره سازی زیادی‌خواهیم‌داشت‌‬
‫◦ و‌هم‌پیچیدگی الگوریتم ها و زمان اجرای آنها‌را‌بسیار‌باال‌می‌برد‌‪.‬‬
‫◦ در‌این‌نحوه‌مدلسازی‪‌،‬فقط‌کلمات‌و‌تکرار‌آنها‌برای‌ما‌مهم‌بوده‌است‌و‌ترتیب‌کلمات‌یا‌زمینه‌متن‌‬
‫(اقتصادی‌‪‌،‬علمی‌‪‌،‬سیاسی‌و‌…)‌تاثیری‌در‌مدل‌ما‌نخواهد‌داشت‌(و‌این‌ضعف‌است)‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪50‬‬
‫الگوریتم ‪Word2Vec‬‬
‫◦ روش ‪Word2Vec‬‬
‫◦ روشی‌بسیار‌کارآمد‌و‌مناسب‌برای‌نمایش‌لغات‌و‌متون‌و‌پردازش‌آنها‬
‫◦ نمایش‌برداری‌کلمات که‌می‌تواند‌در‌بسیاری‌از‌کاربردهای‌نوین‌پردازش‌متن‌مانند‌سنجش‌احساسات‪‌،‬‬
‫جستجوی‌متون‌مشابه‌یا‌پیشنهاد‌اخبار‌یا‌کاالی‌مشابه‌استفاده‌شود‪.‬‬
‫◦ در‌این‌روش‌به‌کمک‌شبکه‌عصبی‌یک‌بردار‌با‌اندازه‌کوچک‌و‌ثابت‌برای‌نمایش‌تمام‌لغات و‌متون‌در‌‬
‫نظرگرفته‌شده‌و‌با‌اعداد‌مناسب‌در‌فاز‌آموزش‌مدل‪‌،‬برای‌هر‌لغت‌این‌بردار‌محاسبه‌می‌شود‪.‬‬
‫◦ اگر‌این‌بردار‌را‌‪ 4۰۰‬تایی‌فرض‌کنید‪‌،‬یک‌فضای‌‪ 4۰۰‬بعدی‌خواهیم‌داشت‌که‌هر‌لغت‌در‌این‌فضا‌یک‌‬
‫نمایش‌منحصر‌بفرد‌خواهد‌داشت‪‌.‬‬
‫◦ برای‌افزایش‌دقت‌این‌روش‪‌،‬مجموعه‌داده‌اولیه‌که‌برای‌آموزش‌مدل‌مورد‌نیاز‌است‪‌،‬باید‌حدود‌چند‌‬
‫میلیارد‌لغت‌را‌که‌درون‌چندین‌میلیون‌سند‌یا‌متن‌به‌کار‌رفته‌اند‪‌،‬در‌برگیرد‪‌.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪51‬‬
‫الگوریتم ‪Word2Vec‬‬

‫محاسبه وکتور هر کلمه پس از اعمال مدل روی کلمات‬ ‫محاسبه وکتور جمله با احتساب میانگین کلمات جمله‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪52‬‬
‫مقایسه این الگوریتم با دو رهیافت مختلف‪ ،‬از لحاظ حجم داده ها ‪ ،‬زمان الزم برای ایجاد بردارها‪ ،‬دقت و ابعاد بردارها‬

‫در این جدول‪ ،‬روش ‪ Word2Vec‬با دو الگوریتم ایجاد بردار ‪ CBOW‬و ‪ Skip-gram‬با‬
‫روشهای مدلسازی زبانی با شبکه عصبی یا‪ NNLM‬مقایسه و ارزیابی شده است‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪53‬‬
‫الگوریتم ‪Word2Vec‬‬
‫این روش که الگوریتم آن به صورت متن باز نیز منتشر شده است و کتابخانه های مختلفی برای زبانهای مختلف‬
‫برای کار با آن تولید شده است‪ ،‬زمانی که توسط گوگل بر روی حجم باالی متون و اطالعات به کار رفته است ‪،‬‬
‫نتایج بسیار شگرفی را به همراه داده است ‪.‬‬
‫امکان جمع و تفریق جبری روی کلمات‬
‫◦ مثال اگر بردار لغت پادشاه را منهای بردار لغت مرد کنیم ‪،‬‬
‫نتیجه به بردار کلمه ملکه بسیار نزدیک است‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪54‬‬
‫مثالهایی از روابط تولید شده توسط این الگوریتم‬
‫است به ایتالیا‬ ‫فرانسه به پاریس مثل ؟‬
‫شباهت ویندوز به مایکروسافت مثل شباهت ؟ است به گوگل‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪55‬‬
‫‪Skip-gram‬‬
‫این روش برعکس این روش کار می کند به این صورت که بر اساس یک لغت داده شده ‪ ،‬می خواهد چند لغت‬
‫قبل و بعد آنرا تشخیص دهد و با تغییر مداوم اعداد بردارهای لغات‪ ،‬نهایتا به یک وضعیت باثبات می رسد که‬
‫همان بردارهای مورد بحث ماست‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪56‬‬
‫روش های ‪CBOW, Skip-Gram‬‬
‫این دو روش که هر دو یک شبکه عصبی ساده هستند که بدون وجود الیه پنهانی که در اغلب روشهای شبکه‬
‫عصبی وجود دارد‪ ،‬به کمک چند قانون ساده‪ ،‬بردارهای مورد نیاز را تولید می کنند‪.‬‬
‫در روش کیف لغات پیوسته‪ ،‬ابتدا به ازای هر لغت یک بردار با طول مشخص و با اعداد تصادفی (بین صفر و‬
‫یک) تولید می شود‪.‬‬
‫سپس به ازای هر کلمه از یک سند یا متن‪ ،‬تعدادی مشخص از کلمات بعد و قبل آنرا به شبکه عصبی می دهیم (به‬
‫غیر از خود لغت فعلی) و با عملیات ساده ریاضی‪ ،‬بردار لغت فعلی را تولید می کنیم (یا به عبارتی از روی کلمات‬
‫قبل و بعد یک لغت‪ ،‬آنرا حدس می زنیم) که این اعداد با مقادیر قبلی بردار لغت جایگزین می شوند‪.‬‬
‫زمانی که این کار بر روی تمام لغات در تمام متون انجام گیرد‪ ،‬بردارهای نهایی لغات همان بردارهای مطلوب ما‬
‫هستند‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪57‬‬
‫پیاده سازی در ‪Gensim‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪58‬‬
‫آشنایی با ‪TensorFlow‬‬
‫یک کتابخانه رایگان و متن باز به منظور پیاده سازی الگوریتم های یادگیری ماشین‬
‫◦ برای‬
‫◦ دسک تاپ ‪ ،‬موبایل ‪ ،‬وب و ابر‬
‫◦ را برای مبتدیان و متخصصان آسان می کند‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪59‬‬
‫کتب مفید‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪60‬‬
‫تفسیر و ارزیابی خروجی متن کاوی‬
‫تشکیل ‪Confusion Matrix‬‬
‫معیار ‪ :Accuracy‬دقت به این معناست که مدل تا چه اندازه خروجی را درست پیش‌بینی می‌کند‬
‫معیار ‪ :Precision‬وقتی که مدل نتیجه را مثبت پیش‌بینی می‌کند‪ ،‬این نتیجه تا چه اندازه درست است‬
‫معیار ‪ :Recall‬زمانی که ارزش ‪ False Negatives‬باال باشد‪ ،‬معیار ‪ ،Recall‬معیار مناسبی خواهد بود‪.‬‬
‫معیار ‪ :F1‬یک معیار مناسب برای ارزیابی دقت یک آزمایش است‪.‬‬
‫◦ این معیار‪ Precision‬و ‪ Recall‬را با هم در نظر می‌گیرد‪.‬‬
‫◦ معیار‪ F1‬در بهترین حالت‪ ،‬یک و در بدترین حالت صفر است‪.‬‬

‫دومین دوره مجموعه سخنرانی های علم داده و هوش مصنوعی‪ ،‬دانشگاه صنعتی امیرکبیر‪ ،‬محمد حیدری‬ ‫‪61‬‬

You might also like