با استفاده از R، گوگل داکس و کمی متن‌کاوی، فلش کارت بسازیم

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

برای درس زبان در کنکور احتیاج به این داشتم که از لغات مهم کنکور، یک فلش کارت سازگار با نرم‌افزار/اپ Anki بسازم. نقطه‌ی شروع هم pdf کنکور سال قبل بود. ۳ صفحه زبان را از فایل pdf کندم و در گوگل درایو آپلود کردم. گوگل یک ocr بسیار بسیار خفن داخل این سرویس قرار داده است، برای استفاده از آن کافی است مانند عکس زیر روی فایل pdf در گوگل درایو کلیک راست کنید و گزینه‌ی باز کردن با سندنگار را انتخاب کنید. ( این یک پاسخ برای جستجوی پایان‌ناپذیر دانشجویان ایرانی برای تبدیل pdf به word است)

2

این کار فایل pdf را از این حالت:

1

به این حالت با متن قابل کپی شدن تبدیل کرد:

3

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

مرحله بعدی وارد کردن این متن به R است، راحترین راه برای این کار، این است که متن را در یک فایل متنی(طبیعتا فرمت txt) ذخیره کنید و آن را در work­ing direc­to­ry قرار دهید. work­ing direc­to­ry یا wd پوشه‌ای است که R در حال حاضر از آن استفاده می‌کند و فایلها را به ضورت پیش‌فرض در آن ذخیره می‌کند. این کار، نیاز به آدرس دادن به فایل در محیط کار را از بین می‌برد زیرا اگر آدرس فایل را در دستوری که به آن نیاز دارد وارد نکنید (احتمالا) R به صورت پیش‌فرض در work­ing direc­to­ry به دنبال آن می‌گردد. دستور getwd در R محل این پوشه روی سیستم را به شما نشان می‌دهد، همچنین با استفاده از setwd می‌توانید این پوشه را تغییر دهید.

حالا نوبت این رسیده است که از متن‌کاوی استفاده کنیم. با دستور زیر، یکی از پکیج‌های متن‌کاوی را که tm نام دارد نصب و فراخوانی می‌کنیم:

معمولا در متن کاوی، به وجود آوردن پیکره‌ی متن از فایل یا text cor­pus قدم اول کار است، این کار با دستور زیر انجام می‌شود:

من فایل را درون پوشه‌ای به نام text در داخل work­ing direc­to­ry گذاشته بودم و دستور بالا، متن آن را خواند و در text-cor­pus ذخیره کرد. در متن مقدار زیادی کاراکتر اضافی وجود دارد(اعداد، پرانتزها و …) دستورهای زیر، این کاراکترهای اضافی را حذف می‌کنند:

بعد از حذف کاراکترهای اضافی، باید ماتریس واژه‌ها یا Doc­u­ment-term matrix را از پیکره متنی تشکیل دهیم:

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

از ماتریس واژه‌ها کلمات را بیرون می‌کشیم تا آنها را ترجمه کنیم و از آنها فلش‌کارت بسازیم:

برای ترجمه ابتدا پکیجهای trans­lateR که به apiهای ترجمه گوگل و بینگ وصل می‌شود و سپس پکیج RYan­dex­Trans­late که به سرویس ترجمه یاندکس متصل می‌شود را امتحان کردم. api ترجمه گوگل رایگان نیست اما apiهای بینگ و یاندکس نسخه‌ی رایگان دارند. مشکلی که پیش آمد، کندی بیش از حد این دو سرویس بود که احتمالا به دلیل اینترنت است، ترجمه حتی یک کلمه در R با این پکیج‌ها بیش از یک دقیقه طول می‌کشید و ترجمه تمام کلمات به صورت یکجا هم خطای Time out می‌داد، برای همین دوباره دست به دامن گوگل داکس و این دفعه نرم‌افزار صفحه گسترده‌اش شدم، دستور زیر در این نرم‌افزار، کلمات را توسط سرویس ترجمه‌ی گوگل ترجمه می‌کند:

برای اینکه کلماتی که در بردار words دخیره شده بودند را از R به گوگل داکس ببریم راه‌‌های زیادی وجود دارد اما آسانترین راه، خروجی گرفتن از آن به صورت یک فایل csv است:

کلا فرمت csv فرمت آزاد و مفیدی است و در بسیاری از مواقع، آسانترین راهی است که می‌توانید با آن داده‌ها را به R وارد کنید یا از آن خارج کنید. با کمی تمیزکاری بیشتر، در زمان کوتاهی(حدود نیم‌ساعت) به چیزی که می‌خواستم(کلمات کنکور به همراه معنی آنها) رسیدم. در آینده، درباره‌ی متن‌کاوی در R بیشتر خواهم نوشت.

پی‌نوشت: احتمالا دوستان لینوکسی، همه‌ی این کارها را به راحتی می‌توانند در ter­mi­nal با چند خط کد انجام دهند.

پاسخ دهید

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