تشخیص شباهت متون (Text Similarity) با استفاده از الگوریتم Jaccard

فرض کنید شما مسئول مرور پایان‌نامه‌های دانشجویی هستید و یک پروژه به شما سپرده شده است. در این پروژه بایستی میزان شباهتِ یک پایان‌نامه‌ی جدید را با پایان‌نامه‌های موجود در دانشگاه مقایسه کنید تا دانشگاه بتواند اطمینان حاصل کند که این پایان‌نامه یک پایان‌نامه‌ی تقلبی و کپی نیست. قطعاً شما نمی‌توانید این کار را در زمان معقول و با کیفیت معقول انجام دهید، پس احتمالاً نیاز به طراحی یک الگوریتم برای انجام این کار دارید.

ادامه خواندن “تشخیص شباهت متون (Text Similarity) با استفاده از الگوریتم Jaccard”

یافتن ریشه کلمات با Stemming و Lemmatization

اگر درس‌های قبل، مخصوصاً درسِ کوله‌ی کلمات (BoW) و تحلیل احساسات را خوانده باشید، احتمالاً متوجه یک نکته شده‌اید. عموماً در متونِ مختلف، کلماتی وجود دارند که نزدیک به هم هستند ولی به دو یا چند شکل مختلف نوشته می‌شوند. الگوریتم‌های متن‌کاوی این نوع کلمات را به دو یا چند شکل مختلف شناسایی می‌کند و نمی‌تواند رابطه‌ی معنایی بین این این کلمات پیدا کتند. مثلاً فرض کنید دو کلمه‌ی “غذا” و “غذاها” در یک جمله باشند. با استفاده از مدل‌هایی مانند BoW جهت تبدیل کلمات به ماتریس، کلمه‌ی “غذا” یک ویژگی (بُعد) و کلمه‌ی “غذاها” یک ویژگی (بُعد) دیگر می‌شود که این یک نقطه ضعف برای مدل‌هایی مانند BoW یا الگوریتم‌های متن‌کاوی دیگر است.

ادامه خواندن “یافتن ریشه کلمات با Stemming و Lemmatization”

مدل‌سازی موضوعات (Topic Modeling) و کاربرد آن در متن‌کاوی

فرض کنید شما مسئول دسته‌بندی کردنِ اخبار در یک وب‌سایت خبری هستید. در روز اخبارِ زیادی در این سایت درج می‌شود و هر خبر، به یک موضوعِ خاص تعلق دارد. شما آدمی هستید که می‌خواهید هوشمندانه و نه سخت، کار کنید. پس بهتر است به جای این‌که هر خبر را بخوانید و موضوعاتِ مختلفِ آن را استخراج کنید، با ساخت الگوریتم، فرآیندِ استخراخ موضوعات را خودکار انجام دهید.

ادامه خواندن “مدل‌سازی موضوعات (Topic Modeling) و کاربرد آن در متن‌کاوی”

n-gram و کاربرد آن در متن‌کاوی

درس قبل را به خاطر بیاورید. در آن درس به تحلیل احساسات در نظرات مختلف پرداختیم. به این صورت که ما با استفاده از مدلی مانند کوله‌ای از کلمات (Bag of Words) کلماتِ یک متن را از همدیگر جدا کرده و هر کدام را به عنوان یک ویژگی (بُعد) در نظر گرفتیم. این ابعاد که ماتریسِ مجموعه‌ی آموزشیِ ما را تشکیل می‌دادند، به الگوریتمِ طبقه‌بندی تزریق می‌شدند تا عملیاتِ یادگیری و طبقه‌بندی جهت برچسب‌زنیِ خودکار (مثبت، منفی یا خنثی) را با توجه به ابعاد و ویژگی‌ها (که همان کلمات بودند) انجام دهند. این خلاصه‌ای از دروس گذشته‌ی این دوره بود.

ادامه خواندن “n-gram و کاربرد آن در متن‌کاوی”

تحلیل احساسات (Sentiment Analysis) در متن‌کاوی

یکی از کاربردهای متن‌کاوی که بسیار مورد توجهِ متخصصان و دانشمندان علوم‌داده قرار گرفته است، تحلیل احساسات یا همان Sentiment Analysis می‌باشد. تحلیل احساسات می‌تواند به معنیِ پیدا کردنِ احساس یا حالت گفتار (مثبت، منفی یا خنثی و یا موارد دیگر) در متون باشد. فرض کنید قبل از انتخاباتِ ریاست جمهوری یک گروهِ سیاسی به شما پیشنهاد داده است که نظراتِ مختلفِ مردم در شبکه‌های اجتماعی را جمع‌آوری کنید و بگویید که مردم در این نظرات، حس خوبی به گروهِ سیاسی داشته‌اند یا خیر؟ و یا نسبت یا درصدِ این نظرات را بگویید. این یک نوع مسئله‌ی تحلیل احساسات است که در این درس به آن می‌پردازیم.

ادامه خواندن “تحلیل احساسات (Sentiment Analysis) در متن‌کاوی”

روش TF-IDF برای ساختاردهی به داده‌های متنی

