ویکی‌پدیا:سیاست ربات‌رانی/درخواست مجوز/Turingbot/وظیفه ۴

از ویکی‌پدیا، دانشنامهٔ آزاد

Turingbot (وظیفه ۴)[ویرایش]

ربات‌ران: Mojtabakd (بحثمشارکت‌هاانتقال‌هابسته شودبسته‌شدن‌هااختیاراتآمارآمار پیشرفته)

خودکار، نیمه‌خودکار یا دستی: دستی

کد ربات: Cat-Updater.py

خلاصهٔ عملکرد: بروزرسانی رده‌های صفحات از روی ویکی انگلیسی

تناوب اجرا: دستی

تخمین تعداد صفحه‌هایی که ویرایش می‌شوند: بسته به فایل ورودی دارد

گذر از الگوی {{nobots}} (بله/خیر):

آیا در ویکی دیگری پرچم دارد (بله/خیر):

شرح روش اجرا: فهرستی از صفحاتی که باید رده‌هایشان بروزرسانی شوند را وارد می‌کنیم، سپس چند حالت پیش می‌آید: 1-اگر صفحه میان ویکی انگلیسی نداشته باشد هیچ کاری بر روی صفحه نمی‌کند 2-اگر صفحه میان‌ویکی انگلیسی داشته باشد رده‌ها را بروزرسانی و مرتب می‌کند که در ادامه جزئیاتش را خواهم گفت. 3-فهرست رده‌های صفحه متناظر در ویکی انگلیسی را می گیرد (از تابع category کتابخانه pywikibot در اینجا استفاده نمی‌شود، چرا که این تابع رده‌های اضافی میده که حذف کردنشون سخت هست، لذا یک تابع برای این کار در کد نوشته شده)، آن رده‌هایی که به رده‌ای در ویکی فارسی هستن رو فهرست می‌کنه (رده‌های ترجمه شده)، رده‌های محلی صفحه مورد نظر فارسی (یعنی اونایی که میان ویکی ندارن) رو نگه می‌داریم، بقیه رده‌های صفحه مورد نظر در ویکی فارسی حذف میشن و جاشون رده‌های ترجمه شده مقاله متناظر در ویکی انگلیسی قرار می‌گیرن. لذا محصول نهایی رده‌های محلی+رده‌های ترجمه شده از صفحه متناظر در ویکی انگلیسی هست که پس از مرتب سازی ته مقاله قرار می‌گیرند.

بحث[ویرایش]

