«پردازش زبان طبیعی» (Natural Language Processing) از جمله مباحثی محسوب می‌شود که این روزها توجهات زیادی را به خود جلب کرده است. یکی از دلایل اصلی این امر، کاربردهای زیاد و متنوعی است که پردازش زبان طبیعی دارد. در آموزش مباحثی مانند «داده‌کاوی» (Data Mining)، پردازش زبان طبیعی و برنامه‌نویسی، استفاده از پروژه‌های عملی، به افزایش ضریب یادگیری کمک شایان توجهی می‌کند. به همین دلیل، در این مطلب با بهره‌گیری از یک پروژه جذاب و کاربردی، آموزش پردازش زبان طبیعی ارائه شده است.

آموزش پردازش زبان طبیعی با یک پروژه

ساخت رزومه، نیازمند دقت و هوشمندی کافی است. برخی از چالش‌ها و پرسش‌هایی که افراد ضمن ساختن رزومه خود با آن‌ها مواجه می‌شود عبارتند از:

  • آیا پیرامون پروژه‌هایی که پیش از این انجام داده‌ام به صورت تفضیلی اطلاعات ارائه کنم و یا به صورت مختصر و تیتروار به آن‌ها اشاره داشته باشم؟
  • مهارت‌های متعددی را در رزومه بنویسم و یا صرفا مهارت‌های کلیدی خودم را بیان کنم؟
  • آیا از زبان‌های برنامه‌نویسی متعدد در رزومه خود نام ببرم و یا فقط به چند مورد اشاره کنم؟
  • رزومه را در یک صفحه تنظیم کنم و یا تعداد بیشتری صفحه به بیان جزئیات اختصاص بدهم؟

این جنس از چالش‌ها برای اغلب افرادی که قصد ساختن رزومه دارند وجود دارد. از سوی دیگر، افرادی که قصد استخدام نیرو دارند نیز، گاهی با حجم انبوهی از رزومه‌ها مواجه می‌شوند که انتخاب رزومه‌های مناسب را جهت دعوت به مصاحبه دشوار می‌کند. دانشمندان داده نیز از این قاعده مستثنی نیستند. اما، تحلیلگران و «دانشمندان داده» (Data Scientists)، به شیوه خود به حل چنین مشکلاتی می‌پردازند. در این مطلب، پروژه‌ای تعریف شده که نشان می‌دهد، چگونه می‌توان با بهره‌گیری از علم داده، رزومه‌های حائز شرایط را از میزان حجم انبوه رزومه‌ها گزینش کرد.

«ونکات رمن» (Venkat Raman)، دانشمند داده‌ای است که این پروژه را طرح‌ریزی کرده و انجام داده است. رمن، دوستی دارد که مالک و مدیر یک شرکت مشاوره علم داده است. دوست رمن، اخیرا یک پروژه بسیار خوب جذب کرده بود و نیاز به استخدام دو دانشمند داده داشت. بنابراین، یک آگهی شغلی تنظیم کرده و آن را در لینکدین قرار داده بود. در همین راستا، نزدیک به 2۰۰ رزومه دریافت می‌کند. طی یک جلسه حضوری که بین رمن و مالک شرکت (دوست رمن) برگزار می‌شود، مالک چنین می‌گوید: اگر راهی باشد که بهترین رزومه را از میان همه رزومه‌ها پیدا کنم، کارم با سرعت بسیار بیشتری پیش خواهد رفت. نویسنده مطلب که پیش از این روی چندین پروژه NLP کار کرده بود، تصمیم می‌گیرد که مشکل دوست خود را حل کند. بنابراین به او می گوید که امکان دارد بتواند با استفاده از روش‌های پردازش زبان طبیعی مشکل او را حتی اگر به صورت کامل نه، ولی تا حد زیادی، حل کند. در اینجا است که پروژه رمن آغاز می‌شود و او برای حل این مشکل به روش یک دانشمند داده، دست به کار می‌شود.

بیان دقیق نیازها

شرکت تحلیل داده، نیاز به یک کارشناس «یادگیری عمیق» (Deep Learning)‌ دارد که با دیگر الگوریتم‌های «یادگیری ماشین» (Machine Learning) نیز آشنایی داشته باشند. کاندید دیگر نیز باید بر «کلان داده» (Big Data | بنا بر تصویب فرهنگستان به آن در فارسی مَه‌داده می‌گویند) و روش‌ها و ابزارهای مهندسی داده‌ها از جمله «اسکالا»، AWS، «داکرز» (Dockers) و «کوبرنتز» (Kubernetes) تسلط داشته باشد.

رویکرد

هنگامی که رومن متوجه می‌شود که دوستش در کاندیداها به دنبال چه ویژگی‌هایی است، رویکردی را برای چگونگی حل این مساله طرح می‌کند. در ادامه، رویکرد رومن برای حل این مساله بیان شده است.

  • داشتن یک دیکشنری یا جدول که همه مجموعه مهارت‌ها را داشته باشد؛ در واقع، باید دیکشنری ساخته شود که کلماتی مانند «کِرَس» (keras)، «تنسورفلو» (tensorflow) و RNN در آن ثبت شود. سپس، موارد مذکور در ستونی با نام یادگیری عمیق قرار داده شوند.
  • داشتن یک الگوریتم پردازش زبان طبیعی که کل رزومه‌ها را «تجزیه» (Parse) کند و اساسا به دنبال کلمات منشن شده در دیکشنری یا جدول باشد.
  • گام بعدی شمارش وقوع کلمات در دسته‌های گوناگون است. برای مثال، چیزی مانند جدول زیر باید برای هر متقاضی کار ساخته شود.آموزش پردازش زبان طبیعی

