লেখক:
(1) কেক্সুন ঝাং, ইউসি সান্তা বারবারা এবং সমান অবদান;
(2) হংকিয়াও চেন, নর্থউড হাই স্কুল এবং সমান অবদান;
(3) লেই লি, কার্নেগি মেলন বিশ্ববিদ্যালয়;
(4) উইলিয়াম ইয়াং ওয়াং, ইউসি সান্তা বারবারা।
একটি সিনট্যাক্টিক্যালি সঠিক টুল কলের জন্য একটি বিদ্যমান টুলের নাম উল্লেখ করতে হবে এবং টাইপ-সামঞ্জস্যপূর্ণ আর্গুমেন্ট পাস করতে হবে। একটি সসীম-স্টেট মেশিন (FSM) ব্যবহার করে একটি টুল কলের সিনট্যাক্স যাচাই করা সহজ এই সত্য দ্বারা অনুপ্রাণিত হয়ে, আমরা TOOLDEC প্রস্তাব করি, একটি FSM দ্বারা পরিচালিত একটি সীমাবদ্ধ ডিকোডিং অ্যালগরিদম৷ প্রতিটি ডিকোডিং ধাপের সময়, মডেল নমুনা শব্দভান্ডারের একটি উপসেট থেকে যা শুধুমাত্র সিনট্যাক্টিকভাবে সঠিক টোকেন ধারণ করে। টোকেন উপসেটগুলি নির্দিষ্ট করে এমন FSM টুল ডকুমেন্টেশন থেকে তৈরি করা যেতে পারে। উদাহরণস্বরূপ, চিত্র 2-এ একটি FSM ফাংশন add, exp, স্কোয়ার এবং sqrt-এর জন্য তৈরি করা হয়েছে। সারণি 2 দেখায় কিভাবে TOOLDEC প্রশ্নের উত্তর দেয় "একটি বর্গক্ষেত্রের দিক 5, এর ক্ষেত্রফল কত?" FSM ব্যবহার করে। FSM-এর নির্দেশিকা সহ, TOOLDEC নিম্নলিখিত লক্ষ্যগুলি অর্জন করে:
• সুইচিং মোড। "টেক্সট মোড" এর মধ্যে স্যুইচ করুন যখন মডেলটি যেকোন টেক্সট তৈরি করতে এবং "টুল মোড" যখন মডেল শুধুমাত্র বৈধ টুল কল তৈরি করতে পারে।
• টুলের নাম তৈরি করা হচ্ছে। একটি টুল কলের শুরুতে, শুধুমাত্র একটি পূর্ব-নির্ধারিত টুলের তালিকা থেকে সঠিক অস্তিত্ব টুলের নাম তৈরি করুন।
• পাসিং আর্গুমেন্ট। টুলে শুধুমাত্র টাইপ-অনুযায়ী আর্গুমেন্ট পাস করুন।
TOOLDEC একটি সীমাবদ্ধ-রাষ্ট্র মেশিন (FSM) দ্বারা পরিচালিত হয়। একটি FSM হল একটি 5-টুপল (S, V, g, s0, R), যার মধ্যে একটি সসীম অবস্থা সেট S, একটি বর্ণমালা V , একটি রূপান্তর ফাংশন g : S ×V → S, একটি প্রাথমিক অবস্থা s0 এবং একটি সেট গ্রহণকারী রাজ্যগুলি R. আমাদের ক্ষেত্রে, টুল স্বাক্ষর থেকে S এবং g তৈরি করা হয়। V হল ভাষা মডেলের টোকেন শব্দভান্ডার। R পূর্ব-নির্ধারিত টোকেনগুলির সাথে মিলে যায় যা নির্ধারণ করতে পারে যে LM টাস্কটি সম্পূর্ণ করেছে, যেমন ''।
প্রতিটি ডিকোডিং ধাপে, TOOLDEC একটি বর্তমান অবস্থা বজায় রাখে। এটি শুধুমাত্র FSM দ্বারা অনুমোদিত টোকেনগুলি তৈরি করতে পারে, অর্থাৎ যে টোকেনগুলির জন্য g(s, ·) সংজ্ঞায়িত করা হয়েছে৷ এইগুলো
একটি ট্রাই তৈরি করতে, আমরা একে একে সব স্ট্রিং ঢুকিয়ে দিই। ট্রাই-এ একটি স্ট্রিং ঢোকানোর অর্থ হল রুট থেকে স্ট্রিং দ্বারা তৈরি পাথের নিচে যাওয়া এবং নতুন নোড তৈরি করা যখন পাথের পরবর্তী ধাপটি বিদ্যমান নেই। উদাহরণ স্বরূপ, আমরা দেখাই কিভাবে চিত্র 3-তে আরো দুটি টুলের নাম, exp10 এবং expand যোগ করা যেতে পারে।
মনে রাখবেন যে trie এর নির্মাণ একটি অনুমানের উপর নির্ভর করে: কোন দুটি টুল একই নাম নেই। যদিও এটি করা একটি যুক্তিসঙ্গত অনুমান, বাস্তব অ্যাপ্লিকেশনগুলিতে ব্যতিক্রম হতে পারে। সেক্ষেত্রে, আমরা তাদের দ্ব্যর্থহীন করার জন্য আরও বিশদ অন্তর্ভুক্ত করার জন্য টুলের নামগুলি পুনরায় লিখতে পারি। বিমূর্ত এবং বুঝতে অসুবিধাজনক টুলের নাম পুনর্লিখন করা ভাষা মডেলের জন্য নাম অনুসারে নির্বাচন করা সহজ করে তুলতে পারে।
সিনট্যাক্টিক্যালি বৈধ টুল আর্গুমেন্ট তৈরি করা হচ্ছে। টুল আর্গুমেন্ট নির্দিষ্ট ধরনের আছে. একটি প্রোগ্রামের আর্গুমেন্টের মত, তাদের কিছু ব্যাকরণের নিয়ম মেনে চলতে হবে। এই নিয়মগুলি সসীম-রাষ্ট্র মেশিন দ্বারা নির্দিষ্ট করা যেতে পারে। উদাহরণ স্বরূপ, চিত্র 2-এ "IntFSM" একটি সীমিত-রাষ্ট্র মেশিনকে চিত্রিত করে যা শুধুমাত্র পূর্ণসংখ্যার আক্ষরিক গ্রহণ করে। একটি টুলের সমস্ত আর্গুমেন্টের জন্য, আমরা তাদের সংশ্লিষ্ট FSMগুলিকে একত্রে চেইন করি এবং এই FSM চেইনের প্রাথমিক অবস্থা হিসাবে টুলের নামের সাথে মিলিত শেষ অবস্থাটি ব্যবহার করি। মনে রাখবেন যে অনুশীলনে, এই FSMটি স্পষ্টভাবে তৈরি করার প্রয়োজন নেই। যেকোন ব্যাকরণ পরীক্ষক যা বৈধ পরবর্তী টোকেনগুলির সেটটি যথেষ্ট বলে দেয়৷
এই কাগজটি CC 4.0 DEED লাইসেন্সের অধীনে arxiv-এ উপলব্ধ ।