মেশিন লার্নিং মডেলগুলো কি টাইপস্ক্রিপ্টের এমন টাইপ তৈরি করে যা টাইপ চেক-এ পাস হয়?
Author
Venue
ইউরোপীয় অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং সম্মেলন (ECOOP) ২০২৩
Abstract
টাইপ মাইগ্রেশন হল কম্পাইল-টাইমে নিশ্চয়তা অর্জনের জন্য টাইপবিহীন কোডে টাইপ যোগ করার প্রক্রিয়া। টাইপস্ক্রিপ্ট এবং অন্যান্য ধাপে ধাপে টাইপ সিস্টেম প্রোগ্রামারদের অস্পষ্ট টাইপ দিয়ে শুরু করে ধাপে ধাপে সেগুলো শক্তিশালী করার সুযোগ দিয়ে টাইপ মাইগ্রেশনকে সহজ করে। তবে টাইপ যোগ করা একটি ম্যানুয়াল কাজ এবং বড় শিল্প-মানের কোডবেসে একাধিক মাইগ্রেশন সম্পন্ন করতে কয়েক বছর সময় লেগেছে বলে জানা গেছে। গবেষণা সম্প্রদায়ে টাইপস্ক্রিপ্ট টাইপ মাইগ্রেশন স্বয়ংক্রিয় করতে মেশিন লার্নিং ব্যবহারে ব্যাপক আগ্রহ দেখা গেছে। বিদ্যমান মেশিন লার্নিং মডেলগুলো পৃথক TypeScript টাইপ অ্যানোটেশন অনুমান করতে উচ্চ মাত্রার সঠিকতা দেখায়। তবে, এই প্রবন্ধে আমরা যুক্তি দিচ্ছি যে সঠিকতা বিভ্রান্তিকর হতে পারে, এবং আমাদের ভিন্ন একটি প্রশ্ন বিবেচনা করা উচিত: একটি স্বয়ংক্রিয় টাইপ মাইগ্রেশন টুল কি এমন কোড তৈরি করতে পারে যা TypeScript টাইপ চেকারে পাস হয়? আমরা TypeWeaver উপস্থাপন করছি, একটি TypeScript টাইপ মাইগ্রেশন টুল যা যেকোনো টাইপ পূর্বাভাস মডেলের সাথে ব্যবহার করা যেতে পারে। আমরা TypeWeaver-কে তিনটি বিদ্যমান মডেল দিয়ে মূল্যায়ন করি: DeepTyper, একটি রিকুরেন্ট নিউরাল নেটওয়ার্ক; LambdaNet, একটি গ্রাফ নিউরাল নেটওয়ার্ক; এবং InCoder, একটি সাধারণ-উদ্দেশ্যমূলক, বহু-ভাষিক ট্রান্সফরমার যা মাঝখানে পূরণ (fill-in-the-middle) কাজ সমর্থন করে। আমাদের টুল টাইপ পূর্বাভাস মডেল ব্যবহারের জন্য প্রয়োজনীয় কয়েকটি ধাপ স্বয়ংক্রিয় করে, (১) প্রজেক্টের নির্ভরতার জন্য টাইপ ইমপোর্ট করা; (২) জাভাস্ক্রিপ্ট মডিউলগুলোকে TypeScript নোটেশনে রূপান্তর করা; (৩) প্রয়োজন অনুযায়ী প্রোগ্রামে পূর্বানুমানিত টাইপ এনোটেশন ঢুকিয়ে TypeScript তৈরি করা; এবং (৪) প্রয়োজন অনুযায়ী অ-টাইপ পূর্বানুমান প্রত্যাখ্যান করা। আমরা TypeWeaver-কে ৫১৩টি JavaScript প্যাকেজের একটি ডেটাসেটে মূল্যায়ন করি, যার মধ্যে এমন প্যাকেজও রয়েছে যেগুলো আগে কখনো টাইপ করা হয়নি। সেরা টাইপ পূর্বাভাস মডেলের সাথে, আমরা দেখতে পাই যে মাত্র ২১% প্যাকেজ টাইপ চেক করে, তবে আরও উৎসাহজনকভাবে, ৬৯% ফাইল সফলভাবে টাইপ চেক করে।
