استخراج ویژگی از متن در scikit-learn: راهنمای جامع
مقدمه
استخراج ویژگی از متن، فرآیندی کلیدی در پردازش زبان طبیعی (NLP) است که به منظور تبدیل متن خام به بردارهای عددی قابل استفاده برای مدلهای یادگیری ماشین انجام میشود. این بردارها، که به عنوان “ویژگیهای متنی” شناخته میشوند، اطلاعات معنیداری از متن را در قالبی خلاصه و ساختاریافته ارائه میکنند و به الگوریتمها امکان میدهند تا وظایف مختلفی مانند طبقهبندی متن، خوشهبندی موضوعی، و استخراج احساسات را به طور کارآمد انجام دهند.
کتابخانه scikit-learn طیف وسیعی از ابزارها و تکنیکهای قدرتمند را برای استخراج ویژگی از متن ارائه میدهد که در این نوشتار به بررسی آنها میپردازیم.
مراحل استخراج ویژگی از متن با scikit-learn:
۱. پیش پردازش متن:
- بارگذاری متن: متن را از طریق فایلهای متنی، پایگاههای داده یا رابطهای برنامهنویسی (API) بارگذاری کنید.
- پاکسازی متن: ناخالصیها و نویزهایی مانند علامتگذاری، اعداد، کاراکترهای خاص و غیره را از متن حذف کنید.
- تبدیل به حروف کوچک: کل متن را به حروف کوچک تبدیل کنید.
- حذف توقف کلمات: کلمات رایج و بیمعنی مانند “از”، “به”، “در” و غیره را از متن حذف کنید.
- ساقه یابی: کلمات را به ریشه اصلی خود تبدیل کنید تا اشکال مختلف یک کلمه (مانند “میروم”، “رفتن” و “رفته”) به یک شکل واحد درآیند.
۲. انتخاب روش استخراج ویژگی:
- کیسه کلمات (Bag of Words): متن را به برداری از مقادیر تبدیل کنید که نشان میدهد هر کلمه چند بار در متن ظاهر شده است. این روش سادهترین و متداولترین روش استخراج ویژگی است.
- مدل TF-IDF: از وزندهی به کلمات بر اساس فرکانس (TF) و معکوس فرکانس سندی (IDF) برای نشان دادن اهمیت هر کلمه در متن استفاده کنید. این روش برای متنی که دارای موضوعات مختلف است، مناسبتر است.
- n-gram: توالیهای n کلمهای (مانند bigrams یا trigrams) را از متن استخراج کنید. این روش میتواند اطلاعات بیشتری در مورد ساختار دستوری و معنایی متن ارائه دهد.
۳. پیادهسازی روش انتخابی:
- ابزارهای scikit-learn: از کلاسهای مربوطه در scikit-learn مانند
CountVectorizer
،TfidfVectorizer
وHashingVectorizer
برای پیادهسازی روشهای مختلف استخراج ویژگی استفاده کنید. - تنظیم پارامترها: پارامترهای مربوط به هر روش را مانند نوع توکنسازی، طول n-gram و انتخاب کننده ویژگی (مانند chi-square) تنظیم کنید.
۴. تبدیل متن به بردارهای ویژگی:
- ایجاد نمونه: با استفاده از کلاسهای مربوطه، نمونههای متنی را به بردارهای ویژگی تبدیل کنید.
- ذخیره بردارها: بردارهای ویژگی را برای استفادههای بعدی در قالب مناسب ذخیره کنید.
مثال: استخراج ویژگی از متن با استفاده از کیسه کلمات
در ادامه، مثالی از استخراج ویژگی از متن اسناد خبری با استفاده از مدل کیسه کلمات در scikit-learn ارائه میشود:
from sklearn.feature_extraction.text import CountVectorizer
# بارگذاری و پیش پردازش متن
documents = ["This is the first document.", "This is the second document."]
# ایجاد نمونه
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(documents)
# نمایش بردارهای ویژگی
print(X.toarray())
نکات کلیدی:
- انتخاب روش مناسب برای استخراج ویژگی به نوع وظیفه، حجم داده و ویژگیهای متن بستگی دارد.
- کتابخانه scikit-learn ابزارهایی برای ارزیابی کیفیت بردارهای ویژگی مانند
inspect_vocabulary
وget_feature_names
ارائه میدهد. - میتوان از تکنیکهای مختلف کاهش ابعاد مانند PCA برای فشردهسازی بردارهای ویژگی و کاهش پیچیدگی مدل استفاده کرد.
منابع:
- مستندات scikit-learn: استخراج ویژگی: https://scikit-learn.org/stable/modules/feature_extraction.html