مورد عجیب فرانسه (و نروژ و …)

در ادامهٔ کار طراحی سیستم آمارگیری از بازدید وب‌سایتها و در درگیری با چالش داده‌های جغرافیایی بازدیدکنندگان چند باری به انحاء مختلف سرکار رفتم.

از آنجا که دیپ‌سیک سرویس آنلاین رایگان و نامحدودی برای استخراج اطلاعات جغرافیایی از روی آی‌پی نمی‌شناخت به دنبال سرویس‌های آفلاین رفتم (آنها که با یک دیتابیس آفلاین کار می‌کنند).

پیشنهاد اولیهٔ دیپ‌سیک GeoLite2 از مکس‌مایند بود که مزیت مهمی هم دارد و آن ارائهٔ یک نوگت برای برنامه‌نویسان دات‌نت (من‌جمله اینجانب) بود.

همان اول کار برای نام‌نویسی در سایت مکس‌مایند و دریافت فایل دیتابیس به مشکل برخوردم (نفهمیدم مشکل از من بود یا از ایرانی بودنم بود یا از خود مکس‌مایند).

سراغ گزینهٔ دوم پیشنهادی یعنی DB-IP رفتم و تصمیم گرفتم فایل اکسل (CSV) منتشر شده توسط این سرویس را وارد دیتابیس برنامه‌ام کنم و آی‌پی‌ها را در آن بگردم.

پیاده‌سازی این روش پیچیده و سخت بود. اما در نهایت اتفاقی که افتاد این بود که نتایج تبدیل آی‌پی به کشور با استفاده از این سرویس کاملاً پرت‌وپلا بود. با وجود آن که عمدهٔ بازدیدکنندگان گنجور از ایران می‌آیند، ایران حتی در فهرست ۱۰ کشور برتر خروجی این سرویس نبود.

به گزینهٔ اول برگشتم. خوشبختانه یک سطر اطلاعات ورود به سایت مکس‌مایند را در سایت باگ‌می‌نات پیدا کردم و با همان به آنچه می‌خواستم (آخرین دیتابیس شهرهای مکس‌مایند) دست پیدا کردم.

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

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

به مشکل عجیبی سر فرانسه برخوردم که بعداً فهمیدم که همان مشکل برای معدودی از کشورهای دیگر مثل نروژ وجود دارد. با وجود آن که تعداد قابل توجهی از بازدیدکنندگان طبق محاسبات سرویس من از فرانسه آمده بودند روی نقشه فرانسه را بدون بازدید نشان می‌داد. بعداً متوجه شدم که در داده‌های نقشه‌ها به دلیلی که دنبالش نگشتم کد ایزوی دو رقمی فرانسه را FR نزده‌اند و برای پیدا کردن کشور از روی کد ایزو در سرویسی که من از آن استفاده کرده‌ام به جای مراجعه به فیلدی به نام ISO_A2 به فیلد دیگری به نام ISO_A2_EH باید مراجعه می‌کردم (این را خودم و به کمک یار قدیمی -گوگل- فهمیدم و دیپ‌سیک از یافتن و حل مشکل عاجز ماند).

خلاصه که فعلاً چالش استخراج داده‌های جغرافیایی از روی آی‌پی حل شده به نظر می‌رسد:

توزیع جغرافیایی بازدیدهای دیروز گنجور

دیپ‌سیک: طراح وب خوش‌سلیقه

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

تصویر صفحهٔ آمار ویرایش‌های گنجور تولید شده توسط هوش مصنوعی دیپ‌سیک

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

در نهایت البته من باید کار را در قالب همخوان با گنجور در می‌آوردم و آنجاست که در مقایسه متوجه می‌شوید چقدر رنگ‌بندی و طراحی گنجور زشت است!

بعداً یک بار تلاش کردم CSS اصلی گنجور را به انواع هوش‌مصنوعی‌ها بدهم تا ببینم خودکار چه‌کارش می‌توانند بکنند که نتیجه قابل استفاده نبود.

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

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