کاندیدای مشخص شده در جدول بالا، گزینه خوبی برای دانشمند داده یادگیری عمیق محسوب می‌شود و به نظر می‌رسد فردی است که که صاحب شرکت به دنبال آن می‌گردد. اطلاعات بالا باید به شیوه بصری ارائه شوند تا انتخاب کاندید مناسب را آسان کنند.

پیاده‌سازی

اکنون که رویکرد مورد استفاده مشخص شد، مانع بعدی که باید بر آن غلبه کرد نحوه پیاده‌سازی روش بیان شده است.

پردازش زبان طبیعی

Spacy، کتابخانه‌ای است که می‌توان از آن برای تطبیق کلمه و عبارت استفاده کرد. در این کتابخانه، قابلیتی وجود دارد که به آن «Phrase Matcher» گفته می‌شود. در ادامه، از این قابلیت برای حل مساله موجود استفاده خواهد شد.

خواندن رزومه

بسته‌های گوناگونی وجود دارند که به خواندن رزومه‌ها کمک می‌کنند. خوشبختانه، همه رزومه‌هایی که شرکت دریافت کرده در قالب PDF هستند. بنابراین، می‌توان از بسته‌هایی مانند PDF-Mine یا PyPDF2 برای انجام این کار استفاده کرد. در این مطلب، از PyPDF2 استفاده شده است. در ادامه،‌ پیاده‌سازی روش بیان شده با استفاده از زبان برنامه‌نویسی پایتون و کتابخانه Matplotlib انجام شده است.

اکنون که کد کامل موجود است، نیاز به تاکید بر دو نکته است که در ادامه بیان شده‌اند.

فایل CSV کلیدواژه‌ها

فایل CSV کلیدواژه‌ها در خط 44 کد، با عنوان «emplate_new.csv» ارجاع داده شده است. هر سازمانی می‌تواند آن را با پایگاه داده اختصاصی خود جایگزین کند (و تغییرات مورد نیاز را در کد ایجاد کند) اما برای راحتی بیشتر در اینجا از فایل CSV ساخته شده در اکسل استفاده شده است. کلمات موجود در هر دسته قراردادی و قابل تغییر هستند. در تصویر زیر، لیست کلماتی که برای تطبیق عبارات موجود در رزومه‌ها مورد استفاده قرار می‌گیرد را می‌توان مشاهده کرد.

آموزش پردازش زبان طبیعی
برای مشاهده نسخه کامل تصویر، روی آن کلیک کنید.

جدول کلیدواژه‌ها

در خط 114 کد، خطی اجرا می‌شود که فایل CSV را تولید می‌کند. این فایل CSV تعداد کلیدواژه‌های محاسبه شده برای هر کاندید را مشخص می‌کند (نام واقعی کاندیدها در اینجا پوشانده شده است).

آموزش پردازش زبان طبیعی

جدول فوق شاید به اندازه لازم بصری نیست. بنابراین، بصری‌سازی داده‌ها به شکل زیر انجام شده تا فرایند انتخاب را تسریع و تسهیل کند.

آموزش پردازش زبان طبیعی
برای مشاهده تصویر در ابعاد کامل روی آن کلیک کنید.

از نمودار چنین به نظر می‌رسد که Dom Cobb و Fischer بیشترین شباهت را به کارشناس مورد نظر مدیر شرکت دارند و زمینه فعالیت سایر افراد عمومی‌تر است.

آیا این رویکرد موثر است؟

مدیر شرکت با اجرای این کد، موفق به انتخاب 1۵ رزومه از میان 2۰۰ رزومه شده است. در مصاحبه‌ها مشخص شده که انتخاب‌های حاصل از اجرای این پروژه، گزینه‌های مناسبی بوده‌اند. انجام چنین کاری بدون بهره‌گیری از پردازش زبان طبیعی و کد پایتون، کاری بسیار زمان‌بر خواهد بود.

دسته‌بندی و تطبیق عبارت

حتی اگر مالک شرکت، همه رزومه‌ها را بخواند، گفتن اینکه فرد در یادگیری ماشین متخصص است یا نه، باز هم کار سختی محسوب می‌شود. زیرا فرد تعداد عبارات مرتبط را به ذهن نمی‌سپارد. این در حالی است که کد اراسه شده در بالا، کلیدواژه‌ها را شکار، دفعات وقوع آن‌ها را محاسبه و در نهایت آن‌ها را دسته‌بندی می‌کند.

بصری‌سازی داده‌ها

بصری‌سازی داده‌ها جنبه بسیار مهمی از یک پروژه تحلیل داده محسوب می‌شود. این کار، فرایند تصمیم‌گیری را با تعیین این که کدام کاندید، کلیدواژه‌های موجود در یک دسته خاص را بیشتر به کار برده، بهبود می‌بخشد. از سوی دیگر، اگر فرد گستره بالایی از مهارت‌ها را داشته باشد، مشخص است که یک دانشمند داده عمومی است. می‌توان مقایسه‌ای بین کاندیداها انجام داد که به فیلتر کردن رزومه‌ها و حذف مواردی که مورد نیاز نیستند کمک کند.

نحوه استفاده از کد

این احتمال وجود دارد که بسیاری از شرکت‌ها کدهایی مانند آنچه در بالا ارائه شده را برای بررسی اولیه رزومه‌هایی که دریافت می‌کنند مورد استفاده قرار دهند. بر همین اساس، توصیه می‌شود که در صورتی که قصد ارسال رزومه برای یک فرصت شغلی خاص را دارید، از پراکنده‌نویسی اجتناب و برای آن موقعیت مشخص رزومه خود را تکمیل کنید.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *