پردازش متن با scikit-learn: راهنمای جامع
مقدمه
کتابخانه scikit-learn به عنوان ابزاری قدرتمند در حوزه یادگیری ماشین، طیف وسیعی از ابزارها و الگوریتمهای کاربردی را برای پردازش متن ارائه میدهد. این امر به کاربران این کتابخانه محبوب امکان میدهد تا به طور کارآمد وظایف مختلف مربوط به پردازش متن مانند پیش پردازش، استخراج ویژگی، طبقهبندی و خوشهبندی را انجام دهند.
مراحل پردازش متن با scikit-learn:
-
بارگذاری و پیش پردازش متن:
- بارگذاری متن: متن را از طریق فایلهای متنی، پایگاههای داده یا رابطهای برنامهنویسی (API) بارگذاری کنید.
- پاکسازی متن: ناخالصیها و نویزهایی مانند علامتگذاری، اعداد، کاراکترهای خاص و غیره را از متن حذف کنید.
- تبدیل به حروف کوچک: کل متن را به حروف کوچک تبدیل کنید.
- حذف توقف کلمات: کلمات رایج و بیمعنی مانند “از”، “به”، “در” و غیره را از متن حذف کنید.
- ساقه یابی: کلمات را به ریشه اصلی خود تبدیل کنید تا اشکال مختلف یک کلمه (مانند “میروم”، “رفتن” و “رفته”) به یک شکل واحد درآیند.
-
استخراج ویژگی:
- کیسه کلمات (Bag of Words): متن را به برداری از مقادیر تبدیل کنید که نشان میدهد هر کلمه چند بار در متن ظاهر شده است.
- مدل TF-IDF: از وزندهی به کلمات بر اساس فرکانس (TF) و معکوس فرکانس سندی (IDF) برای نشان دادن اهمیت هر کلمه در متن استفاده کنید.
- n-gram: توالیهای n کلمهای (مانند bigrams یا trigrams) را از متن استخراج کنید.
-
مدلسازی:
- انتخاب الگوریتم: با توجه به نوع وظیفه (طبقهبندی، خوشهبندی و غیره) الگوریتم مناسب را انتخاب کنید. scikit-learn طیف وسیعی از الگوریتمهای یادگیری ماشین مانند Naive Bayes، SVM و Random Forest را برای پردازش متن ارائه میدهد.
- آموزش مدل: مدل را با استفاده از مجموعه داده آموزش (متن و برچسبهای مربوطه) آموزش دهید.
- پیشبینی: از مدل آموزشدیده برای پیشبینی برچسبهای جدید برای دادههای متنی جدید استفاده کنید.
-
ارزیابی:
- محاسبه معیارهای عملکرد: از معیارهای مناسب مانند دقت، فراخوان، AUC، F1-score و غیره برای ارزیابی عملکرد مدل بر روی مجموعه داده تست استفاده کنید.
- تجزیه و تحلیل نتایج: نتایج را به دقت بررسی کنید و در صورت نیاز مدل را با تنظیم پارامترها یا انتخاب الگوریتم مناسب تر، بهینه کنید.
ابزارهای کاربردی scikit-learn:
CountVectorizer
برای پیادهسازی مدل کیسه کلماتTfidfVectorizer
برای پیادهسازی مدل TF-IDFHashingVectorizer
برای تبدیل سریع متن به بردارNaiveBayesClassifier
برای طبقهبندی متن با استفاده از مدل بیس سادهLinearSVC
برای طبقهبندی متن با استفاده از ماشین بردار پشتیبان خطیRandomForestClassifier
برای طبقهبندی متن با استفاده از جنگل تصادفی
مثال: طبقهبندی اسپم ایمیل با استفاده از Naive Bayes
در ادامه، مثالی از طبقهبندی ایمیلهای اسپم و غیر اسپم با استفاده از مدل Naive Bayes در scikit-learn ارائه میشود:
Python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
# بارگذاری و پیش پردازش داده ها
data = load_iris()
X = data.data
y = data.target
# تقسیم داده ها به مجموعه های آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=۰.۲)
# آموزش مدل Naive Bayes
model = GaussianNB()
model.fit(X_train, y_train)
# پیش بینی بر روی مجموعه داده تست
y_pred = model.predict(X_test)
# ارزیابی عملکرد مدل