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

استخراج و انتخاب ویژگی‌های مناسب (Relevant features) از یک مجموعه داده نقش حیاتی در بهبود کیفیت و کارایی روش‌های یادگیری ماشین دارند. خصوصاً در داده‌های با تعداد ابعاد بالا مانند متون، داده‌های بیان ژنی (Gene expression data)، تصویر، صوت، ویدئو و غیره انتخاب ویژگی امری ضروری است. در این سری مقالات، به تبدیل متن به بردار عددی جهت استفاده بوسیله روش‌های یادگیری ماشین و شناسایی الگو توضیح داده می‌شود.

هدف از استخراج ویژگی‌های عددی از متن

اغلب روش‌های یادگیری ماشین بر روی داده‌های عددی قابل اجرا هستند و برای استفاده و اجرای آنها روی داده‌های متنی نیاز به تبدیل متون به مجموعه اعداد است. پس هدف رویکردهای مختلف تبدیل متن به بردارهای عددی، استخراج و انتخاب مجموعه‌ای از ویژگی‌های مناسب از متون زبان طبیعی است که در مرحله بعد بوسیله روش‌های یادگیری ماشین از قبیل دسته‌بندی متون (Text classification) استفاده می‌شوند. بطور کلی، استخراج ویژگی از مجموعه داده‌ها با دو هدف انجام می‌شود:

  1. افزایش کارایی و سرعت روش‌های دسته‌بندی با کاهش ابعاد و اندازه داده‌ها: بخصوص جهت بکارگیری برخی روش‌های دسته‌بندی که فاز آموزش آنها هزینه و سربار زمانی یا حافظه‌ای بالایی دارند (مانند SVM)، این امر ضروری است.
  2. افزایش دقت روش‌های دسته‌بندی: با حذف ویژگی‌های نویزی (که وجود آنها باعث افزایش خطای دسته‌بندی برای داده‌های جدید می‌شوند) و استخراج ویژگی‌های مناسب (که باعث نزدیک شدن داده‌های درون دسته‌ها و تمایز بیشتر بین داده‌های دسته‌های مختلف می‌شوند).

رویکردهای مختلف بازنمایی برداری متون

به فرایند تبدیل متن به اعداد، بردارسازی (vectorization) یا بازنمایی برداری (vector representation) متون یا مدل بردار کلمات (vector space model – VSM) می‌گویند.

رویکردهای مختلفی برای بردارسازی متون زبان طبیعی وجود دارند:

  • رویکرد کیف کلمات (bag-of-word – BOW)
  1. کدگذاری دودویی (Binary) یا وان‌هات (One-Hot Encoding)
  2. بردارسازی شمارشی (Frequency/Count Vectorizer) یا وزن‌دهی مبتنی بر TF-IDF
  3. بردارسازی درهم (Hashing Vectorizer)
  4. شمارش چندگانه‌ها (Word/Char N-gram)
  • رویکرد بازنمایی توزیع شده (Distributed Representation) و انتقال یادگیری (Transfer Learning)
  1. روش‌های تعبیه کلمات (Word Embedding) و متن از قبیل:Word2Vec، GloVe، Doc2Vec، FastTextو …
  2. روش‌های مبتنی بر یادگیری عمیق (Deep Learning) از قبیل: Embedding Layer در شبکه عصبی
  3. استفاده از بردارهای از پیش آموزش داده شده (pre-trained models) از قبیل: Elmo، GPT، BERT، GPT2، XLM، XLNet، Transfom-XL، DistillBERT و …

جایگاه پیش‌پردازش در بازنمایی برداری متن

یکی از مراحل مهم در فرایند متن‌کاوی پیش‌پردازش متن است. اغلب پیش‌پردازش متن در ابتدای فرایند متن کاوی و با یکی از اهداف ذیل انجام می‌شود:

  • پاک‌سازی و استانداردسازی متن از قبیل: اصلاح نویسه‌ها، فاصله و نیم‌فاصله‌ها، وندها یا کلمات مرکب جدانوشته شده، تبدیل کلمات محاوره‌ای و کاراکترهای حسی (ایموجی) به شکل استاندارد، ریشه‌یابی و …
  • غنی‌سازی یا حاشیه‌نویسی متن (افزودن اطلاعات جانبی مفید به متن) از قبیل: برچسب‌زنی نقش ادات سخن، گسترش معنایی کلمات (افزودن کلمات هم‌معنی یا هم‌کاربرد با کلمات کلیدی داخل متن) و …
  • حذف ویژگی‌های اضافه (کلمات بدون ارزش) از قبیل: حذف کلمات توقف، انتخاب کلیدواژه‌ها یا موجودیت‌های نامی و حذف سایر کلمات و …

فرض کنید فرهنگ لغتی داریم با N کلمه و لغت که به ترتیب الفبایی مرتب شده اند و هر لغت یک مکان مشخص در این فرهنگ لغت دارد. حال برای نمایش هر کلمه، برداری در نظر میگیریم با طول N که هر خانه آن، متناظر با یک لغت در فرهنگ لغت ماست که برای راحتی کار فرض می کنیم شماره آن خانه بردار، همان اندیس لغت مربوطه در این فرهنگ لغت خواهد بود . با این پیش فرض، برای هر لغت ما یک بردار به طول N داریم که همه خانه های آن بجز خانه متناظر با آن لغت صفر خواهد بود. در خود ستون متناظر با لغت عدد یک ذخیره خواهد شد.(One-Hot encoding) با این رهیافت، هر متن یا سند را هم می توان با یک بردار نشان داد که به ازای هر کلمه و لغتی که در آن به کار رفته است ، ستون مربوطه از این بردار برابر تعداد تکرار آن لغت خواهد بود و تمام ستون های دیگر که نمایانگر لغاتی از فرهنگ لغت هستند که در این متن به کار نرفته اند، برابر صفر خواهد بود .

به این روش نمایش متون، صندوقچه کلمات یا Bag Of Words می گوییم که بیانگر این است که برای هر لغت در صندوقچه یا بردار ما، مکانی درنظر گرفته شده است .

با یک مثال این مفهوم را بیشتر توضیح می دهیم . فرض کنید که دو جمله زیر را داریم :

Sentence 1: “The cat sat on the hat”

Sentence 2: “The dog ate the cat and the hat”

برای این دو جمله فرهنگ لغت ما عبارت خواهد بود از :

{ the, cat, sat, on, hat, dog, ate, and }

و نمایش صندوقچه کلمات این دو جمله طبق توضیح از قرار زیر است :

Sentence 1: { 2, 1, 1, 1, 1, 0, 0, 0 }

Sentence 2 are: { 3, 1, 0, 0, 1, 1, 1, 1}

با این روش ما دو بردار عددی داریم که حال می توانیم از این دو در الگوریتم های عددی خود استفاده کنیم. با وجود سادگی این روش ، اما معایب بزرگی این بر آن مترتب است. مثلاً اگر فرهنگ لغت ما صد هزار لغت داشته باشد ، به ازای هر متن ما باید برداری صد هزارتایی ذخیره کنیم که هم نیاز به فضای ذخیره سازی زیادی خواهیم داشت و هم پیچیدگی الگوریتم ها و زمان اجرای آنها را بسیار بالا می برد .

از طرف دیگر در این نحوه مدلسازی ما فقط کلمات و تکرار آنها برای ما مهم بوده است و ترتیب کلمات یا زمینه متن (اقتصادی ، علمی ، سیاسی و …) تاثیری در مدل ما نخواهد داشت .

اسکرول به بالا