برنامه نویسی

Language Whisperer – هکاتون ابزارهای تبدیل کننده هوش مصنوعی/ML

LanguageWhisperer: یادگیری زبان خود را با Transformers تسهیل کنید!

ما در جهانی پر از اشیا، تصاویر و زبان های مختلف زندگی می کنیم. با این حال همه با یادگیری زبان های جدید به خوبی آشنا نیستند. اما اگر بخواهیم یک زبان خارجی یاد بگیریم چه؟ اینجاست که ابزار ما، LanguageWhisperer وارد می شود.

چگونه به اینجا رسیدیم؟

در جمعه 26 مه 2023، لیلی کرنز، مدیر انجمن در برنامه AWS Community Builder اعلام کرد اولین هکاتون جامعه سازان ما! این یک فرصت فوق العاده برای همه ما است تا یاد بگیریم، خلاق باشیم و چیزی قابل توجه خلق کنیم. 🥳

ما با هم متحد شدیم – @ronakreyhani، @dashapetr، @anja و من برای کار روی این پروژه

قدرت دخترانه

شرح پروژه

عنوان پروژه: زمزمه زبان

زمزمه زبان همانطور که از نام آن پیداست یک برنامه کاربردی ساده است که به شما امکان می دهد زبان جدیدی را از طریق تصاویر ترجمه و یاد بگیرید. هر زمان که در هر موقعیتی با یک شی ناآشنا مواجه شدید، Language Whisperer را به عنوان برنامه اصلی خود در نظر بگیرید. این برنامه به شما کمک می کند تا بدون توجه به آشنایی قبلی شما با آن، دانش و درک در مورد شی مورد نظر را به دست آورید.

این نرم افزار را می توان در سناریوهای مختلف مانند آموزش، سرگرمی، گردشگری و غیره استفاده کرد.

انگیزه

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

نمودار معماری

نمودار معماری زبان Whisperer

روند

در طول مراحل اولیه پروژه، تیم ما در جلسات طوفان فکری شرکت کرد تا ایده‌های مختلف در مورد چگونگی استفاده از ترانسفورماتورها را بررسی کند. ما در نهایت مفهوم او را انتخاب کردیم زمزمه زبان، برای پروژه ما برای تسهیل توسعه مشارکتی، @dashapetr یک نوت بوک Google Colab ایجاد کرد که اعضای تیم می توانستند روی پایگاه کد اولیه آزمایش و تکرار کنند. با پیشرفت پروژه، برای ساده‌سازی همکاری و اطمینان از مدیریت کد کارآمد در میان اعضای تیم، به استفاده از GitHub روی آوردیم. این انتقال باعث ایجاد هماهنگی روان‌تر و افزایش کار تیمی در طول فرآیند توسعه شد. از ابزارهای زیر استفاده شد:

  • عامل StarCoder، یک مدل زبان گسترده (LLM)، یک API زبان طبیعی را ارائه می دهد که بر روی ترانسفورماتورها ساخته شده است و به منظور پیاده سازی به کار گرفته شده است. اسناد دقیق برای نماینده را می توانید در پیوند ارائه شده https://huggingface.co/docs/transformers/main_classes/agent پیدا کنید.
  • جستجوگر ویکی (ابزار سفارشی) با استفاده از BeautifulSoup، یک کتابخانه پایتون که برای استخراج داده‌ها از فایل‌های HTML و XML طراحی شده است، پیاده‌سازی شد. این کتابخانه نقش مهمی در تجزیه و پیمایش ساختار HTML صفحات وب ایفا کرد و امکان استخراج اطلاعات مرتبط برای برنامه Wiki Searcher را فراهم کرد.
  • کتابخانه gTTS (Google Text-to-Speech) (ابزار سفارشی) برای تبدیل متن به خروجی گفتار با کیفیت بالا با صدای طبیعی استفاده شد. این تصمیم از مشاهده این موضوع ناشی می‌شود که مترجم پیش‌فرض درون عامل، هنگام خواندن دقیق متن به زبان‌های مختلف، سطح اثربخشی مورد نظر ما را برآورده نمی‌کند.
  • Streamlit برای Frontend استفاده شد

چالش های پیش رو

پیدا کردن صدای مناسب برای کار بسیار چالش برانگیز بود. متأسفانه، ابزار تعبیه شده تبدیل متن به گفتار StarCoder عبارات خارجی را به زبان انگلیسی با لهجه قابل توجهی ارائه می کند و باعث سردرگمی می شود. همچنین برای یافتن راه حل مناسب، تصمیم به انجام پژوهشی نیز گرفته شد. یکی از گزینه‌هایی که در نظر گرفته شد، استفاده از Amazon Polly بود، اگرچه ادغام آن با streamlit مشکلاتی را به همراه داشت، زیرا نیاز به مجوز برای یک حساب AWS داشت. روش دیگر، کتابخانه gtts یک گزینه قابل اجرا ارائه می‌دهد که نیازی به کلید یا دسترسی ندارد و به راحتی از طریق نصب pip قابل نصب است. این به سادگی نیاز به افزودن یک کد زبان به عنوان ورودی داشت که خروجی صدای طبیعی را ایجاد می کرد.

یکی از چالش‌هایی که با آن مواجه شدیم، تعیین پشته جلویی مناسب برای برنامه یادگیری ماشینی ما بود. در ابتدا، ما شروع به ساخت یک برنامه Next.js React با APIهای Python کردیم. با این حال، در تلاش برای ساده‌سازی فرآیند، تصمیم گرفتیم از API‌های تعبیه‌شده Next.js به‌جای استقرار توابع لامبدا و یک دروازه API استفاده کنیم. متأسفانه این تصمیم به دلیل وابستگی ها منجر به مسائل مهمی شد. ما متوجه شدیم که باید وابستگی های کتابخانه پایتون را محفظه بندی کنیم. با توجه به فوریت اجرای ایده خود در سریع ترین زمان ممکن برای اثبات سریع مفهوم، رویکرد خود را تغییر دادیم و تصمیم گرفتیم رابط کاربری را با استفاده از Streamlit پیاده سازی کنیم.

نتیجه

با زمزمه زبان، تنها کاری که باید انجام دهید این است

  1. یک عکس بگیر
  2. تصویری را که می خواهید رونویسی کنید آپلود کنید
  3. زبان مورد نظر خود را انتخاب کنید
  4. پخش و گوش دادن به زبان رونویسی شده

به عنوان مثال: اجازه دهید نگاهی به یک تصویر نمونه بیندازیم:

غذا

مرحله 1: تجزیه و تحلیل تصویر – Language Whisperer این تصویر را دریافت کرده و موارد زیر را تولید می کند

گام 2: عنوان تصویر: یک بشقاب غذا با تخم مرغ، ژامبون و نان تست

مرحله 3: عنوان را به زبان دلخواه خود ترجمه کنید: مثلا اسپانیایی

مرحله 4: یاد بگیرید / بخوانید شرح: یک بشقاب غذا با تخم مرغ، ژامبون و نان تست

مرحله 5: جستجوی کلمه ای به معنی در ویکی: (comida) –> غذا، چیزی خوراکی <…>

خروجی پروژه

نمونه کد کد

درس آموخته شده (مهارت جدید توسعه یافته)

  • استفاده از حالت های جلسه
  • استفاده از آمازون پولی
  • استفاده از Streamlit

انعکاس

@anja: از آنجایی که قبل از Hackathon هیچ تجربه ای با کتابخانه Transformers نداشتم، امیدوار بودم که بتوانم به اندازه کافی کمک کنم. خوشبختانه، این مستندات حتی برای افرادی که هنوز با یادگیری ماشین تجربه ندارند، بسیار مناسب برای مبتدیان است. به من یادآوری شده است که هرگز نباید از امتحان ابزارهای فناوری جدید بترسید، اغلب آنقدرها هم که فکر می کنید دشوار نیست. مطمئناً در آینده بیشتر به یادگیری ماشین خواهم پرداخت. همچنین این اولین هکاتونی بود که در آن شرکت کردم، کار کردن با هم تیمی های درخشانم عالی بود.

@ronakreyhani: من همیشه علاقه عمیقی به یادگیری ماشینی (ML) داشته ام، که هر مفهوم یا موضوع جدیدی را در این زمینه فوق العاده فریبنده می کند. اخیراً، کنجکاوی من باعث شد تا قلمرو هوش مصنوعی مولد، به‌ویژه مدل‌های معروف Hugging Face LLM را کشف کنم. اگرچه گذراً در مورد آنها شنیده بودم، اما هرگز این فرصت را پیدا نکرده بودم که در پیچیدگی های آنها تحقیق کنم. این پروژه فرصتی قابل توجه برای بیرون آمدن از منطقه آسایش و سرمایه گذاری به سمت ناشناخته ارائه داد.

