জার্মান শব্দগুলি কীভাবে উচ্চারণ করবেন তা অনুমান করুন


37

ভূমিকা

ইংরেজি থেকে ভিন্ন, জার্মান ভাষায় বেশ একটি ফোনমিক রাইটিং সিস্টেম রয়েছে বলে মনে করা হয় । এর অর্থ হ'ল বানান এবং উচ্চারণের মধ্যে যোগাযোগ খুব কাছাকাছি। আপনি যে শব্দটির সাথে পরিচিত নন এমনটি দেওয়া হলেও আপনি বানান পদ্ধতির কারণে এটি কীভাবে উচ্চারণ করবেন তা আপনি জানতেন। এর অর্থ একটি কম্পিউটারের এটি খুব সঠিকভাবে করতে সক্ষম হওয়া উচিত?

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা কোনও জার্মান শব্দের প্রতিনিধিত্ব করে একটি স্ট্রিং ইনপুট হিসাবে গ্রহণ করে এবং ইন্টারন্যাশনাল ফোনেটিক বর্ণমালায় (আইপিএ) মুদ্রণ করে বা এর উচ্চারণ প্রদান করে ।

আমি অবশ্যই আপনাকে জার্মান বা সম্পূর্ণ আইপিএ শিখতে যাচ্ছি না । এই উইকিপিডিয়া বিভাগটি আপনার প্রয়োজন আইপিএ সংক্রান্ত প্রায় সমস্ত জার্মান সরবরাহ করে এবং আমি একটি অবারিত সি # রেফারেন্স বাস্তবায়ন কোড করে দিয়েছি ।

সেই লিঙ্কটিতে প্রদত্ত 400 টি সাধারণ জার্মান শব্দ এবং তাদের আইপিএ উচ্চারণের (বৈধতার জন্য প্রয়োজনীয়) একটি তালিকা রয়েছে। এই তালিকা থেকে একটি উদাহরণ গ্রহণ করা, যদি ইনপুট হয় solltestতবে সঠিক আউটপুট ˈzɔltəst

রেফারেন্স প্রয়োগটি উইকিপিডিয়া বিভাগে উল্লিখিত নয় এমন দুটি সহায়ক বিধি যুক্ত করেছে: এটি ধরে নিয়েছে যে শব্দটির চাপটি প্রথমে উচ্চারণে রয়েছে (খুব সম্ভবত জার্মান ভাষায়), এবং "ই" অক্ষরটি যখন স্কওয়া শব্দ / ə / কে উপস্থাপন করে তা নির্ধারণের জন্য আরও ভাল শব্দতত্ত্ব ব্যবহার করে। এটি উপসর্গগুলির জন্য বিশেষ প্রক্রিয়াজাতকরণও প্রয়োগ করে, তবে ফলাফলের উন্নতি হয়নি যতটা আমি ভেবেছিলাম।

বিস্তারিত

একটি বৈধ এন্ট্রি হিসাবে বিবেচনা করা, আপনার প্রোগ্রাম অবশ্যই নিম্নলিখিত প্রয়োজনীয়তা পূরণ করতে হবে:

  • আপনার আইপিএ আউটপুট অবশ্যই রেফারেন্স শব্দের তালিকার 400 শব্দগুলির মধ্যে কমপক্ষে 300 শব্দের সাথে একটি সঠিক মিল হতে হবে (রেফারেন্স বাস্তবায়নটি 333 সঠিক হয়ে যায়)
  • আপনার প্রোগ্রামটি অবশ্যই যেকোন প্রশংসনীয় জার্মান শব্দের জন্য অনুমান করা উচিত। সুতরাং আমাদের একটি প্রযুক্তিগত প্রয়োজনীয়তা রয়েছে, এর অর্থ [a-zA-ZäÄöÖüÜ][a-zäöüß]*হ'ল রেগেক্সের সাথে মেলে এমন কোনও ইনপুট এবং কমপক্ষে একটি স্বর (আইওইউইস) রয়েছে, আপনাকে অবশ্যই কেবল অ-সাদা বাক্সের আউটপুট উত্পাদন করতে হবে এবং ত্রুটিযুক্ত নয়।
  • প্রোগ্রামটি অবশ্যই ডিটারমিনিস্টিক হতে হবে (সর্বদা একই ইনপুট দেওয়া একই আউটপুট উত্পাদন করে)
  • অন্যথায়, স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয়েছে (বিশেষত অফ সাইট রিসোর্সগুলি আনার বিষয়ে একটি)

