کیف کلمات – جامعه dev

کیف کلمات (کمان) یک تکنیک اساسی در پردازش متن است ، جایی که متن بر اساس حضور و فرکانس کلمات به بردارهای عددی تبدیل می شود. این یک روش ساده و در عین حال قدرتمند برای تبدیل داده های متنی به فرمی است که مدل های یادگیری ماشین می توانند درک کنند.
چرا نام “کیف کلمات”؟
هدف اصلی
متن (کلمات یا جملات) را به بازنمایی های عددی تبدیل کنید که مدل های یادگیری ماشین می توانند درک کنند.
آنچه را حل می کند
-
متن را به بردارهای عددی تبدیل می کند: هر کلمه منحصر به فرد در متن به عنوان یک ویژگی (ستون) در یک بردار نشان داده شده است.
-
متن را در بازنمایی های طول ثابت رمزگذاری می کند: هر جمله به یک بردار از تعداد کلمات تبدیل می شود و از اندازه بردار ثابت اطمینان می یابد.
برنامه های محبوب کیف کلمات (کمان)
1) طبقه بندی متن:
استفاده شده با الگوریتم هایی مانند بیوها برای تشخیص هرزنامه یا تجزیه و تحلیل احساسات. هر سند به یک کیف وکتور کلمات تبدیل می شود ، و مدل احتمالات کلمه را برای هر کلاس می آموزد (به عنوان مثال ، هرزنامه یا نه اسپم).
2) شباهت سند (شباهت Cosine):
کیف های کلمات امکان سنجش شباهت بین اسناد را با استفاده از شباهت، که در موتورهای جستجو و سیستم های توصیه ای مفید است.
3) مدل سازی موضوع (تخصیص Dirichlet نهفته [LDA]):
کیف کلمات کلمه توزیع استفاده شده توسط LDA برای کشف مباحث پنهان در مجموعه ای از اسناد.
مزایا و محدودیت ها
مزایا
1) درک آسان: اجرای سریع بدون منطق پیچیده.
2) برای مجموعه داده های کوچک کارآمد: با کارهای اساسی پردازش متن خوب عمل می کند.
3) سازگار با مدل های اساسی: یکپارچه با الگوریتم هایی مانند Bayes ساده لوح و رگرسیون لجستیک کار می کند.
محدودیت ها
1) بدون آگاهی از زمینه: ساختار دستور و ساختار جمله را نادیده می گیرد.
2) ابعاد بالا: واژگان بزرگ منجر به بردارهای پراکنده و با ابعاد بالا می شود.
3) فاقد درک معنایی: کلمات به طور مستقل و بدون معنی رفتار می شوند.
منطق اصلی
- ایجاد واژگان: کلمات منحصر به فرد را از متن اولیه استخراج می کند.
- بردار متن: متن جدید را با استفاده از واژگان ثابت به یک بردار تبدیل می کند.
- قابلیت استفاده مجدد: واژگان ثابت سازگاری در چندین متن را تضمین می کند.
نمونه اجرای پایتون
import nltk
nltk.download('punkt')
import string
# Step 1: Build Vocabulary from Initial Text
def build_vocabulary(text):
dataset = nltk.sent_tokenize(text)
vocabulary = set()
for sentence in dataset:
for word in nltk.word_tokenize(sentence):
word = word.lower().strip(string.punctuation)
if word:
vocabulary.add(word)
return sorted(list(vocabulary))
# Step 2: Convert New Text to Bag of Words Vector Using the Fixed Vocabulary
def text_to_bag_of_words(text, vocabulary):
dataset = nltk.sent_tokenize(text)
word2count = dict.fromkeys(vocabulary, 0)
for sentence in dataset:
for word in nltk.word_tokenize(sentence):
word = word.lower().strip(string.punctuation)
if word in word2count:
word2count[word] += 1
vector = [str(word2count[word]) for word in vocabulary]
return vector
# Initial Text (Training Text)
initial_text = "Python is great for data science. Coding is fun!"
vocabulary = build_vocabulary(initial_text)
print("Vocabulary (Fixed):", vocabulary)
# Using the Fixed Vocabulary to represent New Text
new_text = "Python is amazing. Data science is evolving."
vector = text_to_bag_of_words(new_text, vocabulary)
print("Bag of Words Vector for New Text:")
print(f"[{', '.join(vector)}]")
خروجی
Vocabulary (Fixed): ['coding', 'data', 'for', 'fun', 'great', 'is', 'python', 'science']
Bag of Words Vector for New Text:
[0, 1, 0, 0, 0, 2, 1, 1]
پایان
کیف کلمات (کمان) یک تکنیک اساسی پردازش متن است که به دلیل سادگی و شفافیت آن شناخته شده است. با وجود محدودیت های آن ، درک کمان بسیار مهم است زیرا پایه و اساس درک روشهای پیشرفته تر در پردازش زبان طبیعی را ایجاد می کند.