@Mojtabakd: چه دلیلی داریم که یک ربات جدید با کد جدید برای این کار بسازیم؟ کد «ردهٔ همسنگ» از پیش داریم و رباتش را هم داریم (در حال حاضر ربات من، پیشتر ربات رضا). چرا همان کد را بهبود نبخشیم؟ — حجت/بحث ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۳۸ (UTC)[پاسخ]
@Huji: کد اون رو ندیده بودم، ولی چون فقط رده اضافه می‌کرد و رده‌هایی که باید را بر نمی‌داشت این رو ساختم... مجتبی ک. د. «بحث» ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۴۰ (UTC)[پاسخ]
همچنین رضا در طول سالیان معیارهایی برای انتخاب این که کدام رده‌ها را باید به مقالهٔ‌ فارسی آورد یا نیاورد پیدا کرد که بعداً در کد جدید (که ربات من می‌راند) هم وارد کردیم؛ مثلا نیفزودن رده‌های پنهان. این‌ها را شما اصلاً مطرح نکردید. چرا دانش و تجربهٔ قبلی را نادیده بگیریم و از نو ربات بنویسیم؟ — حجت/بحث ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۴۰ (UTC)[پاسخ]
@Huji: به نظرم بررسی رده‌های خرد و پنهان و ... اصولاً انرژی اضافه مصرف کردنه. ما فقط کافیه رده‌هایی که در wikitext مقاله هست را بررسی کنیم برای این کار. این کد هم همین کار رو می کنه. مجتبی ک. د. «بحث» ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۴۱ (UTC)[پاسخ]
@Mojtabakd: کد جدیدی بنویسید که فقط کار برداشتن رده‌ها را انجام بدهد، بعد روش کارش را دقیق اینجا توضیح بدهید تا راجع به مجوز بحث کنیم (و همین‌طور، راجع به این که رباتش باید جدا باشد یا در همان ردهٔ همسنگ ادغام شود). — حجت/بحث ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۴۲ (UTC)[پاسخ]
یکی از اشکالات ربات رضا این بود که رده‌هایی که الگوها و پودمان ها به مقالات اضافه می کردن رو بعضی وقتا به مقالات اضافه می کرد، اصولاً پردازش اون رده ها انرژی بیش از حدی می طلبه و نیازی هم نیست بهش. مجتبی ک. د. «بحث» ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۴۳ (UTC)[پاسخ]
@Huji: اوکی، همین رو با کمی تغییر میشه به شکلی تغییر داد که فقط برداشت رده انجام بده. مجتبی ک. د. «بحث» ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۴۵ (UTC)[پاسخ]
راجع به این نکتهٔ آخری که گفتید هم مشکل اساسی این است که یکی از کتابخانه‌ها باید خودش تابع استخراج «رده‌های درج‌شده در ویکی‌کد» را داشته باشد، اما نه pywikibot دارد و نه wikitextparser. پیشنهاد من این است که تابعش را بسازید و برای یکی از پروژه‌ها پول ریکوئست بفرستید؛ حدس می‌زنم wikitextparser جای بهتری باشد. — حجت/بحث ‏۲۲ ژوئیهٔ ۲۰۲۲، ساعت ۲۳:۴۶ (UTC)[پاسخ]
@Huji: اوکی، فعلاً اولویت اولم حذف رده‌های اضافه در صفحات ویکی فارسی هست، بعد سعی می کنم در اون کتابخانه ها هم مشارکت کنم که البته زمان زیادی می بره. حذف رده را در یک فایل جداگانه در GitHub آپلود می‌کنم و لینکش را اینجا قرار خواهم داد. مجتبی ک. د. «بحث» ‏۲۳ ژوئیهٔ ۲۰۲۲، ساعت ۰۰:۰۳ (UTC)[پاسخ]
@Huji: سلام، کد جدید را که «فقط» رده های اضافه را حذف کند را با تغییر کد قبلی ساختم. در حال تست کردنش هستم و یه سری ایراد جدید هم دیدم که گرفتم... مجتبی ک. د. «بحث» ‏۲۳ ژوئیهٔ ۲۰۲۲، ساعت ۱۱:۰۵ (UTC)[پاسخ]
الان مشکل اینه که HujiBot ظاهراً به رده‌ها رده همسنگ اضافه نمی‌کنه، دست کم اجازه بدید اونجاها رو بروزرسانی کنه و بقیه جاها فقط حذف کنه. نکته بعدی هم این که بهتره فعلاً این ربات رو به صورت دستی هر از گاهی اجرا کنم که با نظارت بر روش به مرور ارتقائش بدم، یکی دیگه از کارایی که باید انجام بدم اینه که داده‌ها رو از بانک اطلاعاتی در آینده بگیره که سرعتش بالاتر بره. یعنی به نظرم فعلاً ادغام نشه با ربات‌های موجود بهتره، بعدها میشه برای عملیات ادغام هم فکری کرد. مجتبی ک. د. «بحث» ‏۲۳ ژوئیهٔ ۲۰۲۲، ساعت ۱۴:۱۱ (UTC)[پاسخ]
@Mojtabakd: من مدتی از ویکی دور بودم. وضعیت کد در چه مرحله‌ای است؟
راجع به این که ربات من به رده‌ها ردهٔ همسنگ اضافه نمی‌کند درست گفتید. قصد دارم که به زودی کدش را تغییر بدهم تا بکند. — حجت/بحث ‏۳۱ ژوئیهٔ ۲۰۲۲، ساعت ۱۸:۱۳ (UTC)[پاسخ]
@Huji: سلام، کد در همون مرحله که در بالا توضیح دادم قرار داره و تغییر دیگه‌ای ندادم، این مدت بر روی کدهای مدیاویکی (و غیر از آن...) کار می‌کردم. منتظر بودم بیاید و نظرتون رو در مورد توضیحات بالا و این کد بگید. مجتبی ک. د. «بحث» ‏۳۱ ژوئیهٔ ۲۰۲۲، ساعت ۱۸:۲۵ (UTC)[پاسخ]
@Mojtabakd: یعنی الآن نسخهٔ جدید کد که فقط ردهٔ نامناسب را حذف می‌کند را کجا باید ببینم که مرورش کنم؟ — حجت/بحث ‏۳۱ ژوئیهٔ ۲۰۲۲، ساعت ۱۸:۲۷ (UTC)[پاسخ]
@Huji: مشارکت‌های ربات در 23 ژوئیه را می‌توانید ببینید با خلاصه ویرایش «حذف آزمایشی رده‌های اضافه». مجتبی ک. د. «بحث» ‏۳۱ ژوئیهٔ ۲۰۲۲، ساعت ۱۸:۳۸ (UTC)[پاسخ]
@Huji: کدش رو هم بالا اضافه کردم با عنوان «Cat-Remover.py» مجتبی ک. د. «بحث» ‏۳۱ ژوئیهٔ ۲۰۲۲، ساعت ۱۹:۰۱ (UTC)[پاسخ]
کد به نظر منطقی می‌رسد. البته خیلی تمیز نیست اما فعلاً نمی‌خواهم بهتان سخت بگیرم.
عجالتاً کد را روی ۱۰۰ صفحهٔ آزمایشیِ تصادفی برانید. (تصادفی باشد بهتر است تا این که مثلاً ۱۰۰ صفحهٔ تازه ایجاد شده باشد؛ می‌خواهیم ببینیم روی صفحه‌های قدیمی‌تر که رده‌هایشان منسوخ شده هم خوب کار می‌کند یا نه). — حجت/بحث ‏۲ اوت ۲۰۲۲، ساعت ۱۳:۰۸ (UTC)[پاسخ]