বিবিধ জিনিস আপনাকে করার অনুমতি দেওয়া হয়েছে:

  • আপনার যদি প্রয়োজন হয় তবে আপনার আউটপুটে শীর্ষস্থানীয় এবং পেছনের শ্বেত স্থান রাখুন
  • আউটপুটে কোনও পূর্ব-বিদ্যমান অক্ষর এনকোডিং ব্যবহার করুন (ইউনিকোড ভালভাবে কাজ করা ছাড়া আমি আর কিছুই কল্পনা করতে পারি না, তবে আপনি যদি পারেন তবে সংযোগগুলি)
  • ধরুন ইনপুটটি কিছু কিছু স্বাভাবিক আকারে রয়েছে যেমন ইউনিকোড নরমালাইজেশন ফর্ম এনএফডি, এনএফসি ইত্যাদি। উদাহরণস্বরূপ, ä একক অক্ষর বা বেস অক্ষর + একটি সংমিশ্রিত চরিত্র হিসাবে রচিত?
  • স্ট্যান্ডার্ড ইনপুট এবং আউটপুট পদ্ধতি ব্যবহার করুন

স্কোরিং এবং আইপিএর অক্ষর

স্কোরিং বাইটে রয়েছে। সতর্কতা অবলম্বন করুন যে ইউটিএফ -8-তে জার্মান অক্ষর এবং আইপিএর অক্ষরগুলি 2 বাইট। এছাড়াও, আইপিএ অক্ষর U + 0327 অন্তর্ভুক্ত ব্রেভ নীচে (̯) একটি ইউনিকোড সংমিশ্রিত চরিত্র এবং এটি নিজস্বভাবে একটি 2 বাইট ইউটিএফ -8 অক্ষর। তার অর্থ ইউটিএফ -8 এ in জাতীয় কিছু 4 বাইট হিসাবে গণ্য হবে। কৌতূহলের জন্য, এই প্রতীকটির অর্থ স্বরবর্ণটি অক্ষরের নিউক্লিয়াস গঠন করে না (পূর্ববর্তীটি পরিবর্তে এটি করে)।

এছাড়াও, এই আইপিএর অক্ষরগুলি থেকে সাবধান থাকুন যে কোনও ফন্টে অন্যান্য এসসিআইআই অক্ষরের মতো দেখা যায়: ɡ, ɪ, ʏ, ː (একটি দীর্ঘ স্বর চিহ্নিত করে), ˈ (যে বর্ণচিহ্নগুলি বহুবিধ শব্দের মধ্যে চাপযুক্ত) has

রেফারেন্স শব্দের তালিকাটি কীভাবে তৈরি হয়েছিল

এই বিভাগটি অতিরিক্ত তথ্য যা চ্যালেঞ্জের জন্য প্রয়োজন নেই।

শব্দটি তালিকার এই উইকিশনারি শব্দ ফ্রিকোয়েন্সি তালিকা থেকে ধরা হয়েছিল , কেসিং পার্থক্যের কারণে পুনরাবৃত্তিগুলি মুছে ফেলল এবং ইংরাজী উইকিউশনারি (ওহ ওহে) তে জার্মান প্রবেশাধিকার নেই এমন দুটি শব্দ। আইপিএটি ছিল ইংলিশ এবং জার্মান উভয় উইকিউশনারি দেখে। যেখানে একাধিক উচ্চারণ দেওয়া হয়েছিল, আমি আরও আনুষ্ঠানিক এবং মানকটি বেছে নিয়েছি। যদি এটি স্পষ্ট না হয়, তবে আমি সাধারণ বিধিগুলির মধ্যে সবচেয়ে বেশি উপযুক্ত একটি নির্বাচন করেছি।

"R" বর্ণটি কীভাবে উচ্চারণ করা হয় তা আমাকে মানদণ্ডেও স্থির করতে হয়েছিল। এই চিঠিটি কীভাবে উচ্চারিত হয়েছিল তা অঞ্চলটির উপর নির্ভর করে এবং উইকশনারি কোনটি বেছে নিয়েছিল তা মোটেই সামঞ্জস্যপূর্ণ ছিল না। আমি অনুভব করেছি যে এটি নীচের দিকে ঝুঁকছে: "আর" উচ্চারণ করা হয় / ɐ̯ / যখন দীর্ঘ স্বর হয় এবং একটি স্বর অনুসরণ করে না, অন্যথায়, এটি ʁ ʁ সুতরাং, আমি পুরোপুরি নিয়মিত / (চ) ɛɐ̯ / ছিল এমন ভার্চুয়াল এবং এরফিক্সগুলি ব্যতীত তাদের সকলকে এই নিয়মটি অনুসরণ করতে পরিবর্তন করেছি। একইভাবে, আমি "ইইউ" কে / ɔʏ̯ / হিসাবে মানক করে তুলেছি।