در طول این سفر، دانش گسترده‌ای در مورد جنبه‌های مختلف اکوسیستم Hugging Face، از جمله Hugging Face Hub، مدل‌ها، ترانسفورماتورها، خطوط لوله، و «عامل» بسیار تحسین‌شده‌ای که برنامه ما به شدت به آن متکی است، به دست آوردم. فراتر از پیشرفت های فنی، چیزی که واقعاً این تجربه را استثنایی کرد، فرصت همکاری با یک تیم فوق العاده در سراسر جهان بود. از طریق جلسات مجازی و بحث‌های پر جنب و جوش، ایده‌هایمان را جمع کردیم و به یک تفاهم مشترک رسیدیم. کار با آنها واقعاً الهام‌بخش بود، و حمایت بی‌دریغ آنها به من این امکان را داد که ایده‌هایم را با استفاده از ابزارهایی که راحت‌تر از همه با آن‌ها راحت بودم، پیاده‌سازی کنم.

همانطور که هکاتون به پایان خود رسید، من نه تنها دانش زیادی در مورد مدل های LLM و عوامل Hugging Face به دست آوردم، بلکه دوستی های باورنکردنی نیز برقرار کردم. دورنمای ملاقات حضوری با این دوستان تازه‌یافته مرا سرشار از انتظار و هیجان می‌کند. در نگاهی به گذشته، این حس رفاقت و ارتباط به عنوان بزرگترین دستاورد این تلاش است.

@dashaper: من به عنوان یک دانشمند داده، تجربه کمی با Transformers داشتم، اما از ابزارها و عوامل استفاده نکرده ام. ایده هکاتون را بسیار جالب دیدم زیرا پتانسیل عظیم ابزارها را دیدم. انتخاب مفهوم بسیار چالش برانگیز بود. من چندین مورد از آنها را داشتم، اما وقتی LanguageWhisperer به ذهنم رسید، آنقدر هیجان زده شدم که تصمیم گرفتم بقیه ایده ها را کنار بگذارم. LanguageWhisperer چیزی است که آرزو می‌کردم زمانی که برای یادگیری فرانسوی و چینی تلاش می‌کردم وجود داشت. من از اینکه تیم من تصمیم گرفت با این ایده پیش برود، سپاسگزارم و بسیار خوشحالم که با همکارهای سازنده زن خود بیشتر آشنا شدم. ساختن با هم بسیار لذت بخش است!

@chinwee__o: یکی از بسیاری از چیزهایی که برای من برجسته بود، استفاده از جایگزین های مختلف موجود برای انجام کار بود. یکی از آنها آزمایش آمازون پولی برای هدف این پروژه بود. در حالی که ترانسفورماتور دارای یک عامل تبدیل متن به گفتار بود که می توانست در این پروژه پیاده سازی شود، اما نتیجه بهترین نتیجه را نداشت. این امر بیشتر نشان می‌دهد که این گزینه‌ها برای برآورده کردن یک نیاز خاص در صورت شکست دیگران در دسترس هستند. 1 ماه، 4 هفته، 29 روز، 696 ساعت، 41760 دقیقه، 2505600 ثانیه و هر جلسه، مکالمه، چت، خطوط کد، یادگیری های جدید با این خانم ها ارزش وقت گذاشتن را داشت.

مراحل بعدی

ما معتقدیم که LanguageWhisperer را می توان گسترش داد و بهبود بخشید.

  • اولاً، عملکرد آن می‌تواند برای تسهیل مقایسه ترجمه‌ها به زبان‌های مختلف، ایجاد مثال‌های استفاده گویا برای یک کلمه معین، و ارائه ویژگی برای “گوش دادن” و اصلاح تلفظ کاربر، گسترش یابد.
  • ثانیا، LanguageWhisperer این پتانسیل را دارد که به یک برنامه تلفن همراه تبدیل شود و کاربران را قادر می سازد تا به راحتی از هر مکانی به آن دسترسی داشته باشند.

نوشته های مشابه

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

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

دکمه بازگشت به بالا