در درسِ قبلی یاد گرفتیم که چگونه می‌توان داده‌های غیرساختاریافته‌ی متنی را به داده‌های ساختاریافته‌ی ماتریسی توسط BoW تبدیل کرد. در این درس می‌خواهیم به هر کلمه در متن یک وزن اختصاص دهیم. با این کار، می‌توانیم اهمیتِ یک کلمه را در فرآیندِ مهندسیِ ویژگی (Feature Engineering) بهتر شناسایی کرده و در نهایت ویژگی‌های بهتری را برای تزریق به الگوریتم‌های بعدی مانند طبقه‌بندی یا خوشه‌بندی داشته باشیم.

ادامه خواندن “روش TF-IDF برای ساختاردهی به داده‌های متنی”

ساخت کوله‌ی کلمات (Bag of Words) در پیش‌پردازش متون

در دوره داده‌کاوی درسی با عنوانِ پیش‌پردازش داده‌ها داشتیم. همچنین دوره‌ای جداگانه به پیش‌پردازش داده‌ها اختصاص دادیم و این خود اهمیتِ این موضوع را در داده‌کاوی و یادگیری ماشین نشان می‌دهد. در بحثِ تحلیلِ متون و متن‌کاوی نیز، قبل از انجام عملیاتِ مختلف مانندِ طبقه‌بندی بر روی متن و یا خوشه‌بندی، نیاز هست تا متون به یک فُرمتِ قابل فهم برای کامپیوتر برای محاسباتِ بعدی تبدیل شوند.

ادامه خواندن “ساخت کوله‌ی کلمات (Bag of Words) در پیش‌پردازش متون”

متن کاوی (Text Mining) و پردازش زبان طبیعی (NLP) چیست؟

ما هر روزه با زبانِ فارسی با هم گفت‌و‌گو می‌کنیم. انگلیسی‌ها هم با زبانِ انگلیسی با یکدیگر صحبت می‌کنند. به این صورت است که زبان، ابزاری برای ارتباط با همنوعان در‌آمده است. به این زبان، زبانِ طبیعی (Natural Language) می‌گویند و مشکلِ اصلیِ آن (از نگاهِ کامپیوتر) این است که کامپیوتر به صورت پیش‌فرض فقط ۰ها و ۱ها را می‌فهمد. یعنی یک کامپیوتر نمی‌تواند زبانِ طبیعیِ محاوره‌ایِ ما را متوجه شود. برای همین نیاز است تا یک مجموعه عملیات (Processes) بر روی این زبان طبیعی انجام شود (Natural Language Processing یا همان NLP) تا بتوان آن را برای کامپیوتر قابل فهم کرد. بعد از آن می‌توان از قدرتِ کامیپوتر در محاسبات و یادگیری ماشین استفاده کنیم تا اطلاعاتِ ارزشمندی را از میان این داده‌ها استخراج کنیم.

ادامه خواندن “متن کاوی (Text Mining) و پردازش زبان طبیعی (NLP) چیست؟”

الگوریتم ABOD جهت تشخیص داده‌های پرت از طریق زاویه

در دروس قبلی از دوره‌ی جاری با داده‌های پرت (Outliers) و چندین الگوریتم جهت شناسایی این داده‌ها آشنا شدیم. این الگوریتم‌ها معمولاً داده‌هایی را به عنوانِ داده‌ی پَرت انتخاب می‌کنند که آن داده، جدا از داده‌های دیگر باشد یا به نوعی جدا از داده‌های دیگر رفتار کنند. اگر درس ویژگی یا همان بُعد و درس داده‌هایی با ابعادِ بالا را خوانده باشید، متوجه می‌شوید که برخی از مجموعه‌ی داده‌ها در ابعادِ بسیار زیادی قرار دارند. برای مثال ممکن است یک مجموعه‌ی داده‌ی تصویری، ۱میلیون ویژگی (بُعد) داشته باشد که این، کار را برای الگوریتم‌های مختلف در داده‌کاوی سخت می‌کند. برای شناسایی داده‌های پرت در این دست از مسائل که ابعاد زیادی دارند، می‌توان از الگوریتم‌هایی مانند ABOD که در این درس به آن می‌پردازیم استفاده کرد.

ادامه خواندن “الگوریتم ABOD جهت تشخیص داده‌های پرت از طریق زاویه”

مجموعه داده‌هایی با ابعاد زیاد (High Dimensional)

در درسِ ویژگی یا همان بُعد چیست، به این نکته رسیدیم که در داده‌کاوی و یادگیری ماشین، بسیاری از مواقع، داده‌ها دارای ویژگی‌های مختلفی هستند که آن‌ها را ابعاد نیز می‌نامند. مثلاً در مثال همان درس دیدیم که برای تعیین نوع اتومبیل، دو ویژگیِ طول و ارتفاع را در نظر گرفتیم که هر کدام از این‌ها یک بُعد در فضا بودند. پس مسئله در آن درس ۲بُعدی بود. اما ممکن است یک مجموعه‌ی داده دارای ابعاد بیشتری نیز باشد که می‌خواهیم در مورد آن، در این درس صحبت کنیم.

ادامه خواندن “مجموعه داده‌هایی با ابعاد زیاد (High Dimensional)”