استخراج و انتخاب ویژگیهای مناسب (Relevant features) از یک مجموعه داده نقش حیاتی در بهبود کیفیت و کارایی روشهای یادگیری ماشین دارند. خصوصاً در دادههای با تعداد ابعاد بالا مانند متون، دادههای بیان ژنی (Gene expression data)، تصویر، صوت، ویدئو و غیره انتخاب ویژگی امری ضروری است. در این سری مقالات، به تبدیل متن به بردار عددی جهت استفاده بوسیله روشهای یادگیری ماشین و شناسایی الگو توضیح داده میشود.
اغلب روشهای یادگیری ماشین بر روی دادههای عددی قابل اجرا هستند و برای استفاده و اجرای آنها روی دادههای متنی نیاز به تبدیل متون به مجموعه اعداد است. پس هدف رویکردهای مختلف تبدیل متن به بردارهای عددی، استخراج و انتخاب مجموعهای از ویژگیهای مناسب از متون زبان طبیعی است که در مرحله بعد بوسیله روشهای یادگیری ماشین از قبیل دستهبندی متون (Text classification) استفاده میشوند. بطور کلی، استخراج ویژگی از مجموعه دادهها با دو هدف انجام میشود:
به فرایند تبدیل متن به اعداد، بردارسازی (vectorization) یا بازنمایی برداری (vector representation) متون یا مدل بردار کلمات (vector space model – VSM) میگویند.
رویکردهای مختلفی برای بردارسازی متون زبان طبیعی وجود دارند:
یکی از مراحل مهم در فرایند متنکاوی پیشپردازش متن است. اغلب پیشپردازش متن در ابتدای فرایند متن کاوی و با یکی از اهداف ذیل انجام میشود:
فرض کنید فرهنگ لغتی داریم با 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}
با این روش ما دو بردار عددی داریم که حال می توانیم از این دو در الگوریتم های عددی خود استفاده کنیم. با وجود سادگی این روش ، اما معایب بزرگی این بر آن مترتب است. مثلاً اگر فرهنگ لغت ما صد هزار لغت داشته باشد ، به ازای هر متن ما باید برداری صد هزارتایی ذخیره کنیم که هم نیاز به فضای ذخیره سازی زیادی خواهیم داشت و هم پیچیدگی الگوریتم ها و زمان اجرای آنها را بسیار بالا می برد .
از طرف دیگر در این نحوه مدلسازی ما فقط کلمات و تکرار آنها برای ما مهم بوده است و ترتیب کلمات یا زمینه متن (اقتصادی ، علمی ، سیاسی و …) تاثیری در مدل ما نخواهد داشت .