অপের্তিউম নতুন ভাষা জোড়া তে হয় কিভাবে
Contents |
অপের্তিউম নতুন ভাষা জোড়া তে হয় কিভাবে
এই তে হয় কিভাবে ডকুমেন্টটি বর্ণনা করবে শুরু হচ্ছে থেকে অপের্তিউম মেশিন অনুবাদ পদ্ধতির জন্য একটি নতুন ভাষা জোড়া শুরু করতে কিভাবে।
এইটি ভাষাএর যেকোন জ্ঞান ধরে নেয় না, অথবা হের মেশিন অনুবাদ স্তর উপরে ক্রিয়াপদ থেকে nouns আলাদা করতে সক্ষম (এবং প্রেপসিতীয়নস ইত্যাদি)
ভূমিকা
প্রেপসিতীয়নস , আপনি হিসেবে, একটি মেশিন অনুবাদ পদ্ধতি এখনের মধ্যে সম্ভবত রিয়ালিজে কোর্স ছে। ভাল, সম্পূর্ণভাবে না, এইটি একটি মেশিন অনুবাদ প্ল্যাটফর্ম 'sয়। এইটি একটি ইঞ্জিন এবং সরঞ্জামের বাক্স জোগান দেয় যে আপনার নিজের মেশিন অনুবাদ সিস্টেম নির্মাণ করতে আপনাকে অনুমোদন করে। কেবল জিনিস আপনি ডেটা কর হ লেখতে প্রয়োজন বোধ করেন। ডেটা একটি মৌলিক স্তরে, গঠিত হয়, তিন অভিধান এবং একটি অল্প নিয়মের (কথা পুনরায় ধারাচ্ছে এবং অন্যান্য ব্যাকরণগত stuffএর সঙ্গে চুক্তিতে)।ের দিকে একটি আরও বেশি পুঙ্খানুপুঙ্খ ভূমিকার জন্য যেমন এইটি সমস্ত কাজ করে, ে কিছু সর্বোৎকৃষ্ট কাগজ আছে প্রকাশনা পাতা।
আপনি প্রয়োজন বোধ করবেন
- lttoolbox (>= 3.0.0)
- libxml utils (xmllint ইত্যাদি)
- apertium (>= 3.0.0)
- একটি লেখা সম্পাদক (অথবা একটি স্পেচিয়ালিসেদ এক্সএমএল সম্পাদক যদি আপনি পছন্দ করে)
এই ডকুমেন্টটি বর্ণনা করবে না এই প্যাকেজ ইনস্টল করতে কিভাবে, আরও বেশি তথ্য দয়া করের জন্য অপের্তিউম ওয়েবসাইটের ডকুমেনটেশন অংশ দেখে।
ের দ্বারা গঠিত একটি ভাষা জোড়া কি করে?
অপের্তিউম একটি অগভীর স্থানান্তর ধরন মেশিন অনুবাদ পদ্ধতি। সুতরাং, এইটি অভিধান এবং অগভীর স্থানান্তর নিয়মে প্রাথমিকভাবে কাজ করে। অপারেশনে, অগভীর স্থানান্তর সেই এইটি পূর্ণ সিন্তাচ্তিক পার্সিং টিতে গভীর স্থানান্তর থেকে আলাদা করা হয় না, নিয়ম পার্স গাছগুলি ক্রিয়াকর্মের চেয়ে লেক্সাল একক, বরংএর দলে ক্রিয়াকর্ম সাধারণভাবে আছে। একটি মৌলিক স্তরে, তিন প্রধান অভিধান আছে:
- ভাষা xxএর জন্য মর্ফলোগিকাল শব্দভাণ্ডার: এইটি ের নিয়ম ধারণ করে ভাষা xxতে যেমন শব্দ ইন্ফ্লেচ্ত ওয়া হয়। আমাদের উদাহরণ এইতেটি ডাক দেওয়া হবে:
apertium-sh-en.sh.dix
- ভাষা yyএর জন্য ইন্ফ্লেচ্ত শব্দভাণ্ডার: এইটি ের নিয়ম ধারণ করে ভাষা yyতে যেমন শব্দ ইন্ফ্লেচ্ত ওয়া হয়। আমাদের উদাহরণ এইতেটি ডাক দেওয়া হবে:
apertium-sh-en.en.dix
- দুই ভাষা শব্দভাণ্ডার: দুই ভাষাতে শব্দ এবং চিহ্নের মধ্যে যোগাযোগ ধারণ করে। আমাদের উদাহরন এইতেটি ডাক দেওয়া হবে:
apertium-sh-en.sh-en.dix
একটি অনুবাদ জোড়াতে, উভয় ভাষা অনুবাদের জন্য হয় উৎস অথবা লক্ষ্য, এইগুলি আপেক্ষিক শর্তাবলী আছে। স্থানান্তর নিয়মের জন্য ও দুই ফাইল আছে। এইগুলি নিয়ম আছে যে শাসন করে যেমন শব্দ বাক্য, উদাঃ chat noir -> cat black -> black cat. এইটি লিঙ্গের চুক্তি ও শাসন করে, সংখ্যা ইত্যাদি নিয়ম ভিতরে ঢোকেতে ও ব্যবহার করা যাবে অথবা লেক্সাল পদগুলো মুছে ফেলুন, হিসেবে হ বর্ণনা কর পরবর্তী কালে। এই ফাইল আছে:
- ভাষা yy স্থানান্তর নিয়মে ভাষা xx: এই ফাইলটি ের জন্য নিয়ম ধারণ করে যেমন ভাষা xx ভাষা yyএর দিকে পরিবর্তন করা হবে। আমাদের উদাহরণ এইতেটি হবে:
apertium-sh-en.sh-en.t1x
- ভাষা স্থানান্তর নিয়ম xxতে ভাষা yy: এই ফাইলটি ের জন্য নিয়ম ধারণ করে যেমন ভাষা yy ভাষা xxএর দিকে পরিবর্তন করা হবে। আমাদের উদাহরণ এইতেটি হবে:
apertium-sh-en.en-sh.t1x
ভাষা জোড়া বর্তমানে প্রাপ্তিসাধ্য আছে অন্যান্য ফাইলের অনেক, কিন্তু আমরা তাদেরকে এখানে ঢাকা দিই না। এই ফাইল একটি কাজ করছে পদ্ধতি উৎপাদন করতে কেবল এক প্রয়োজন বোধ করে।
ভাষা জোড়া
হিসেবে ফাইল নামগুলোর দ্বারা রাখ হ পরক্ষভাবে উল্লেখ কর প্রতি, এই হোতোটি ব্যাখ্যা করতে সের্ব-ক্রাতিয়ান থেকে ইংরেজী অনুবাদ করার উদাহরণ ব্যবহার করবে একটি মৌলিক পদ্ধতি তৈরি করতে কিভাবে। এইটি একটি আদর্শ জোড়া নয়, পদ্ধতি থেকে আরও বেশি কাছাকাছি সম্পর্কিত ভাষার জন্য ভাল কাজ করে। এইটির সহজ উদাহরণের জন্য একটি সমস্যা এখানে উপস্থাপন করা উচিত নয় দিয়েছিল।
শর্তাবলী একটি সংক্ষিপ্ত নোট
শর্তাবলীর সংখ্যা আছে যে আমরার পূর্বে হ বুঝতে প্রয়োজন বোধ করবেন চালিয়ে যাবেন। প্রথম lemmaচ্ছে। একটি lemma একটি কথার উদ্ধৃতি আকার। এইটি যেকোন ব্যাকরণগত তথ্যের কথা টুকরায়। উদাহরণের জন্য, কথা বিড়ালের lemma বিড়ালচ্ছে। ইংরেজী নৌনস এইতেটি প্রশ্নে কথার একবচন আকার সাধারণভাবে হবে। ক্রিয়াপদের জন্য, lemma তে ইন্ফিনিতিভে টুকরা এরয়, wasএর উদাঃ lemma be হবে। দ্বিতীয় symbolচ্ছে। অপের্তিউম পদ্ধতির প্রসঙ্গে, চিহ্ন একটি ব্যাকরণগত লেবেলে উল্লেখ করে। কথা বিড়াল একটি প্লুরাল নৌনস, এইটি অতএবের নৌনস চিহ্ন এবং প্লুরাল চিহ্ন থাকবে। অপের্তিউম মডিউল এইের ইনপুট এবং আউটপুটেগুলি কোণ বন্ধনীর মধ্যে typically দেওয়া হয়, অনুসরণ কর হিসেবে:
<n>
; for নৌনস।<pl>
; for প্লুরাল।
চিহ্নের অন্যান্য উদাহরণ আছে <sg>; একবচন, <p1> প্রথম ব্যক্তি, <pri> বর্তমান ইন্দিকাতিভে, ইত্যাদি। কোণ বন্ধনীতে কখন লিখিত, চিহ্ন ট্যাগ হিসেবে ও উল্লেখ করা হয়ত যাবে। এইটি বর্তমানে প্রাপ্তিসাধ্য ভাষা জোড়া চিহ্ন সংজ্ঞা অক্রন্য্ম্সএর অনেকে মূল্যবান লক্ষ্য কর সেটাচ্ছে অথবা কাতালানতে শব্দের সঙ্কোচন। উদাহরণ,এর জন্য vbhaver — থেকে vb (verb) এবং haver ("to have" কাতালানতে). চিহ্ন তে সংজ্ঞায়িত করা হয় <sdef> ট্যাগ এবং তে ব্যবহার করেছিল <s> ট্যাগ.
তৃতীয় কথা পারাদিগ্মচ্ছে। Apertium পদ্ধতির প্রসঙ্গে, পারাদিগ্ম ের একটি উদাহরণে উল্লেখ করে শব্দের যেমন একটি নির্দিষ্ট শ্রেণী ইন্ফ্লেচ্তয়। মর্ফলোগিকাল শব্দভাণ্ডারে, lemmas (উপরে দেখুন) পারাদিগ্ম্সsতে সংযোগ করা হয় যে বর্ণনা করতে আমাদেরকে অনুমোদন করেন ব্যতীত যেমন একটি প্রদত্ত lemma ইন্ফ্লেচ্ত্সএর শেষাংশের সমস্ত লেখ বাইরিতে রাখ প্রতি।
এইের উপযোগীতার একটি উদাহরণটি, যদি আমরা দুই বিশেষণ এবং lazy সংরক্ষণ করতে চেয়েছিল happyেছিল, একই জিনিসের দুই অনেক সংরক্ষণ করার পরিবর্তে:
- happy, happ (y, ier, iest)
- lazy, laz (y, ier, iest)
আমরা একটি সহজভাবে সংরক্ষণ করতে পারি, এবং তারপর বলুন "lazy, inflects like happy", অথবা বাস্তবিকপক্ষে "shy inflects like happy", "naughty inflects like happy", "friendly inflects like happy" এই উদাহরণে, ইত্যাদিটি, সুখী পারাদিগ্ম হবে,ের জন্য মডেল যেমন অন্যান্য ইন্ফ্লেচ্তয়।ের যথাযত বর্ণনা যেমন এইটি সল্প সময়ে সংজ্ঞায়িত করা হয় ব্যাখ্যা করা হয়। পারাদিগ্ম্স তে সংজ্ঞায়িত করা হয় <pardef> ট্যাগ, তে এবং ব্যবহৃত <par> ট্যাগ।
আরম্ভকৃত পাচ্ছে
মনলিন্গুয়াল অভিধান
- See also: List of dictionaries and Incubator
আসুন আমাদের প্রথম উৎস ভাষা শব্দভাণ্ডার তৈরি করার মধ্যে শুরু করি। শব্দভাণ্ডার একটি এক্সএমএল ফাইল। আগুন উপর আপনার লেখা সম্পাদক এবং নিম্নলিখিত টাইপ করুন:
<?xml version="1.0" encoding="UTF-8"?> <dictionary> </dictionary>
সুতরাং, ফাইল এখনও পর্যন্ত সংজ্ঞায়িত করে যে আমরা একটি শব্দভাণ্ডার শুরু করতে চাই। হতে এইটির জন্য অর্ডারে কার্যকর, আমরা কিছু আরও বেশি এন্ট্রি যোগ করতে প্রয়োজন বোধ করে, প্রথম একটি বর্ণমালা। এইটি চিঠির সেট সংজ্ঞায়িত করে যে সের্ব-ক্রাতিয়ানএর জন্য শব্দভাণ্ডার,তে ব্যবহার করা হয়ত যাবে। এইটি নিম্নলিখিতের মত কিছু জিনিষ দেখবে, সের্ব-ক্রাতিয়ান বর্ণমালার ধারণ করে সমস্ত চিঠি:
<alphabet>ABCČĆDDžĐEFGHIJKLLjMNNjOPRSŠTUVZŽabcčćddžđefghijklljmnnjoprsštuvzž</alphabet>
ের নিচে স্থান বর্ণমালা <dictionary> ট্যাগ।
পরবর্তী আমরা কিছু চিহ্ন সংজ্ঞায়িত করতে প্রয়োজন বোধ করি। আসুন সহজ জিনিষ, নুনএর সঙ্গে শুরু কর বন্ধই (এন) একবচনে (sg) এবং প্লুরাল (pl)।
<sdefs> <sdef n="n"/> <sdef n="sg"/> <sdef n="pl"/> </sdefs>
চিহ্ন নামগুলো হতে না ঘটনাতে সুতরাং ক্ষুদ্র,, তাদেরকে পূর্ণে মাত্র লেখ বাইরে যাবে, কিন্তু আপনি হিসেবে টাইপ করা তাদেরকে অনেক হবেন, এইটি সংক্ষিপ্ত করতে বোধ তৈরি করেন।
দুর্ভাগ্যবশত, এইটি সম্পূর্ণভাবে নয় সংখ্যা মাত্রের চেয়ে আরও বেশির জন্য সের্ব-ক্রাতিয়ান ইন্ফ্লেচ্ততে সুতরাং সহজ, নৌনস, তারা লিঙ্গ এবং খাপের জন্য ও ইন্ফ্লেচ্তয়। উপরন্তু, আমরা এই উদাহরণটির উদ্দ্যেশ্যের জন্য ধরে নেব যে নুন মাস্কালিনে এবং নমিনাতিভে খাপে (একটি পূর্ণ উদাহরণ এই ডকুমেন্টটির খুঁজে পা at এই শেষ হা হয়ত যাবে)।
পরবর্তী জিনিস পারাদিগ্ম্স,এর জন্য একটি অংশ সংজ্ঞায়িত করতে
<pardefs> </pardefs>
এবং একটি শব্দভাণ্ডার অংশ:
<section id="main" type="standard"> </section>
অনুচ্ছেদের দুই ধরন আছে, প্রথম একটি মান অংশ, যে শব্দ, এন্চ্লিতিচ্স ধারণ করে, ইত্যাদি দ্বিতীয় ধরন একটি inconditional section বিরাম চিহ্ন কোন সাধারণভাবে ধারণ করে, ইত্যাদি আমাদের একটি শর্তাধীন অংশ এখানে নেই।
সুতরাং, আমাদের ফাইলের ের মত কিছু জিনিষ এখন দেখা উচিত:
<?xml version="1.0" encoding="UTF-8"?> <dictionary> <sdefs> <sdef n="n"/> <sdef n="sg"/> <sdef n="pl"/> </sdefs> <pardefs> </pardefs> <section id="main" type="standard"> </section> </dictionary>
আমরা এখন স্থানে কাঠামো পেয়েছি, আমরা একটি নুন যোগ করার মধ্যে শুরু করতে পারি। প্রশ্নে নুন 'gramofon' হবে (যেটি 'gramophone' অথবা 'record player' অভিপ্রায় করে)।
প্রথম জিনিস আমরা করতে প্রয়োজন বোধ করি, আমাদের হিসেবে কোনও আগের পারাদিগ্ম্স নেই, একটি পারাদিগ্ম সংজ্ঞায়িত করতে।
স্মরণ করুন, আমরা ধরে নিয়ে পুরুষ লিঙ্গ এবং নমিনাতিভে খাপ 'reই। নুনএর একবচন আকার 'gramofon'চ্ছে, এবং প্লুরাল 'gramofoni'চ্ছে। সুতরাং:
<pardef n="gramofon__n"> <e><p><l/><r><s n="n"/><s n="sg"/></r></p></e> <e><p><l>i</l><r><s n="n"/><s n="pl"/></r></p></e> </pardef>
নোট: '<l/>' (তে সমতুল্য <l></l>) অভিপ্রায় করে যে একবচনের জন্য স্টেমতে হ যোগ করতে কোনও অতিরিক্ত পদার্থ নেই।
এইটি এইটি বর্ণনা করার একটি বরং শব্দবহুল মৌখিক রাস্তার মত মনে হতে পারে, কিন্তু এইের জন্য কারণটি আছে এবং এইটি দ্বিতীয় প্রকৃতি তাড়াতাড়ি হয়। আপনি সম্ভবত 'reন ভাবেন যার <e>,
, <l> এবং <r> ের জন্য দাঁড়ান। ভাল,
- e, এন্ট্রি কির জন্য।
- p, জোড়া কির জন্য।
- l, বাম জন্য।
- r, অধিকার কির জন্য।
কেন বাকি আছে এবং অধিকার? ভাল, মর্ফলোগিকাল অভিধান ফিনিতে দেশ মেশিনের দিকে পরবর্তী কালে সঙ্কলন করা হবে। শব্দ থেকে বিশ্লেষণ ডানদিক তৈরি করতে তাদেরকে সঙ্কলন করছিল ছেড়ে চলে যাচ্ছিল, বিশ্লেষণ থেকে শব্দ ছেড়ে চলে যা তৈরি করতে অধিকার থেকে এবং। উদাহরণের জন্য:
* gramofoni (left to right) gramofon<n><pl> (analysis) * gramofon<n><pl> (right to left) gramofoni (generation)
আমরা এখন একটি পারাদিগ্ম সংজ্ঞায়িত করেছি, আমরা এর লেম্মা, gramofonতে এইটি সংযোগ করতে প্রয়োজন বোধ করি। আমরা এই inটি অংশ রাখি যে আমরা সংজ্ঞায়িত করেছি।
তে রাখতে এন্ট্রি <অংশ> ের মত দেখবে:
<e lm="gramofon"><i>gramofon</i><par n="gramofon__n"/></e>
শব্দসংক্ষেপে একটি দ্রুত চল নিচে:
- lm, লেম্মা কির জন্য।
- i, পরিচয় কির জন্য (বাকি আছে এবং অধিকার একই আছে)।
- par, পারাদিগ্ম কির জন্য।
এই এন্ট্রিটি কথা, গ্রামোফোন, মূল, গ্রামোফোনএর লেম্মা রাজ্যয় এবংের সঙ্গে পারাদিগ্ম যেটি এইটি গ্রামোফোন ইন্ফ্লেচ্ত্সয়। লেম্মা এবং মূলের মধ্যে পার্থক্য যে লেম্মা কথার উদ্ধৃতি আকার, মূলার সময় তে লেম্মাএর সুব্স্ত্রিং যেটি স্তেম্স যোগ করা হয়। এইটি আরও বেশি পরিষ্কার পরবর্তী কালে হবে যখন আমরা একটি এন্ট্রি দেখায় যেখানে দুই আলাদা আছে।
আমরা শব্দভাণ্ডার পরীক্ষা করতে এখন তৈরি 'reই। এইটি সংরক্ষণ করুন, এবং তারপর শেলে ফেরত। এইটি সঙ্কলন করতে আমরা প্রথম প্রয়োজন (lt-compএর সঙ্গে), তারপর আমরা এইটি পরীক্ষা করতে পারি (lt-procএর সঙ্গে)।
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin
ের আউটপুট কি তৈরি করা উচিত:
main@standard 12 12
আমরা হিসেবে ডানদিকতে এইটি সঙ্কলন করছি ছেড়ে চলে যাচ্ছি, আমরা উৎপাদন করা একটি বিশ্লেষক 'reই। আসুন একটি উৎপাদক খুব তৈরি করি।
$ lt-comp rl apertium-sh-en.sh.dix sh-en.autogen.bin
এই দশাতেটি, কমান্ডের একই আউটপুট তৈরি করা উচিত।
আমরা এইগুলি এখন পরীক্ষা করতে পারি। বিশ্লেষকে চল lt-proc।
$ lt-proc sh-en.automorf.bin
গ্রামফনিতে এইটি বাইরে, ধরন এখন চেষ্টা করে (gramophones), এবং আউটপুট দেখুন:
^gramofoni/gramofon<n><pl>$
ইংরেজী শব্দভাণ্ডার,এর জন্য, এখন একই জিনিস করে, কিন্তু গ্রামোফোনএর জন্য ইংরেজী কথা গ্রামোফোনে বিকল্পন, এবং প্লুরাল ইন্ফ্লেচ্তীয়ন পরিবর্তন করুন। আরও বেশি সঠিক কথা 'record player' ব্যবহার করতে কি যদি আপনাকে চাই? ভাল, আমরা ব্যাখ্যা করব করতে কিভাবে যে পরবর্তী কালে।
আপনার ডিরেক্টরীতে দুই ফাইল এখন থাকা উচিত:
- apertium-sh-en.sh.dix একটি কোন ধারণ করে (খুব) মৌলিক সের্ব-ক্রাতিয়ান মর্ফলোগিকাল শব্দভাণ্ডার, এবং
- apertium-sh-en.en.dix একটি কোন ধারণ করে (খুব) মৌলিক ইংরেজী মর্ফলোগিকাল শব্দভাণ্ডার।
দুই ভাষা শব্দভাণ্ডার
আমাদের সুতরাং দুই ভাষা শব্দভাণ্ডার তৈরি কর হতে দুই মর্ফলোগিকাল অভিধান, পরবর্তী জিনিস এখন রয়েছে। এইটি শব্দের মধ্যে মাপ্পিন্গ্স বর্ণনা করে। সমস্ত অভিধান একই ফরম্যাট ব্যবহার করে (যেটি ডিটিডি, dix ডিটিডিতে উল্লেখ করা হয়)।
একটি নতুন ফাইল, তৈরি করুন apertium-sh-en.sh-en.dix এবং মৌলিক কাঠামো যোগ করুন:
<?xml version="1.0" encoding="UTF-8"?> <dictionary> <alphabet/> <sdefs> <sdef n="n"/> <sdef n="sg"/> <sdef n="pl"/> </sdefs> <section id="main" type="standard"> </section> </dictionary>
আমরা এখন দুই শব্দের মধ্যে অনুবাদ করতে একটি এন্ট্রি যোগ করতে প্রয়োজন বোধ করি।ের মত কিছু জিনিষ:
<e><p><l>gramofon<s n="n"/></l><r>gramophone<s n="n"/></r></p></e>
কারণ অনেক এই এন্ট্রি আছে, তারা ফাইলের সহজতর পড়া সুবিধাজনক করতে একটি লাইনে সাধারণভাবে লিখিত 'reয়। 'l' এবং 'r' অধিকারের সঙ্গে পুনরায়? ভাল, আমরা সের্ব-ক্রাতিয়ান → ইংরেজী শব্দভাণ্ডার তৈরি করতে ডানদিকতে এইটি সঙ্কলন করেছিলাম ছেড়ে চলে গিয়েছিলাম, ইংরেজী → সের্ব-ক্রাতিয়ান শব্দভাণ্ডার তৈরি করতে ছেড়ে চলে যেতে এবং অধিকার।
সুতরাং, এই একবারটি করা হয়, নিম্নলিখিত র্নিদেশাবলী চালান:
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin $ lt-comp rl apertium-sh-en.en.dix sh-en.autogen.bin $ lt-comp lr apertium-sh-en.en.dix en-sh.automorf.bin $ lt-comp rl apertium-sh-en.sh.dix en-sh.autogen.bin $ lt-comp lr apertium-sh-en.sh-en.dix sh-en.autobil.bin $ lt-comp rl apertium-sh-en.sh-en.dix en-sh.autobil.bin
মর্ফলোগিকাল অনাল্য্সের্স উৎপাদন করতে (automorf), মর্ফলোগিকাল উৎপাদক (autogenেছিল) এবং কথা দৃষ্টিপাত উপর (autobil), বিল ের জন্য " bilingual "।
স্থানান্তর নিয়ম
সুতরাং, আমাদের এখন দুই মর্ফলোগিকাল অভিধান রয়েছে, এবং একটি দুই ভাষা শব্দভাণ্ডার। সমস্ত সেটা আমরা নৌনসএর জন্য একটি স্থানান্তর রুল এখন প্রয়োজন বোধ করে। স্থানান্তর রুল ফাইলের তাদের নিজের ডিটিডি রয়েছে (স্থানান্তর ডিটিডি) যেটি অপের্তিউম প্যাকেজে খুঁজে পা যাবে। যদি আপনি অন্যান্য ভাষা জোড়া প্রথমের রুল ফাইলে দেখতে একটি রুল এইটি একটি ভাল ধারনা বাস্তবায়ন করতে প্রায়শই প্রয়োজন বোধ করেন। অনেক নিয়ম ভাষার মধ্যে রেচ্য়্চ্লেদ/রেউসেদ যাবে। হের নিচে উদাহরণ একটি বর্ণনাকৃতের জন্য যেকোন ফাঁকা বিষয় ভাষার জন্য কার্যকর।
একটি মৌলিক কাঠামোর সঙ্গে সমস্ত অন্যান্যের মত শুরু করুন:
<?xml version="1.0" encoding="UTF-8"?> <transfer> </transfer>
মূহুর্তে, কারণ আমরা একটি রুল তৈরি করতে উপেক্ষা করছে খাপ, আমরা প্রয়োজন মাত্র 'reই যে ব্যাকরণগত চিহ্ন ইনপুট এবং আউটপুট তাদেরকে পুনরায় গ্রহণ করি।
শ্রেণীবিভাগ এবং বৈশিষ্ট্যাবলী সংজ্ঞায়িত করতে আমরা প্রথম প্রয়োজন। শ্রেণীবিভাগ এবং ব্যাকরণগত চিহ্ন দলবদ্ধ করতে উভয় আমাদেরকে আরোপ করে অনুমোদন করে। শ্রেণীবিভাগ মিলের উদ্দ্যেশ্যের জন্য চিহ্ন দলবদ্ধ করতে আমাদেরকে অনুমোদন করে (উদাহরণ 'n *'এর জন্য সমস্ত নৌনস)। বৈশিষ্ট্যাবলী চিহ্নের একটি সেট দলবদ্ধ করতে আমাদেরকে অনুমোদন করেন যে থেকে বেছে নে যাবে। উদাহরণের জন্য ('sg' এবং 'pl' একটি একটি বৈশিষ্ট্য 'number' দলবদ্ধ করা হয়ত যাবে)।
আসুন প্রয়োজনীয় অনুচ্ছেদ যোগ করি:
<section-def-cats> </section-def-cats> <section-def-attrs> </section-def-attrs>
আমরা হিসেবে একবচন এবং প্লুরালতে ইন্ফ্লেচ্তিং, নৌনস কেবল 'reই তারপর আমরা নৌনসএর জন্য একটি শ্রেণী যোগ করতে প্রয়োজন বোধ করি, এবং সংখ্যার একটি বৈশিষ্ট্যের সঙ্গে। নিম্নলিখিতের মত কিছু জিনিষ বেশা হবে:
ের দিকে যোগ করুন section-def-cats:
<def-cat n="nom"> <cat-item tags="n.*"/> </def-cat>
এইটি সমস্ত নৌনস ধরে (লেম্মাস ের মধ্যে অনুসরণ করেছিল<n> তারপর যেকিছু) এবং হিসেবে তাদেরকেতে উল্লেখ করে " nom " (আমরা দেখব যেমন যে পরবর্তী কালে ব্যবহার করা হয়)।
অংশের দিকে যোগ করুন section-def-attrs:
<def-attr n="nbr"> <attr-item tags="sg"/> <attr-item tags="pl"/> </def-attr>
and then
<def-attr n="a_nom"> <attr-item tags="n"/> </def-attr>
প্রথম আরোপ করা nbr সংজ্ঞায়িত করে (সংখ্যা), যেটি হয় একবচন (sg) অথবা প্লুরাল (pl)।
দ্বিতীয় আরোপ করা a_nom সংজ্ঞায়িত করে (নুন আরোপ করুন)।
পরবর্তী আমরা সার্বিক চলকের জন্য একটি অনুচ্ছেদ যোগ করতে প্রয়োজন বোধ করি:
<section-def-vars> </section-def-vars>
এই চলক নিয়মের মধ্যে অথবা স্থানান্তর বৈশিষ্ট্যাবলী সংরক্ষণ করতে ব্যবহার করা হয়। আমরা, এখনের জন্য কেবল একটি প্রয়োজন বোধ করি
<def-var n="number"/>
পরিশেষে, আমরা নুন এবংতে গ্রহণ করতে একটি রুল, যোগ করতে প্রয়োজন বোধ করি তারপর সঠিক ফর্মে বেলুতো এইটি। আমরা একটি নিয়ম অনুচ্ছেদ প্রয়োজন বোধ করব...
<section-rules> </section-rules>
পূর্ববর্তী উদাহরণ থেকে হার পরিবর্তন করছে, আমি এই রুলটি, মাত্র সাঁটব তারপর অন্যান্য রাস্তা গোলের চেয়ে এইটি, বরংএর মধ্য দিয়ে যান।
<rule> <pattern> <pattern-item n="nom"/> </pattern> <action> <out> <lu> <clip pos="1" side="tl" part="lem"/> <clip pos="1" side="tl" part="a_nom"/> <clip pos="1" side="tl" part="nbr"/> </lu> </out> </action> </rule>
প্রথম ট্যাগ বোধগম্য, এইটি একটি রুল সংজ্ঞায়িত করে। দ্বিতীয় ট্যাগ, নকশা প্রাথমিকভাবে বলে: " এই রুলটি প্রয়োগ করুন, যদি এই নকশাটি খুঁজে পাওয়া হয় "। এই উদাহরন নকশাতে একটি একক নুনের গঠিত হয় (শ্রেণী পদ nomএর দ্বারা সংজ্ঞায়িত করেছিল)। নোট যে নকশা একটি দীর্ঘতম মেবলে প্রথমে মেবলেওয়া হয়। যদি আপনার সুতরাং তিন নিয়ম, প্রথম ধরা রয়েছে "<prn><vblex><n> ", দ্বিতীয় ধরা "<prn><vblex> " এবং তৃতীয় ধরা "<n> ", নকশা মেবলিয়েছিল, এবং রুল প্রথম রান করেছিল।
প্রত্যেক নকশার জন্য, একটি সহযোগী কার্য আছে, যেটি একটি সহযোগী বেলুতো, বাইরে তৈরি করে। বেলুতো, একটি লেক্সাল অংশ (lu)।
ক্লিপ ট্যাগ নির্বাচন করতে একটি ব্যবহারকারী অনুমোদন করে এবং বৈশিষ্ট্যাবলী নিপুণভাবে ব্যবহার করুন এবং সূত্র ভাষার অংশ (side= " এস. এল. "), অথবা লক্ষ্য ভাষা (side= " tl ") লেক্সাল পদ।
আসুন এইটি এবং পরীক্ষা এইটি সঙ্কলন করি। ট্রান্সফার নিয়ম ের সঙ্গে সঙ্কলন করা হয়:
$ apertium-preprocess-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin
একটি কোন উৎপাদন করবে sh-en t1x bins
ফাইল।
আমরা এখন আমাদের মেশিন অনুবাদ পদ্ধতি পরীক্ষা করতে তৈরি 'reই। একটি গুরুত্বপূর্ণ খন্ড লক্ষ্যভ্রষ্ট হচ্ছে, বাকের খন্ড (PoS) ট্যাগার, কিন্তু সেইটি সল্প সময়ে ব্যাখ্যা করা হবে। আমরা এখন হ হিসেবে এইটি পরীক্ষা করতে পারি:
প্রথম, একটি কথা, গ্রামফনি বিশ্লেষণ করতে দেয়:
$ echo "gramofoni" | lt-proc sh-en.automorf.bin ^gramofon/gramofon<n><pl>$
এখন, POS ট্যাগার সাধারণভাবে এখানে বাকের খন্ডে ঠিক সংস্করণ বেছে নেবে ভিত্তি করবে, কিন্তু আমাদের একটি POS ট্যাগার এখনও নেই, সুতরাং আমরা এই ছোট gawkটি লিপি ব্যবহার করতে পারি (Sergioতে ধন্যবাদ) যে প্রথম পদ মাত্র আউটপুটব আহরন করব।
$ echo "gramofoni" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' ^gramofon<n><pl>$
ের পদ্ধতি এখন যে স্থানান্তর রুলের সঙ্গে:
$ echo "gramofoni" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin
এইটি আউটপুটবে:
^gramophone<n><pl>$^@
- 'gramophone' লক্ষ্য কি ভাষা (side="tl") লেম্মা (lem) অবস্থান ১তে (pos="1")।
- '<n>' অবস্থান ১তে লক্ষ্য কি ভাষা a_nom।
- '<pl>' লক্ষ্য কি ভাষা সংখ্যার আরোপ করে (nbr) অবস্থান ১তে।
এই ক্লিপগুলি বক্তব্যের মন্তব্য একটি চেষ্টা করুন, পুনরায় সঙ্কলন করুন এবং দেখুন যার ঘটেন।
সুতরাং, আমাদের এখন স্থানান্তর, কেবল জিনিস থেকে আউটপুট রয়েছে যে লক্ষ্য ভাষা রূপ উৎপাদন করতে থাকি ইন্ফ্লেচ্তই। এইের জন্যটি, আমরা lt-proc ব্যবহার করে, উৎপাদনে কিন্তু (-g), বিশ্লেষণ মোড না।
$ echo "gramofoni" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin | \ lt-proc -g sh-en.autogen.bin gramophones\@
এবং ক'ইস্ট কা. আপনার একটি মেশিন অনুবাদ পদ্ধতি এখন রয়েছে যে একটি ইংরেজী নুনএর দিকে একটি সের্ব-ক্রাতিয়ান নুন অনুবাদ করেন। এই পরিষ্কার ভাবেটি খুব কার্যকর নয়, কিন্তু আমরা আরও বেশি জটিল জিনিষ শীঘ্রইের ওপর পাব। ওহ, এবং '@' চিহ্নের সম্বন্ধে উদ্ধিগ্ন হয় না, আমি ব্যাখ্যা করব যে শীঘ্রই খুব।
একটি অল্প অন্যান্য শব্দের ভাবেন যে গ্রামোফোন হিসেবে একই ইন্ফ্লেচ্তন। সেই যোগ করার সম্বন্ধে কিভাবেগুলি। আমরা যেকোন পারাদিগ্ম্স যোগ করতে প্রয়োজন বোধ করি না, একটি ভাষা এবং দুই ভাষা অভিধানের প্রধান অংশতে এন্ট্রি মাত্র।
ক্রিয়াপদে আনুন
বেশ, সুতরাং আমাদের একটি পদ্ধতি রয়েছে যে নৌনস অনুবাদ করে, কিন্তু সেইটি মনোরম অর্থহীন, আমরা ক্রিয়াপদ খুব অনুবাদ করতে চায়, এবং এমনকি পুরো বাক্য! দেখতে ক্রিয়াপদের সঙ্গে আমরার সম্বন্ধে কিভাবে শুরু করেন। এই সের্ব-ক্রাতিয়ানতে টি ভিদেটিচ্ছে। সের্ব-ক্রাতিয়ান একটি ফাঁকা বিষয় ভাষা, এইটি অভিপ্রায় করে যে এইটি ক্রিয়াপদের কন্যুগাতেদ আকারার পূর্বে ব্যক্তিগত প্রনৌনস সাধারণভাবে ব্যবহার করে না। ইংরেজী নয়। উদাহরণের জন্য সুতরাং: আমাকে সের্ব-ক্রাতিয়ানে ভিদিম হিসেবে ইংরেজীতে দেখা হয় অনুবাদ করা হয়।
- ভিদিম
- দেখুন<p1><sg>
- আমি দেখি
নোট: <p1>
প্রথম ব্যক্তি অভিপ্রায় করে
এইটি গুরুত্বপূর্ণ হবে যখন আমরা ক্রিয়াপদের জন্য স্থানান্তর রুল লেখতে আসয়। ফাঁকা বিষয় ভাষার অন্যান্য উদাহরণ অন্তর্ভুক্ত করে: স্পেনিয়, রোমানিয়ান এবং পোলিশ। এইটির প্রভাব ও রয়েছে যে সের্ব-ক্রাতিয়ান মর্ফলোগিকাল শব্দভাণ্ডারে ক্রিয়াপদ যোগ করতে আমরা কেবল প্রয়োজনার সময়, আমরা উভয় ক্রিয়াপদ যোগ করতে প্রয়োজন বোধ করে, ইংরেজী মর্ফলোগিকাল শব্দভাণ্ডারে এবং ব্যক্তিগত প্রনৌনস। আমরা এইের উভয়ের মধ্য দিয়েগুলি যাব।
ক্রিয়াপদ videtiএর অন্যান্য রূপ আছে: vidiš, vidi, vidimo, vidite, এবং vide; যেটি তে সঙ্গতিপূর্ণ হওয়ায়: আপনি দেখুন (একবচন), সে দেখেন, আমরা দেখেন, আপনি দেখুন (প্লুরাল), এবং তারা দেখে।
আপনার দুই রূপ দেখি, একটি এবং আনুষ্ঠানিক একবচন প্লুরালছি (vidite) এবং অন্যান্য একবচন এবং আনুষ্ঠানিক নয় (vidiš)।
আমরা চেষ্টা করব এবং বাক্য অনুবাদ করুন: " Vidim gramofoni "ের দিকে " আমি gramophones দেখেন "। স্থানের আগ্রহে, আমরা অনুবাদ করতে যথেষ্ট তথ্য মাত্র যোগ করব এবং ভরাট করা কি পারাদিগ্ম্স বাদ দেবে (ক্রিয়াপদের যোগ করা অন্যান্য কন্যুগাতীয়নস) পাঠকে একটি অনুশীলন হিসেবে।
চতুর পাঠক এই বিন্দুটির দ্বারা অনুভব করবে যে আমরা ভিদিম গ্রামফনি মাত্র অনুবাদ করতে পারি না কারণ এইটি সের্ব-ক্রাতিয়ানে একটি ব্যাকরণ সঠিক বাক্য না। সঠিক বাক্য ভিদিম গ্রামোফোনে হবে, নুন হিসেবে কর্মকারক খাপ গ্রহণ করে। আমাদেরকে এখন যদিওের জন্য খাপ তথ্য যোগ করতে সেই আকারটি, কোনও প্রয়োজন খুব যোগ করতে, আমরা প্লুরালের জন্য অন্য একটি পছন্দ হিসেবে এইটি মাত্র যোগ করি। সুতরাং, 'i'এর জন্য 'e' বনধ্ মাত্র কপি করে এবং সেখানে 'e'তে 'i' পরিবর্তন করুন।
প্রথম জিনিস আমরা কিছু আরও বেশি চিহ্ন কর হ যোগ করতে প্রয়োজন বোধ করি। আমরা 'verb'এর জন্য প্রথম একটি চিহ্ন যোগ করতে প্রয়োজন বোধ করি, যেটি আমরা ডাক দেব " vblex " (এইটি মদল ক্রিয়াপদ এবং অন্যান্য ধরনের পরিবর্তে লেক্সাল ক্রিয়াপদ, অভিপ্রায় করি)। ভের্ব্সের 'person' রয়েছে, সংখ্যার সঙ্গে বরাবর এবং 'tense', ভাল হিসেবে সেইগুলির একটি দম্পতি সুতরাং যোগ করতে দেয়। আমরা অনুবাদ করতে প্রয়োজন বোধ করি " আমি দেখি ", ব্যক্তি আমাদেরের জন্য সুতরাং যোগ করা উচিত " p১ ", অথবা 'first person', কালের জন্য এবং " pri ", অথবা 'present indicative'।
<sdef n="vblex"/> <sdef n="p1"/> <sdef n="pri"/>
আমরার পরে নৌনসের সঙ্গে এই, একই করেছি, আমরা ক্রিয়াপদ কন্যুগাতীয়নের জন্য একটি পারাদিগ্ম যোগ করি। প্রথম লাইন হবে:
<pardef n="vid/eti__vblex">
'/' চিহ্নিত করতে ব্যবহার করা হয় যেখানে স্তেম্স (ের মধ্যে অংশ<l></l> ট্যাগ) তে যোগ করা হয়।
তারপর প্রথম ব্যক্তি একবচনের জন্য ইন্ফ্লেচ্তীয়ন:
<e><p><l>im</l><r>eti<s n="vblex"/><s n="pri"/><s n="p1"/><s n="sg"/></r></p></e>
'im' শেষাংশ অভিপ্রায় করে ('vidim'তে হিসেবে), এইটি তে 'eti' যোগ করতে প্রয়োজনীয়<r> অংশ, এই হিসেবেটি সংজ্ঞার দ্বারা কেটে ফেল বন্ধওয়া হবে। বিশ্রাম ভালভাবে পরিষ্কার, 'vblex' ক্রিয়াপদ লেক্সালছে, 'pri' বর্তমান ইন্দিকাতিভে কাল, 'p১' প্রথম ব্যক্তি এবং 'sg' একবচন। আমরা প্লুরাল ও যোগ করতে পারি যেটি 'sg'এর পরিবর্তে 'im' এবং 'pl'এর পরিবর্তে একই, ব্যতীত 'imo' হব।
এই আমরার পরেটি প্রধান অংশতে একটি লেম্মা, পারাদিগ্ম ম্যাপ কর যোগ করতে প্রয়োজন বোধ করে:
<e lm="videti"><i>vid</i><par n="vid/eti__vblex"/></e>
নোট:ের ভিতরের উপাদান<i></i> মূল কি, লেম্মা নয়।
সেইটি এখনের জন্য সের্ব-ক্রাতিয়ান শব্দভাণ্ডারে কাজ করে। আসুন এইটি সঙ্কলন করি তারপর পরীক্ষা এইটি।
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin main@standard 23 25 $ echo "vidim" | lt-proc sh-en.automorf.bin ^vidim/videti<vblex><pri><p1><sg>$ $ echo "vidimo" | lt-proc sh-en.automorf.bin ^vidimo/videti<vblex><pri><p1><pl>$
বেশ, আমরা সুতরাং এখন ইংরেজী শব্দভাণ্ডারের জন্য একই করে (সের্ব-ক্রাতিয়ান একটিতে আপনাকে হিসেবে একই চিহ্ন সংজ্ঞা এখানে যোগ করতে স্মরণ করেছিলেন যোগ করেছিলেন)।
পারাদিগ্ম:
<pardef n="s/ee__vblex">
কারণ শেষ কাল 'saw'চ্ছে। এখন, আমরা দুই জিনিষের একটি করতে পারি, আমরা উভয় প্রথম এবং দ্বিতীয় ব্যক্তি যোগ করতে পারি, কিন্তু তারা একই আকার আছে। ঘটনাতে, সমস্ত রূপ (ব্যতীত তৃতীয় ব্যক্তি একবচন) ক্রিয়াপদ 'to see'এর 'see' আছে। আমরা সুতরাং বদলে 'see'এর জন্য একটি এন্ট্রি তৈরি করি এবং এইটি 'pri' চিহ্ন কেবল দিন।
<e><p><l>ee</l><r>ee<s n="vblex"/><s n="pri"/></r></p></e>
প্রধান অংশতে, একটি এন্ট্রি চিরন্তন হিসেবে এবং:
<e lm="see"><i>s</i><par n="s/ee__vblex"/></e>
তারপর সংরক্ষণ করতে দেয়, এবং পরীক্ষা পুনরায় সঙ্কলন করুন:
$ lt-comp lr apertium-sh-en.en.dix en-sh.automorf.bin main@standard 18 19 $ echo "see" | lt-proc en-sh.automorf.bin ^see/see<vblex><pri>$
দুই ভাষা শব্দভাণ্ডারে আবশ্যিক এন্ট্রির জন্য এখন:
<e><p><l>videti<s n="vblex"/></l><r>see<s n="vblex"/></r></p></e>
(পুনরায়, গোড়ার দিকে থেকে sdefs যোগ করতে ভুলে যােন না)
এবং পুনরায় সঙ্কলন করুন::
$ lt-comp lr apertium-sh-en.sh-en.dix sh-en.autobil.bin main@standard 18 18 $ lt-comp rl apertium-sh-en.sh-en.dix en-sh.autobil.bin main@standard 18 18
পরীক্ষা করতে এখন:
$ echo "vidim" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin ^see<vblex><pri><p1><sg>$^@
আমরা সঠিকভাবের মধ্য দিয়ে বিশ্লেষণ পাই পাশ করি, কিন্তু যখন আমরা চেষ্টা করি এবং এই থেকে একটি উপরিতল আকারটি উৎপাদন করুন, আমরা ের নিচে ের মত একটি '#', পান:
$ echo "vidim" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin | \ lt-proc -g sh-en.autogen.bin #see\@
এই '#'টি অভিপ্রায় করে যে উৎপাদক সঠিক লেক্সাল আকার উৎপাদন করতে পারে না কারণ এইটি এইটি ধারণ করে না। এইটি কেন?
বিশ্লেষণ প্রাথমিকভাবে মিলে না, শব্দভাণ্ডারে 'see' দেখে<vblex><pri>, কিন্তু স্থানান্তরের দ্বারা দেখে বিলি করে দেখে<vblex><pri><p1><sg>। সের্ব-ক্রাতিয়ান পাশ ইংরেজী পাশের চেয়ে আরও বেশি তথ্য প্রয়োজন বোধ করেছে। আপনি ইংরেজী শব্দভাণ্ডারে নিরুদ্দেশ চিহ্ন যোগ করার মধ্যে এইটি পরীক্ষা করতে পারেন, এবং তারপর পুনরায় সঙ্কলন করুন, এবং পরীক্ষাকরণ পুনরায়।
উপরন্তু, এইের যত্ন গ্রহণ করার একটি আরও বেশি পারাদিগ্মাতিক রাস্তাটি একটি রুল লেখের মধ্যে। সুতরাং, আমরা মুক্ত উপর নিয়ম দাখিল করি ( apertium-sh-en sh-en t1x sh-en t1x bin sh-en autobil bin
খাপ আপনিতে ভুলে গিয়েছিলেন)।
আমরা 'verb'এর জন্য একটি নতুন শ্রেণী যোগ করতে প্রয়োজন বোধ করি।
<def-cat n="vrb"> <cat-item tags="vblex.*"/> </def-cat>
আমরা ব্যক্তির জন্য কাল এবংএর জন্য বৈশিষ্ট্যাবলী যোগ করতে ও প্রয়োজন বোধ করি। আমরা এখনের জন্য এইটি সত্যি সহজ তৈরি করব, আপনি p২ এবং p৩ যোগ করতে পারি, কিন্তু আমি স্থান সংরক্ষণ করতে অর্ডারে না।
<def-attr n="temps"> <attr-item tags="pri"/> </def-attr> <def-attr n="pers"> <attr-item tags="p1"/> </def-attr>
আমাদের ক্রিয়াপদের জন্য একটি বৈশিষ্ট্য ও যোগ করা উচিত।
<def-attr n="a_verb"> <attr-item tags="vblex"/> </def-attr>
Now onto the rule:
<rule> <pattern> <pattern-item n="vrb"/> </pattern> <action> <out> <lu> <clip pos="1" side="tl" part="lem"/> <clip pos="1" side="tl" part="a_verb"/> <clip pos="1" side="tl" part="temps"/> </lu> </out> </action> </rule>
পূর্ববর্তী রুল উদাহরণে যখন আপনাকে 'clip' ট্যাগ স্মরণ করেছিলেন চেষ্টা করেছিলেন মন্তব্য কর বাইরিয়েছিলেন এবং তারা স্থানান্তর,, ভাল থেকে অন্তর্ধান করেছিল যে মনোরম অধিক যার আমরা এখানে 'reচ্ছে। আমরা একটি পূর্ণ বিশ্লেষণের সঙ্গে একটি ক্রিয়াপদে গ্রহণ করি, কিন্তু কেবল আউটপুট একটি আংশিক বিশ্লেষণ (লেম্মা + ক্রিয়াপদ ট্যাগ + কাল ট্যাগ)।
সুতরাং এখন, যদি আমরা সঙ্কলন করি যে পুনরায়, আমরা পাই:
$ echo "vidim" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin ^see<vblex><pri>$^@
and:
$ echo "vidim" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin | \ lt-proc -g sh-en.autogen.bin see\@
'vidimo'এর সঙ্গে এইটি চেষ্টা করুন (আমরা দেখি) দেখতে যদি আপনি সঠিক আউটপুট পাই।
ের সঙ্গে এইটি এখন চেষ্টা করে " vidim gramofone ":
$ echo "vidim gramofoni" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin | \ lt-proc -g sh-en.autogen.bin see gramophones\@
ব্যক্তিগত প্রনৌনসের সম্বন্ধে কিন্তু যার?
ভাল, যে মহান, কিন্তু আমরা ব্যক্তিগত প্রনৌন এখনও 'reচ্ছি লক্ষ্যভ্রষ্ট হচ্ছি যে ইংরেজীতে প্রয়োজনীয়। ইংরেজী মর্ফলোগিকাল শব্দভাণ্ডার সম্পাদনা করতে, আমরা প্রথম প্রয়োজনে এইটি যোগ করতে অর্ডারে।
কর হতে, পূর্বে প্রথম জিনিস হিসেবে প্রয়োজনীয় চিহ্ন যোগ কর:
<sdef n="prn"/> <sdef n="subj"/>
দুই চিহ্নের, prn প্রনৌনছে, এবং subj বিষয় (একটি বাক্যের বিষয়ে হিসেবে)।
কারণ কোনও মূল নেই, ব্যক্তিগত বিষয় প্রনৌনসের জন্য অথবা 'lemma', আমরা অনুসরণ কর হিসেবে pardef মাত্র যোগ করি:
<pardef n="prsubj__prn"> <e><p><l>I</l><r>prpers<s n="prn"/><s n="subj"/><s n="p1"/><s n="sg"/></r></p></e> </pardef>
'prsubj'এর সঙ্গে 'personal subject' হওয়া। তাদের বিশ্রাম (আপনি, আমরা ইত্যাদি) পাঠকে একটি অনুশীলন হিসেবে ছেড়ে চলে যাওয়া হয়।
আমরা অনুসরণ কর হিসেবে প্রধান অংশতে একটি এন্ট্রি যোগ করতে পারি:
<e lm="personal subject pronouns"><i/><par n="prsubj__prn"/></e>
সুতরাং, সংরক্ষণ করুন, এবং পরীক্ষা পুনরায় সঙ্কলন করুন, এবং আমাদের ের মত কিছু জিনিষ পাওয়া উচিত:
$ echo "I" | lt-proc en-sh.automorf.bin ^I/PRPERS<prn><subj><p1><sg>$
(নোট: এইটি রাজধানীতে 'sয় কারণ 'I' রাজধানীতে).
আমরা এখন সঠিক ক্রিয়াপদ আকারের সঙ্গে বরাবর বিষয় ব্যক্তিগত প্রনৌন আউটপুটতে 'verb' রুল মেরামত করতে প্রয়োজন বোধ করি।
প্রথম, একটি শ্রেণী যোগ করুন (এইটির এখনের মধ্যে মনোরম নিরানন্দময় পাওয়া উচিত):
<def-cat n="prpers"> <cat-item lemma="prpers" tags="prn.*"/> </def-cat>
বৈশিষ্ট্যাবলী হিসেবে প্রনৌনের ধরন এখন যোগ করে, আমরা এইটিতে আমরা হিসেবে 'obj' ধরন ভাল যোগ কর হিসেবে 'reতে পারি, যদিও আমরা এখনের জন্য এইটি ব্যবহার করতে প্রয়োজন বোধ করি না:
<def-attr n="tipus_prn"> <attr-item tags="prn.subj"/> <attr-item tags="prn.obj"/> </def-attr>
ইনপুট রুলে এবং এখন:
<rule> <pattern> <pattern-item n="vrb"/> </pattern> <action> <out> <lu> <lit v="prpers"/> <lit-tag v="prn"/> <lit-tag v="subj"/> <clip pos="1" side="tl" part="pers"/> <clip pos="1" side="tl" part="nbr"/> </lu> <b/> <lu> <clip pos="1" side="tl" part="lem"/> <clip pos="1" side="tl" part="a_verb"/> <clip pos="1" side="tl" part="temps"/> </lu> </out> </action> </rule>
এইটি পূর্বে হিসেবে মনোরম অধিক একই রুল, আমরা কেবল ক্ষুদ্র পরিবর্তনের একটি দম্পতি তৈরি করেছিল।
আমরা আউটপুটতে প্রয়োজন বোধ করেছিলাম:
^prpers<prn><subj><p1><sg>$ ^see<vblex><pri>$
সুতরাং যে উৎপাদক ঠিক pronoun বেছে নিতে পারে এবং ক্রিয়াপদের ঠিক আকার।
, একটি সুতরাং দ্রুত সারসংক্ষেপ:
<lit>
, prints a literal string, in this case "prpers"<lit-tag>
, prints a literal tag, because we can't get the tags from the verb, we add these ourself, "prn" for pronoun, and "subj" for subject., prints a blank, a space.
Note that we retrieved the information for number and tense directly from the verb.
So, now if we recompile and test that again:
$ echo "vidim gramofone" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin | \ lt-proc -g sh-en.autogen.bin I see gramophones
Which, while it isn't exactly prize-winning prose (much like this HOWTO), is a fairly accurate translation.
So tell me about the record player (Multiwords)
While gramophone is an English word, it isn't the best translation. Gramophone is typically used for the very old kind, you know with the needle instead of the stylus, and no powered amplification. A better translation would be 'record player'. Although this is more than one word, we can treat it as if it is one word by using multiword (multipalabra) constructions.
We don't need to touch the Serbo-Croatian dictionary, just the English one and the bilingual one, so open it up.
The plural of 'record player' is 'record players', so it takes the same paradigm as gramophone (gramophone__n) — in that we just add 's'. All we need to do is add a new element to the main section.
<e lm="record player"><i>record<b/>player</i><par n="gramophone__n"/></e>
The only thing different about this is the use of the tag, although this isn't entirely new as we saw it in use in the rules file.
So, recompile and test in the orthodox fashion:
$ echo "vidim gramofone" | lt-proc sh-en.automorf.bin | \ gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \ apertium-transfer apertium-sh-en.sh-en.t1x sh-en.t1x.bin sh-en.autobil.bin | \ lt-proc -g sh-en.autogen.bin I see record players
Perfect. A big benefit of using multiwords is that you can translate idiomatic expressions verbatim, without having to do word-by-word translation. For example the English phrase, "at the moment" would be translated into Serbo-Croatian as "trenutno" (trenutak = moment, trenutno being adverb of that) — it would not be possible to translate this English phrase word-by-word into Serbo-Croatian.
Dealing with minor variation
Serbo-Croatian typically has a few ways of writing each word because of dialectal variation. It has a cool phonetic writing system so you write how you speak. For example, people speaking in Ijekavian would say "rječnik", while someone speaking Ekavian would say "rečnik", which reflects the differences in pronunciation of the proto-Slavic vowel yat.
Analysis
There should be a fairly easy way of dealing with this, and there is, using paradigms again. Paradigms aren't only used for adding grammatical symbols, but they can also be used to replace any character/symbol with another. For example, here is a paradigm for accepting both "e" and "je" in the analysis. The paradigm should, as with the others go into the monolingual dictionary for Serbo-Croatian.
<pardef n="e_je__yat"> <e> <p> <l>e</l> <r>e</r> </p> </e> <e> <p> <l>je</l> <r>e</r> </p> </e> </pardef>
Then in the "main section":
<e lm="rečnik"><i>r</i><par n="e_je__yat"/><i>čni</i><par n="rečni/k__n"/></e>
This only allows us to analyse both forms however... more work is necessary if we want to generate both forms.