طبقهبندی متنی با scikit-learn: راهنمای جامع
مقدمه
طبقهبندی متنی یکی از وظایف مهم در پردازش زبان طبیعی (NLP) است که به منظور دستهبندی خودکار متنها به دستههای از پیش تعریفشده انجام میشود. این امر در طیف وسیعی از کاربردها مانند فیلتر کردن ایمیلهای اسپم، دستهبندی موضوعی مقالات خبری، و تشخیص احساسات متن ها حائز اهمیت است.
کتابخانه scikit-learn به عنوان ابزاری قدرتمند در یادگیری ماشین، طیف وسیعی از الگوریتمها و ابزارهای کاربردی را برای طبقهبندی متنی ارائه میدهد که در این نوشتار به بررسی آنها میپردازیم.
مراحل طبقهبندی متنی با scikit-learn:
۱. پیش پردازش متن:
- بارگذاری و پیش پردازش داده ها: متن را از طریق فایلهای متنی، پایگاههای داده یا رابطهای برنامهنویسی (API) بارگذاری کنید.
- پاکسازی متن: ناخالصیها و نویزهایی مانند علامتگذاری، اعداد، کاراکترهای خاص و غیره را از متن حذف کنید.
- تبدیل به حروف کوچک: کل متن را به حروف کوچک تبدیل کنید.
- حذف توقف کلمات: کلمات رایج و بیمعنی مانند “از”، “به”، “در” و غیره را از متن حذف کنید.
- ساقه یابی: کلمات را به ریشه اصلی خود تبدیل کنید تا اشکال مختلف یک کلمه (مانند “میروم”، “رفتن” و “رفته”) به یک شکل واحد درآیند.
۲. استخراج ویژگی:
- انتخاب روش استخراج ویژگی: روش مناسب برای استخراج ویژگی از متن را با توجه به نوع وظیفه، حجم داده و ویژگیهای متن انتخاب کنید. روشهای رایج شامل کیسه کلمات، مدل TF-IDF و n-gram هستند.
- پیادهسازی روش انتخابی: از ابزارهای scikit-learn مانند
CountVectorizer
،TfidfVectorizer
وHashingVectorizer
برای پیادهسازی روشهای مختلف استخراج ویژگی استفاده کنید. - تبدیل متن به بردارهای ویژگی: متنها را با استفاده از کلاسهای مربوطه به بردارهای ویژگی تبدیل کنید.
۳. انتخاب و آموزش مدل:
- انتخاب الگوریتم: با توجه به نوع وظیفه (چند کلاسه یا دودویی) و حجم داده، الگوریتم مناسب را از بین الگوریتمهای یادگیری ماشین مانند Naive Bayes، SVM، Random Forest و Logistic Regression انتخاب کنید.
- تقسیم داده ها: داده ها را به مجموعه های آموزش و تست تقسیم کنید. مجموعه داده آموزش برای آموزش مدل و مجموعه داده تست برای ارزیابی عملکرد آن استفاده می شود.
- آموزش مدل: مدل را با استفاده از مجموعه داده آموزش و بردارهای ویژگی آموزش دهید.
۴. ارزیابی و بهینهسازی:
- محاسبه معیارهای عملکرد: از معیارهای مناسب مانند دقت، فراخوان، AUC، F1-score و غیره برای ارزیابی عملکرد مدل بر روی مجموعه داده تست استفاده کنید.
- تجزیه و تحلیل نتایج: نتایج را به دقت بررسی کنید و در صورت نیاز مدل را با تنظیم پارامترها، انتخاب الگوریتم مناسب تر یا افزایش حجم داده ها، بهینه کنید.
ابزارهای کاربردی scikit-learn:
CountVectorizer
،TfidfVectorizer
وHashingVectorizer
برای استخراج ویژگی از متنNaiveBayesClassifier
،LinearSVC
،RandomForestClassifier
وLogisticRegression
برای طبقهبندی متنیtrain_test_split
برای تقسیم داده ها به مجموعه های آموزش و تستaccuracy_score
،precision_score
،recall_score
،f1_score
وroc_auc_score
برای محاسبه معیارهای عملکرد
مثال: طبقهبندی موضوعی مقالات خبری با استفاده از Naive Bayes
در ادامه، مثالی از طبقهبندی موضوعی مقالات خبری به سه دسته ورزشی، سیاسی و علمی با استفاده از مدل Naive Bayes در scikit-learn ارائه میشود:
Python
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
# بارگذاری و پیش پردازش داده ها
newsgroups = fetch_20newsgroups()
X