Skip to content

آموزش word2vec روی ویکی‌پدیا فارسی

قبل از اینکه شروع کنم به نوشتن قسمت دوم ورد۲وک کجا، چطور و چگونه تصمیم گرفتم یک پست درباره نحوه آموزش word2vec روی ویکی‌پدیا فارسی ارائه کنم. در این پست صرفا به این می‌پردازیم که چطور می‌توان ورد۲وک را در جنسیم (gensim) و تنسورفلو (tensorflow) آموزش داد و از آن استفاده کرد. دیروز که ارائه پردازش متن در دانشگاه برگزار شد خیلی از بچه‌ها راجع به آموزش word2vec سوال می‌کردند و بخاطر همین تصمیم به نوشتن این پست کردم.

خب ابتدا نحوه آموزش ورد۲وک در تنسورفلو را باهم بررسی میکنیم و بعد به سراغ gensim میریم. برای شروع باید موارد زیر را نصب کرده باشید:

  • git
  • پایتون ۳ نسخه ۶۴بیتی (دقت کنید حتما همین نسخه رو نصب کنید وگرنه در ویندوز به مشکل میخورید)
  • gensim با استفاده از دستور pip3 install gensim
  • tensorflow با استفاده از دستور pip3 install tensorflow

 

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

اولین کاری که باید انجام بدید این است که کد word2vec و دیتای ویکی‌پدیا را دانلود کنید کد را با دستور زیر می‌توانید clone بگیرید و از آنها استفاده کنید و ویکی‌پدیا میتونید از اینجا دانلود کنید (حواستون باشه ویکی‌پدیا باید در root پروژه باشه)‌:

اگر در داخل فولدر را مشاهده کنید یک سری فایل با پسوند ops وجود دارد که باید آنها را کامپایل کنید که اینکار را با دستور زیر میتوانید انجام دهید:

اگر در مک خواستید کامپایل را انجام دهید دستور زیر هم به انتهای دستور g++ بالا اضافه کنید:

حالا به پوشه‌ای که clone گرفتید برید و دستور زیر رو اجرا کنید:

قاعدتا باید الان شروع کند به آموزش مدل که تقریبا ۱ ساعت طول می‌کشد.
وقتی تمام شد اگر دوست دارید ببینید چه چیزی آموزش دادید می‌تونید از دستور زیر استفاده کنید و به تب Projector برید و اندکی از کاری که کردید لذت ببرید:

نمایش ورد۲وک در تنسوربورد

 

کتابخانه معروفی دیگری به نام gensim وجود دارد که معمولا برای استفاده از word2vec از آن استفاده می‌کنند. نحوه استفاده و با این کتابخانه بسیار راحت بوده و مستندات آن تقریبا تمام چیزی که لازم داریم را توضیح داده است. با این وجود در ادامه یک مدل skip-gram با کمک این کتابخانه آموزش میدهیم.

کد زیر تقریبا تمام اون چیزی هست که شما لازم دارید. ابتدا با استفاده از LineSentence ویکی‌پدیا رو به صورت خط خط تبدیل می‌کنیم (LineSentence یک فایل میتنی به عنوان ورودی میگیرد و یک لیست که هر خط از آن یک جمله است به ما بر میگرداند) و بعد LineSentence را به عنوان ورودی Word2Vec میدهیم (سایر پارامترهای Word2vec هم می‌توانید تغییر بدهید) و بعد از آموزش مدل‌ را به صورت باینری و متنی ذخیره می‌کنیم.

حالا اگر خواستید از مدلی که آموزش دادید استفاده کنید باید از تابع load_word2vec_format کمک بگیریم. تنها نکته‌ای که باید حواسمان باشد این است که در صورتی که فایل باینری را لوود کردید پارامتر ورودی این تابع را binary=True قرار بدهیم.

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

7 نظر

  1. hadi hadi

    سلام
    میشه لطفا راهنمایی بفرمایید قسمتی که فایل های ops رو باید کامپایل کرد اون دو خط کد رو دقیقا کجا باید نوشت و چه طور.
    من توی cmd توی فولدر word2vec می روم و تنسورفلو را فعال میکنم و بعد از نوشتن python این دو خط را می نویسم که خطا میدهد.

    • هادیفر هادیفر

      چه خطایی میدهد؟ دستور دوم باید حتما g++ رو نصب کرده باشید و دستور اول هم دارید یک متغییر درست میکنید و چیزه خاصی نیست.

      • hadi hadi

        بله نصب دارم. دستور اول رو که می نویسم این خطا رو میده :
        file stdin line 1
        tf_inc ….
        syntaxerror: invalid syntax

        • هادیفر هادیفر

          کدشو اپدیت کردم امیدوارم مشکلتون حل بشه.

        • hadi hadi

          نه متاسفانه هنوز همون مشکل رو دارم.
          ببخشید مسیری که گفتم درسته؟ توی command prompt میرم و cd میکنم توی فولدر word2vec و بعد تنسورفلو رو اکتیو میکنم بعد دستور python رو میزنم و بعد این خط اول را می نویسم.

  2. amir amir

    با سلام
    من هم همین مشکل رو دارم ممنون میشم اگه بفرمایید علت چیست. لطفا اگر دلیلش رو متوجه شدید نتیجه رو بذارید.
    با تشکر

دیدگاهتان را بنویسید

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

All rights reserved by hadifar.net