@Huji: سلام، تولید صفحات تصادفی را به کد اضافه کردم + اضافه کردن بخش رده‌های استثناء، فعلاً در فایلش یک رده «رده:صفحات با ترجمه بازبینی‌نشده» را اضافه کردم که از صفحات حذف نشن. در حال ویرایش حدود 100 صفحه تصادفی هست. تمیزکاری‌ها و بهینه‌سازی سرعت ویرایش و ... به مرور اضافه خواهند شد. مجتبی ک. د. «بحث» ‏۲ اوت ۲۰۲۲، ساعت ۲۱:۲۹ (UTC)[پاسخ]

نکته دیگه این که به نظرم خیلی مهمه که رده‌های همسنگ هم هرچه زودتر به رده‌ها اضافه بشن، بهتره یا HujiBot در این راستا بروزرسانی بشه یا مجوز بدین که ربات من این کار رو بکنه. ممنون مجتبی ک. د. «بحث» ‏۲ اوت ۲۰۲۲، ساعت ۲۱:۳۲ (UTC)[پاسخ]
چون تفاوت خاصی بین کد Cat-Updater و Cat-Remover نبود ادغامشون کردم در Cat-Updater ... مجتبی ک. د. «بحث» ‏۲ اوت ۲۰۲۲، ساعت ۲۲:۰۸ (UTC)[پاسخ]
حدود 100 ویرایش انجام شد ✓ مجتبی ک. د. «بحث» ‏۲ اوت ۲۰۲۲، ساعت ۲۲:۵۱ (UTC)[پاسخ]
چند روز فرصت بدهید که بررسی کنم. صبور باشید. — حجت/بحث ‏۲ اوت ۲۰۲۲، ساعت ۲۳:۵۵ (UTC)[پاسخ]
اوکی مجتبی ک. د. «بحث» ‏۳ اوت ۲۰۲۲، ساعت ۰۰:۰۷ (UTC)[پاسخ]
کمی بیشتر وقت لازم دارم. صبور باشید. — حجت/بحث ‏۷ اوت ۲۰۲۲، ساعت ۲۱:۰۷ (UTC)[پاسخ]
مشکلی نیس. مجتبی ک. د. «بحث» ‏۷ اوت ۲۰۲۲، ساعت ۲۱:۲۶ (UTC)[پاسخ]
@Mojtabakd: من خیلی به این کد فکر کردم و آخر به این نتیجه رسیدم که بهتر است بی‌گدار به آب نزنیم. حالاتی برای من قابل تصور است که صفحهٔ فارسی رده‌های خوبی داشته باشد که انگلیسی نداشته باشد (خصوصاً در مقاله‌هایی که موضوعاتشان «ایرانی‌تر» است).
دو پیشنهاد دارم. یکم این که قبل از این که رده‌ای را حذف کنید، مطمئن شوید که آن رده میان‌ویکی انگلیسی دارد. اگر ندارد، یعنی ممکن است که رده در مورد موضوعی باشد که اساساً این قدر «ایرانی» است که حتی انگلیسی رده‌اش را هم ندارد. در چنین حالتی حذف رده معمولاً فکر خوبی نیست چون داریم از ویکیِ باکیفیت‌تر (در این مثال، فارسی) مطلبی را بر می‌داریم چون ویکیِ کم‌کیفیت‌تر آن را ندارد.
دوم این که پس از اصلاح بالا، کد را فعلاً اصلاح کنید چنان که رده‌هایی که می‌خواهد حذف کند را بیاید اما حذفشان نکند بلکه در یک صفحه (مثلاً در ویکی‌پدیا:سیاست ربات‌رانی/درخواست مجوز/Turingbot/وظیفه ۴/جدول) یک جدول بسازد که دو ستون داشته باشد: ستون اول نام مقاله، و ستون دوم فهرستی (جداشده با کاما)‌ از رده‌هایی که ربات فکر می‌کند باید حذف شوند.
بعد بگذاریم که ربات مدتی جدول را پر کند و دستی بررسی کنیم و بحث کنیم. — حجت/بحث ‏۱۶ اوت ۲۰۲۲، ساعت ۰۱:۳۷ (UTC)[پاسخ]
@Huji: اگر رده‌ای میان ویکی انگلیسی نداشته باشد آن را حذف نمی کند، این در کد در نظر گرفته شده، یعنی همان رده‌های loc_cats در کد. حالتی که رده میان ویکی انگلیسی داشته باشد ولی به دلایلی نباید از مقاله حذف شود به نظر خیلی حالت استثنایی هست (که آن هم با ایجاد فهرست استثناها در نظر گرفته شده).
ولی با این وجود به نظرم تهیه این جدول فکر خوبی هست، فقط ممکنه زیرصفحه خیلی سنگین بشه. مجتبی ک. د. «بحث» ‏۱۶ اوت ۲۰۲۲، ساعت ۰۹:۳۱ (UTC)[پاسخ]
تهیه فهرست استثناها (که فعلاً «رده:صفحات با ترجمه بازبینی‌نشده» در آن قرار دارد) برای مواردی هست که میان ویکی انگلیسی دارند ولی نباید حذف شوند. این ها رو به مرور به فهرست اضافه می کنم. یعنی قرار نیست ربات به صورت چشم بسته کل صفحات رو ویرایش کنه، بعد تعداد محدودی ویرایش خودم دستی رده ها رو بررسی می کنم و اگه موارد استثنایی بود به فهرست استثناها (exclude_list در کد) اضافه می کنم. مجتبی ک. د. «بحث» ‏۱۶ اوت ۲۰۲۲، ساعت ۰۹:۴۹ (UTC)[پاسخ]
زیرصفحه می‌تواند سنگین بشود؛ ترس ندارد! حجت/بحث ‏۱۹ اوت ۲۰۲۲، ساعت ۱۶:۵۸ (UTC)[پاسخ]
@Huji: یکم سرم شلوغ بود طول کشید ---> ویژه:پیوند دائمی/35421845 مجتبی ک. د. «بحث» ‏۲۴ اوت ۲۰۲۲، ساعت ۱۲:۵۵ (UTC)[پاسخ]
چیزی که نگرانش بودم، اینجا مستند شد.
مثال می‌زنم. ربات پیشنهاد کرد که در آندره ژلیابوف رده‌های رده:اعدام‌شدگان اهل اوکراین و رده:اعدام‌شدگان اهل روسیه حذف شوند. نسخهٔ انگلیسی مقاله در ردهٔ Category:Executed people of the Russian Empire قرار دارد (یعنی اعدام‌شدگان اهل امپراطوری روسیه). اهلیت این شخص هم به شهری بر می‌گردد که در حال حاضر در اوکراین است. پس این که چشم بسته چنین رده‌ای را حذف کنیم، صحیح نیست. می‌توان استدلال کرد که دست کم ردهٔ رده:اعدام‌شدگان اهل اوکراین صحیح است. حتی می‌شود استدلال کرد که حذف رده:اعدام‌شدگان اهل روسیه در شرایطی که مقاله در رده:اعدام‌شدگان با طناب دار اهل روسیه و رده:انقلابیون اهل روسیه هم هست و ربات قصد ندارد آن رده‌ها را حذف کند، کار صحیحی نیست؛ اگر آن دو ردهٔ «اهل روسیه» را قبول داریم، چرا رده:اعدام‌شدگان اهل روسیه را قبول نداشته باشیم؟
یا مثلا ربات پیشنهاد کرده که در قطعنامه ۱۳۵۷ شورای امنیت ردهٔ رده:جنگ‌های یوگسلاوی حذف شود. چرا؟ مقاله در رده:قطعنامه‌های شورای امنیت سازمان ملل متحد در مورد جنگ یوگسلاوی است که ردهٔ دختر رده:جنگ‌های یوگسلاوی است. این استدلال که صفحه نباید همزمان در ردهٔ‌ مادر و دختر باشد هم پیشتر مطرح شده و به چالش کشیده شده‌است. پرسمان‌هایی هم که من چندی پیش راندم نشان داد که صدها هزار مقاله در ویکی‌پدیای فارسی همزمان در ردهٔ مادر و دختر هستند. ویکی‌پدیای فارسی هم استثنا نیست؛ ویکی‌پدیای آلمانی هم ده‌ها هزار مقاله دارد که همزمان در ردهٔ مادر و دختر هستند. ویکی‌پدیاهای عربی و انگلیسی و ... هم همینطور.
پس به طور خلاصه، این که پروسهٔ حذف رده به شکل کاملاً خودکار انجام شود، صحیح نیست.
پیشنهاد عملی من این است: این ربات را تغییر بدهید به شکلی که برای هر مقاله‌ای پیشنهادهایش برای حذف رده را جایی (مثلاً در زیرصفحه‌ای از مقاله مثل نام مقاله/پیشنهاد حذف رده، یا در صفحه‌ای مثل وپ:پیشنهاد حذف رده/نام مقاله) قرار بدهد.روش دوم را اشتباه‌یاب استفاده می‌کند؛ مزیتش این است که اطلاعات غیرمحتوایی که مربوط به ابزار هستند را در فضای نام اصلی نمی‌گذارد؛ اشکالش این است که اگر مقاله منتقل شود اتصالش با زیرصفحه در فضای وپ قطع می‌شود. بعد یک ابزار (gadget) بسازید و دعوت کنید کاربران فعالش کنند که وقتی به مقاله‌ای رفتند، از آن زیرصفحهٔ کذایی پیشنهادها را بارگیری کند و به کاربر نشان بدهد و کمک کند که کاربر با چند کلیک انتخاب کند که کدام رده‌ها حذف شوند و کدام‌ها بمانند، و در یک کلیک آخر تمام تغییرات ذخیره شوند. دسترسی ابزار را هم می‌توانیم محدود کنیم مثلاً به گشت خودکار به بالا. اینطوری ربات + ابزار کار را تسهیل می‌کند اما خود تصمیم حذف رده را یک کاربر آگاهانه می‌گیرد. — حجت/بحث ‏۲۸ اوت ۲۰۲۲، ساعت ۰۱:۲۷ (UTC)[پاسخ]
در رابطه با این پیشنهاد باید فکر کنم ببینم چه راهی خوب هست... مجتبی ک. د. «بحث» ‏۲۹ اوت ۲۰۲۲، ساعت ۱۰:۳۳ (UTC)[پاسخ]

@Mojtabakd: سلام. اگر تصمیم بر این شد که فهرست تهیه شود و ابزاری برای اصلاح دستی رده‌ها ایجاد شود، من هم در این زمینه کمک می‌کنم. آیا قصد دارید کار این ربات را به‌شکلی که در بالا جناب حجت پیشنهاد دادند ادامه دهید؟ {{کاربر|جـیپیوتر}}بحث ‏۲۲ اکتبر ۲۰۲۲، ساعت ۰۸:۰۰ (UTC)[پاسخ]

@Jeeputer: سلام، فعلاً در آینده نزدیک برنامه ساخت ابزار رو ندارم. سر فرصت باید بشینم روی ابزارش کار کنم، اگه این فرصت ایجاد شد خبرتون میدم. تشکر مجتبی ک. د. «بحث» ‏۲۲ اکتبر ۲۰۲۲، ساعت ۱۰:۵۲ (UTC)[پاسخ]