درسته که ما فعلا نمیتونیم لقمههای بزرگ مثل آموزش دادن GPT3 و GPT2 و اینها رو برداریم؛ ولی میتونیم که کوچیک کوچیک سهم خودمون رو در دنیای nlp بیشتر کنیم! این پروژه نمونه یکی از همون پروژههای جمع و جور هستش که سعی داره یک پیشرفت رو به نمایش بگذاره. ازش استفاده کنین تا سریعتر از nltk بتونین bleu رو حساب کنید!
به طور فنیتر اگر مجموعه مرجعتون خیلی بزرگه و میخواید معیار bleu یا self-bleu رو برای مدلهای مختلف حساب کنید به احتمال زیاد به کارتون میاد (در واقع مجموعه مرجع ثابت و چندین مجموعه hypotheses دارید. بیشتر در ارزیابی مدلهای زبانی چنین شرایطی پیش میاد)
تا جایی که میشده تست شده؛ خوشحال میشیم اگه مشکلی داشت issue بزنید. روی لینوکسم هست و برای ویندوز تست نشده!
در ضمن شما هم اگر کدی زدید که فکر میکنید میتونه خفن باشه به ما بگین تا تبلیغش کنیم.
https://github.com/Danial-Alh/fast-bleu
#irani
#tool
#code
@nlp_stuff
به طور فنیتر اگر مجموعه مرجعتون خیلی بزرگه و میخواید معیار bleu یا self-bleu رو برای مدلهای مختلف حساب کنید به احتمال زیاد به کارتون میاد (در واقع مجموعه مرجع ثابت و چندین مجموعه hypotheses دارید. بیشتر در ارزیابی مدلهای زبانی چنین شرایطی پیش میاد)
تا جایی که میشده تست شده؛ خوشحال میشیم اگه مشکلی داشت issue بزنید. روی لینوکسم هست و برای ویندوز تست نشده!
در ضمن شما هم اگر کدی زدید که فکر میکنید میتونه خفن باشه به ما بگین تا تبلیغش کنیم.
https://github.com/Danial-Alh/fast-bleu
#irani
#tool
#code
@nlp_stuff
GitHub
GitHub - Danial-Alh/fast-bleu: A fast multithreaded C++ implementation of NLTK BLEU with Python wrapper.
A fast multithreaded C++ implementation of NLTK BLEU with Python wrapper. - Danial-Alh/fast-bleu
نوتبوک back-translation با قابلیت هرس
در خیلی از موقعیتها، شما با یک دیتاست با حجم کمی رو به رو هستید و قادر به اضافه کردن حجمش نیستید. طبیعتا آموزش مدل روی دیتاست کوچک نتیجه خوبی به همراه نداره و مجبور به Data Augmentation هستید. یکی از شیوههای Data Augmentation در دادههای متنی استفاده از back-translation است (متنهایی که دارید رو مثلا از فارسی میبرید به انگلیسی و دوباره از انگلیسی برمیگردونید به فارسی، حالا شما متنهای متفاوت ولی هم معنی دارید) یکی از مشکلات این روش میتونه این باشه که متن تولید شدهای که به دست میاد ممکنه کلا تو دیوار باشه و ارتباطی به متن اولیه نداشته باشه. دوستمون آقای سجاد ایوبی، اومدن و یک نوتبوک برای back-translation با استفاده از گوگل ترنسلیت نوشتند و برای استفاده شما در اختیار قرار دادند. یک نکته خوبی که این کد ارائه شده ایشون داره اینه که پس از آگمنت کردن متن دوم، اون رو با استفاده از مدلهای sentence embedding با جمله اول مقایسه میکنه و در صورتی که میزان شباهت معنایی این دو متن کمتر از حد آستانه خاصی بود، متن دوم رو به عنوان نویز در نظر میگیره و به خروجی نمیده.
لینک:
https://www.kaggle.com/sajjadayobi360/filtred-back-translation
پ.ن. ریپو یا کد بهدردبخوری داشتید، ندا بدید که بعد از بررسی در کانال قرار بدیم.
#code
@nlp_stuff
در خیلی از موقعیتها، شما با یک دیتاست با حجم کمی رو به رو هستید و قادر به اضافه کردن حجمش نیستید. طبیعتا آموزش مدل روی دیتاست کوچک نتیجه خوبی به همراه نداره و مجبور به Data Augmentation هستید. یکی از شیوههای Data Augmentation در دادههای متنی استفاده از back-translation است (متنهایی که دارید رو مثلا از فارسی میبرید به انگلیسی و دوباره از انگلیسی برمیگردونید به فارسی، حالا شما متنهای متفاوت ولی هم معنی دارید) یکی از مشکلات این روش میتونه این باشه که متن تولید شدهای که به دست میاد ممکنه کلا تو دیوار باشه و ارتباطی به متن اولیه نداشته باشه. دوستمون آقای سجاد ایوبی، اومدن و یک نوتبوک برای back-translation با استفاده از گوگل ترنسلیت نوشتند و برای استفاده شما در اختیار قرار دادند. یک نکته خوبی که این کد ارائه شده ایشون داره اینه که پس از آگمنت کردن متن دوم، اون رو با استفاده از مدلهای sentence embedding با جمله اول مقایسه میکنه و در صورتی که میزان شباهت معنایی این دو متن کمتر از حد آستانه خاصی بود، متن دوم رو به عنوان نویز در نظر میگیره و به خروجی نمیده.
لینک:
https://www.kaggle.com/sajjadayobi360/filtred-back-translation
پ.ن. ریپو یا کد بهدردبخوری داشتید، ندا بدید که بعد از بررسی در کانال قرار بدیم.
#code
@nlp_stuff
Kaggle
Filtered Back Translation
Explore and run machine learning code with Kaggle Notebooks | Using data from No attached data sources
This media is not supported in your browser
VIEW IN TELEGRAM
نوتبوک جستجوی متنی در عکسها
این آبجیمون [https://twitter.com/dalequark] یه نوتبوک جمع و جور و تمیز زده که یه متن ورودی میگیره و بین عکسها با استفاده از کتابخونهی ترنسفورمر هاگینگفیس و مدل کلیپ openai سرچ میکنه و به ترتیب امتیازشون مرتب میکنه.
لینک کولب نوتبوک:
https://colab.research.google.com/drive/11oPxFcWJvVeIl5IOTSpT9EXou-e3kVgM?usp=sharing
لینک توئیت:
https://twitter.com/dalequark/status/1431308397522063366?s=20
پ.ن. لطفا کانال رو به بقیه هم معرفی کنید.
#code
@nlp_stuff
این آبجیمون [https://twitter.com/dalequark] یه نوتبوک جمع و جور و تمیز زده که یه متن ورودی میگیره و بین عکسها با استفاده از کتابخونهی ترنسفورمر هاگینگفیس و مدل کلیپ openai سرچ میکنه و به ترتیب امتیازشون مرتب میکنه.
لینک کولب نوتبوک:
https://colab.research.google.com/drive/11oPxFcWJvVeIl5IOTSpT9EXou-e3kVgM?usp=sharing
لینک توئیت:
https://twitter.com/dalequark/status/1431308397522063366?s=20
پ.ن. لطفا کانال رو به بقیه هم معرفی کنید.
#code
@nlp_stuff
نوتبوک داینامیک پدینگ
یکی از تفاوتهای اساسی دادههای متنی با دادههای تصویری، سایز مختلف نمونههای متنی (طول متن) نسبت به یکدیگره. برای حل این معضل راهکار padding استفاده میشه که در آن، طول تمامی نمونههای یک بچ یکسانسازی میشه. سادهترین استراتژی در این راستا میتونه این باشه که همه متنها رو به اندازه طول بزرگترین متن پد کنیم، اما خب واضحه که با این کار وقت و منابع زیادی رو برای بچ هایی که طول طولانیترین متنشون به اندازه طولانیترین متن کل دادهها نیست، هدر میدهیم. استراتژی موثرتر میتونه استفاده از داینامیک پدینگ باشه که تو این روش دادهها رو فقط به اندازه طولانیترین متن حاضر در هر بچ پد کنیم. باز هم اینجا ممکنه یک متن طولانی با یک متن کوتاه با هم در یک بچ حاضر بشوند و منابع زیادی برای پد کردن این بچ به هدر بره. راهکارهای دیگه مثل سورت کردن یا شبه سورت کردن دادهها برای حل این مشکل وجود دارند. آقای ایوبی اومدند و در راستای این دسته روشهای مطرح شده نوتبوکی رو آماده کردهاند و در اختیار بقیه قرار دادند. این نوتبوک شامل کدهای مربوط به انجام هر یک از این روشهاست و البته توضیحشون و مزایا و معایبشون هم قرار داده شده. میتونید مشاهده کنید و در صورت نیاز در کدهاتون استفاده کنید.
لینک نوتبوک:
https://sajjjadayobi.github.io/blog/tips/2021/08/09/sortish-bathes.html
پ.ن. با تشکر از آقای ایوبی بابت فرستادن این پست. شما نیز اگر مطلب یا محتوای جالبی در دست دارید، بفرستید تا با اسم خودتون در کانال قرار داده بشه.
#code
@nlp_stuff
یکی از تفاوتهای اساسی دادههای متنی با دادههای تصویری، سایز مختلف نمونههای متنی (طول متن) نسبت به یکدیگره. برای حل این معضل راهکار padding استفاده میشه که در آن، طول تمامی نمونههای یک بچ یکسانسازی میشه. سادهترین استراتژی در این راستا میتونه این باشه که همه متنها رو به اندازه طول بزرگترین متن پد کنیم، اما خب واضحه که با این کار وقت و منابع زیادی رو برای بچ هایی که طول طولانیترین متنشون به اندازه طولانیترین متن کل دادهها نیست، هدر میدهیم. استراتژی موثرتر میتونه استفاده از داینامیک پدینگ باشه که تو این روش دادهها رو فقط به اندازه طولانیترین متن حاضر در هر بچ پد کنیم. باز هم اینجا ممکنه یک متن طولانی با یک متن کوتاه با هم در یک بچ حاضر بشوند و منابع زیادی برای پد کردن این بچ به هدر بره. راهکارهای دیگه مثل سورت کردن یا شبه سورت کردن دادهها برای حل این مشکل وجود دارند. آقای ایوبی اومدند و در راستای این دسته روشهای مطرح شده نوتبوکی رو آماده کردهاند و در اختیار بقیه قرار دادند. این نوتبوک شامل کدهای مربوط به انجام هر یک از این روشهاست و البته توضیحشون و مزایا و معایبشون هم قرار داده شده. میتونید مشاهده کنید و در صورت نیاز در کدهاتون استفاده کنید.
لینک نوتبوک:
https://sajjjadayobi.github.io/blog/tips/2021/08/09/sortish-bathes.html
پ.ن. با تشکر از آقای ایوبی بابت فرستادن این پست. شما نیز اگر مطلب یا محتوای جالبی در دست دارید، بفرستید تا با اسم خودتون در کانال قرار داده بشه.
#code
@nlp_stuff
Telegram
stuff
مینیپستی برای استخراج patch
با رونقگرفتن معماری ترنسفورمر (که یک معماری به اصطلاح set2set است) در حوزه پردازش تصویر، برای ورودی دادن یک تصویر به ترنسفورمر، اول بایستی این تصویر رو به یکسری پچ و تکه تقسیم کنیم و بعد این مجموعه پچها رو به شبکه بدیم. راه حل ساده و البته ابلهانه اینه که از چند تا for برای این کار استفاده کنیم که قاعدتاً اسراف وقته. در این رشته توییت اما نشون داده و به صورت کامل توضیح داده که چطوری بدون هیچ حلقه ای و صرفا با استفاده از مکانیزمهای نامپایطور میشه عملیات استخراج پچ رو با کمترین زمان مصرفی و پیچیدگی کد، پیاده کرد.
از اونجایی که این جنس نیازمندی بسیار پرکاربرده و قطعا در آینده حداقل یکبار ممکنه گیرش بیافتید مطلب مفیدی میتونه باشه.
لینک رشته توییت:
https://mobile.twitter.com/MishaLaskin/status/1478500251376009220
#read
#tweet
#code
@nlp_stuff
با رونقگرفتن معماری ترنسفورمر (که یک معماری به اصطلاح set2set است) در حوزه پردازش تصویر، برای ورودی دادن یک تصویر به ترنسفورمر، اول بایستی این تصویر رو به یکسری پچ و تکه تقسیم کنیم و بعد این مجموعه پچها رو به شبکه بدیم. راه حل ساده و البته ابلهانه اینه که از چند تا for برای این کار استفاده کنیم که قاعدتاً اسراف وقته. در این رشته توییت اما نشون داده و به صورت کامل توضیح داده که چطوری بدون هیچ حلقه ای و صرفا با استفاده از مکانیزمهای نامپایطور میشه عملیات استخراج پچ رو با کمترین زمان مصرفی و پیچیدگی کد، پیاده کرد.
از اونجایی که این جنس نیازمندی بسیار پرکاربرده و قطعا در آینده حداقل یکبار ممکنه گیرش بیافتید مطلب مفیدی میتونه باشه.
لینک رشته توییت:
https://mobile.twitter.com/MishaLaskin/status/1478500251376009220
#read
#tweet
#code
@nlp_stuff
Twitter
Misha Laskin
Patch extraction is a fundamental operation in deep learning, especially for computer vision. By the end of this thread, you’ll know how to implement an efficient vectorized patch extractor (no for loops) in a few lines of code and learn about memory allocation…