16
এই ( #~WordData~"PhoneticForm"&) এর জন্য গণিতের একটি অন্তর্নির্মিত রয়েছে , তবে এটি কেবল ইংরেজী শব্দের জন্যই কাজ করে।
জংহওয়ান মিন

29
@ জংহওয়ানমিন আমি আপনার মন্তব্যটি নিম্নরূপ পড়লাম: তাত্ক্ষণিক হার্ট অ্যাটাক, স্বস্তির দীর্ঘশ্বাস।
DPenner1

1
কীভাবে আমার জানা উচিত যে "জিস্টার্ন" উচ্চারণ করা হয় "জিএইচএসআরএন" এর পরিবর্তে "জিএইচএস-টার্ন"? "বেস্ট-এআর" হিসাবে "বেস্টার" "শ-শ্টার" নন?
লিকি নুন

@ ল্যাকিয়ুনুন এর জন্য কোনও 100% অ্যালগরিদম নেই, তবে আপনার বাস্তবায়নের কেবল 75% হওয়া দরকার। আমার রেফারেন্স বাস্তবায়নও সেই শব্দগুলিকে ভুল করে।
ডিপেনার 1

@ ল্যাকইনুন ওয়েল, আপনার প্রোগ্রামটি জার্মান উপভাষাগুলি মোকাবেলা করতে সক্ষম হবে, সুতরাং এটি আরও শক্তিশালী।
পি। সিহর

উত্তর:


9

পিএইচপি, 3311 2988 2916 2845 2759 2671 2667 2509 2484 বাইট, 301/400 পেরিয়ে

<?$f=fopen(__FILE__,r);fseek($f,__COMPILER_HALT_OFFSET__);eval(strtr(stream_get_contents($f),[F=>'=>',M=>'==','&'=>'&&',H=>'function ',A_=>'array',G=>'if',4=>'for','|'=>'||','~'=>'))','%'=>str,7=>'=$',8=>'[]',9=>'!$','@'=>'count(','#'=>';$',5=>'return ',3=>':(']));__halt_compiler();define(J,[ieh,ah,aa,Ah,eh,ee,ie,ih,oh,oo,Oh,uh,Uh,au,eu,Au,ei,ai,ey,ay,a,e,i,o,u,A,O,U,y])#b7e=8;Hv($a){5in_A_($a,J);}Hn($a){5!v($a);}Hpronounce($w){global$b,$e#w=%tr(%tolower(%tr($w,[ßF1,ÄF2,äF2,ÖF0,öF0,ÜF6,üF6]~,[1FS,2FA,0FO,6FU])#W=8#L7w;while($L)4each(A__merge([tzsch,dsch,tsch,zsch,sch,chs,ch,ck,dt,ng,nk,pf,ph,qu,ss,th,tz,b,c,d,f,g,h,j,k,l,m,n,p,r,s,S,t,v,w,x,z],J)as$c){$l=%len($c);G(sub%($L,0,$l)M$c){$W87c#L=sub%($L,$l);break;}}$s=8#l=@$W);4($o7t7i=0#i<$l#i++){$c7W[$i]#p7i?$W[$i-1]:0#n7iM$l-1?0:$W[$i+1];G(9n|!(n($c)&$cM$n&n($W[$i+2]~)$s[$o]87c;G($p&((9n&v($c)&n($p~|(n($n)&v($W[$i+2]~~$s[++$o]=8;}$s[@$s)-1]|A__pop($s);4each($s as$z){$b87t#t+=@$z)#e87t;}$o=[sieFziQ,duFduQ,'die'FdiQ,derFdeQT,zuFtsuQ,wirFviQT,mirFmiQT,denFdeQn,dassFdas,erFeQT,soFzoQ,warFvaQT,fürFfyQT,jaFjaQ,wieFviQ,dirFdiQT,nurFnuQT,demFdeQm,ihnFiQn,auchFaUBx,ihrFiQT,daFdaQ,schonFʃoQn,wennFvEn,malFmaQl,gutFguQt,nachFnaQx,willFvIl,mussFmUs,habFhaQp,vorFfoQT,ihmFmiQm,tunFtuQn][$w]?:'';G($o)goto x#P7B7S7V7Z=0;@$s)>1&$o=[verFfET,daFda,geFgC][join($s[0])]#o&$P=1&A__shGt($s);(($P|@$s)M2)&$o.=W)|(@$s)>2&$d=1&$h=(int)@$s)/2)#w=A__merge(...$s);4each($w as$l){G(0<$S--)continue#n7w[$B+1]#p7w[$B-1]#f=''#Z+=in_A_($B,$b)#f7lMd&9n?t3$lMb&(9n|$nMt)?p3$lMg&(9n|$nMt)?((9n&$pMi)?K:k)3$lMc?(($nMA|$nMe|$nMi)?ts:k)3$lMch?(($pMa|$pMo|$pMu)?x:K)3$lMchs|$lMx?ks3$lMck?k3$lMdsch?dZ3$lMdt|$lMth?t3$lMph|$lMv?f39f&$lMg?g3$lMh?(v($n)?h:'')3$lMng?N3$lMnk?Nk3$lMqu?kv3$lMr?((!v($n)&9nMt)?T:R)3$lMsch?S3$lMss|$lMS?s3$lMtsch|$lMtzsch|$lMzsch?tS3$lMtz|$lMz?ts3$lMw?v3$lMs?(9p&($nMp|$nMt~?S3v($n)?z:s):$f~~~~~~~~~~)#U=0;G(v($l~{G(%len($l)>1)($f=[auFaUB,euFcYB,eiFaIB][$l])|$U=1;else{G(n($n)&((9w[$B+2]&$n!=n)|v($w[$B+2]~)$U=1;G($lMe){$U=9n?:$U;G(9w[$B+2]){G($nMr)($f=A)&$U=9S=1;G($nMm|$nMl)$f=C;}}elseG($nMch)$U=0;G(in_A_($B,$e~$U=0;}$f=($U|9Z)&9f?($l[0]MO?D3$l[0]MU?y3$l[0]MA?E:$l[0]~).Q39f?($lMe?((9n|(9w[$B+2]&($nMn|$nMs~)?C:E)3$lMA?E3$lMi?I3$lMo?c3$lMu?U3($lMU|$lMy)?Y:$l~~~:$f)#V++;}$f7f?:$l;G($d&$ZM$h)$f.=W#o.7f#B++;}G(%pos($o,W)M=false&$V>1)$o=W.$o;4(#j++<%len($o);)G($o[$j]M$o[$j+1])$o=sub%($o,0,$j).sub%($o,$j+1);x:5%tr($o,[SFʃ,ZFʒ,KFç,gFɡ,NFŋ,QF'ː',WFˈ,TFɐ̯,BF'̯',RFʁ,AFɐ,EFɛ,OFœ,IFɪ,YFʏ,UFʊ,cFɔ,CFə,DFø]);}

সংজ্ঞা দেয় pronounce(string $word)

ব্যবহার:

assert(
    pronounce('darüber') == "daˈʁyːbɐ"
);

একটি নোট: 3 টি উপসর্গ এবং 33 টি শব্দ কঠোর কোডড, এবং কিছু কোড হালকাভাবে পরীক্ষার তালিকার দিকে অনুকূলিত হয়েছে।

টেস্টিং কোডটি এখানে রয়েছে , যদিও এটি এই ফাইলের উপর নির্ভর করে না ।

পরীক্ষা করার জন্য:

php test.php all

তিনটি বর্ণনার অশ্রু দ্বারা চালিত

সম্পাদনা 7 : প্রোগ্রামটিতে প্রিপ্রোসেসর লিখে 170 ডলার বাইট ছিটিয়ে ফেলুন। ফলস্বরূপ, আসল প্রোগ্রামটি (এর পরে সমস্ত কিছু __halt_compiler();) পড়তে খুব কষ্ট হয়। আপনি অপ্রক্রিয়াজাত প্রোগ্রাম চান, সুইচ evalসঙ্গে printতৃতীয় বিবৃতিতে।


এটি আসলে 2667 বাইট, 2671 না ইউনিকোড (UTF-8 অভিমানী) হল
caird coinheringaahing
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.