آمار بازدید ganjoor.net

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

فعلاً این برنامه در دست توسعه است و به صورت عمومی امکان نام‌نویسی و استفاده از آن وجود ندارد.

جورچین فانوس خیال

این فانوس خیال را که درست کردم به نظرم رسید که می‌توانم با زحمت کمی ازروی کد پیشتر نوشته‌شدهٔ کاشی‌چینی یک بازی جورچین آنلاین بر اساس آن درست کنم.

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

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

مشکلی که داشتم اندازهٔ مربعی عکس‌ها بود که آن هم -خداخواسته- با یک آگهی به سایر برنامه‌ها و کارهایم پر شد و در عوض برنامه را به رایگان منتشر کردم. قابلیتی هم در آن گذاشتم -و بعداً آن را به کاشی‌چینی هم اضافه کردم- که کسی که علاقه به بازی کردن ندارد و فقط می‌خواهد از آن به عنوان یک گالری برای مرور تصاویر استفاده کند بتواند با فعال کردن یک گزینه در پیکربندی -کم و بیش- به آن برسد.

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

هوش مصنوعی بازی

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

شاهنامه‌خوانی را به دلیل سرگرمی دیگری که تصادفاً به آن برخوردم رها کردم. داشتم در لینکدین پرسهٔ بیهوده می‌زدم که فراخوان شرکتی را دیدم که خواسته بود پروژه‌های بازمتن و شرکتها از اعتبار رایگان اعطاییشان برای استفاده از سرویس‌های هوش مصنوعی استفاده کنند. اول فکر کردم که خوب با آن چه کنم؟ بعد خاطرم آمد که چقدر در همان جریان شاهنامه‌خوانی، کار سختی است برگرداندن شعر به نثر سادهٔ امروزی و فکر کردم اگر یک پیش‌نویس اولیه -هر چند نادقیق و نادرست- آماده شده باشد کار چقدر راحت‌تر خواهد شد.

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

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

کاربران گنجور این چند وقت خیلی به آن اعتراض کرده‌اند. این اولین بار نیست که به گنجور اعتراض می‌کنند. آن اوایل به این که چرا مردم پای شعرها نظر می نویسند اعتراض می‌کردند. این اعتراض نسبتاً پرتکرار بود. به چیزهای دیگر هم اعتراض کرده‌اند. به این که چرا شعرا عکس دارند! به این که چرا زیر شعرها ترانه‌هایی هست که خوانندگان زن آنها را خوانده‌اند. به این که چرا از شاعران صوفی شعر در گنجور هست (من مطمئن نیستم معترض ما راجع به آمار صوفی‌های شاعر اطلاع درستی داشته باشد). به این خلاصه‌ها و متن‌های تولیدی هوش مصنوعی هم اعتراض کرده‌اند. البته بیشترشان مشکلشان آن است که فکر می‌کنند حاشیه‌های شعرها حذف شده و این جایگزین آن شده. در هر حال منطق من گوش کردن به حرف دیگران نیست، لجاجت و حماقت خاصی در من نهادینه شده که به خاطر ‌آن گوشم بدهکار آرای مردمی نیست! ایده‌ام این است که کاربر اصلی گنجور خودمم و این خود منم که باید از آن راضی باشم. در این مورد هم در اصل، من فکر می‌کنم که بودن این متون باعث می‌شود کاربران تحریک شوند که آنها را درست کنند. نبودنشان محرک هیچ چیز نیست. «من خوبم!»، انشاالله که خیر باشد!

برگردیم به مقدمهٔ ماجرا: من هوش مصنوعی را می‌خواستم که کار شاهنامه‌خوانیم را آسان کند و بعد شاهنامه‌خوانی را به خاطر هوش مصنوعی رها کردم! شد غلامی که آب جوی آرد، آب جوی آمد و غلام ببرد!

تصاویر تولید شده توسط هوش مصنوعی برای جورچین ایرانی

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

ببینید: