o
    Ni                     @   s$  d dl Z d dlZejejeZe je d dlT de	de	de	fddZ
de	de	fd	d
Zdededede	fddZdede	fddZdede	defddZdede	defddZdede	de	fddZdede	fddZde	dededefddZde	defd d!Zde	dedefd"d#Zdede	d$edefd%d&Zdede	fd'd(Zde	defd)d*Zdede	de	fd+d,Zd-e	defd.d/Zd0e	de	fd1d2Zded0e	de	fd3d4Zd0e	de	fd5d6Zd0e	de	fd7d8Zded0e	de	fd9d:Z d0e	d;ede	fd<d=Z!d0e	de	fd>d?Z"dede	defd@dAZ#d0e	dBe	dCe	d;ede	f
dDdEZ$dFe	dGe	defdHdIZ%dedJedFe	dGe&dKef
dLdMZ'dedNe&dOe	fdPdQZ(ded0e	dBe	dCe	d;ede	fdRdSZ)ded0e	dTede	fdUdVZ*ded0e	dTede	fdWdXZ+de	defdYdZZ,dede	defd[d\Z-dedefd]d^Z.dS )_    N)*inputsubtarc                 C   s"   	 |  ||}|| kr	 |S |} q)N)replace)r   r   r   output r   P/home/ubuntu/.local/lib/python3.10/site-packages/indic_unified_parser/helpers.pyrec_replace	   s   r
   returnc                 C   s   g d}i dddddddd	d
dddddddddddddddddddddddd d!d"d#d$d%d&}d'}| D ]}||v rKqD||7 }qD|  D ]
}t|||| }qT|S )(N)!;:@#$%^&r   ,./'u   ’u   ”u   “u   ।][u   ऩu   ऩu   ऱu   ऱu   क़u   क़u   ख़u   ख़u   ग़u   ग़u   ज़u   ज़u   ड़u   ड़u   ढ़u   ढ़u   फ़u   फ़u   य़u   य़u   ऴu   ऴu   ொu   ொu   ோu   ோu   ൊu   ൊu   ോu   ോu   ല്‍‌u   ൽu   ൾu   ർu   ൻu   ൺ)u	   ള്‍u	   ര്‍u	   ന്‍u	   ണ്‍ )keysr
   )r   punctuationListreplaceDictr   ckr   r   r	   RemoveUnwanted   s,   J
r!   gLangIdtypec                 C   s   | j }|dkr|| j7 }|S |dkr|d7 }n|dkr|d7 }dddd	d
dddddd
}|| v r8||| 7 }|dkrB|d7 }|S |dkrJ|d7 }|S )Nr      zdict/   zrules/	malayalamtamiltelugukannadahindibengali	gujarathiodiyapunjabienglish)
r%   r&                     	   
   z.dictz.rules)rootPath
commonFiler   )r"   r#   r$   fileNamelangIdNameMappingr   r   r	   GetFile(   s(   

r=   flc                 C   sF  t |}|dkr|dkr| j| _nt|dkr|dkr| j| _ng|dkr+|dkr+| j| _nZ|dkr8|dkr8| j| _nM|d	krE|d
krE| j| _n@|dkrR|dkrR| j| _n3|dkr_|dkr_| j| _n&|dkrl|dkrl| j	| _n|dkry|dkry| j
| _n|dkr|dkr| j| _| j| _| jdk rd| _| jdkrtd|  td dS )Ni   i  i  i  i  i  i   i~  i 	  i	  i	  i	  i
  i
  i   i  i 
  i
  @   {   r3   r%   r   zUNKNOWN LANGUAGE - id = )ord	MALAYALAMcurrLangTAMILKANNADATELUGUHINDIBENGALI	GUJARATHIODIYAPUNJABIENGLISHlangIdisSouthprintexit)r"   r>   idr   r   r	   	SetlangIdE   s8   










rR   c           	      C   s   g d}|}t |}|dkrd}td|D ]}t|| dk r%|| } nqt| | tt |D ] }||  d}|d | j| d< |d| j  | j| d< q1dS )N)u   0	$	#	#	#	#	ऀ	#	#	#	#
u!   1	mq	#	#	#	#	ँ	ঁ	ઁ	ଁ	ਁ
u(   2	q	ം	ஂ	ం	ಂ	ं	ং	ં	ଂ	ਂ
u)   3	hq	ഃ	ஃ	ః	ಃ	ः	ঃ	ઃ	ଃ	ਃ
u   4	$	#	#	#	#	ऄ	#	#	#	#
u(   5	a	അ	அ	అ	ಅ	अ	অ	અ	ଅ	ਅ
u)   6	aa	ആ	ஆ	ఆ	ಆ	आ	আ	આ	ଆ	ਆ
u(   7	i	ഇ	இ	ఇ	ಇ	इ	ই	ઇ	ଇ	ਇ
u)   8	ii	ഈ	ஈ	ఈ	ಈ	ई	ঈ	ઈ	ଈ	ਈ
u(   9	u	ഉ	உ	ఉ	ಉ	उ	উ	ઉ	ଉ	ਉ
u*   10	uu	ഊ	ஊ	ఊ	ಊ	ऊ	ঊ	ઊ	ଊ	ਊ
u&   11	rq	ഋ	#	ఋ	ಋ	ऋ	ঋ	ઋ	ଋ	#
u   12	$	#	#	#	#	ऌ	ঌ	ઌ	ଌ	#
u   13	ae	#	#	#	#	ऍ	#	ઍ	#	#
u!   14	e	എ	எ	ఎ	ಎ	ऎ	#	#	#	#
u*   15	ee	ഏ	ஏ	ఏ	ಏ	ए	এ	એ	ଏ	ਏ
u*   16	ei	ഐ	ஐ	ఐ	ಐ	ऐ	ঐ	ઐ	ଐ	ਐ
u   17	ax	#	#	#	#	ऑ	#	ઑ	#	#
u!   18	o	ഒ	ஒ	ఒ	ಒ	ऒ	#	#	#	#
u*   19	oo	ഓ	ஓ	ఓ	ಓ	ओ	ও	ઓ	ଓ	ਓ
u*   20	ou	ഔ	ஔ	ఔ	ಔ	औ	ঔ	ઔ	ଔ	ਔ
u)   21	k	ക	க	క	ಕ	क	ক	ક	କ	ਕ
u(   22	kh	ഖ	#	ఖ	ಖ	ख	খ	ખ	ଖ	ਖ
u'   23	g	ഗ	#	గ	ಗ	ग	গ	ગ	ଗ	ਗ
u(   24	gh	ഘ	#	ఘ	ಘ	घ	ঘ	ઘ	ଘ	ਘ
u*   25	ng	ങ	ங	ఙ	ಙ	ङ	ঙ	ઙ	ଙ	ਙ
u)   26	c	ച	ச	చ	ಚ	च	চ	ચ	ଚ	ਚ
u(   27	ch	ഛ	#	ఛ	ಛ	छ	ছ	છ	ଛ	ਛ
u)   28	j	ജ	ஜ	జ	ಜ	ज	জ	જ	ଜ	ਜ
u(   29	jh	ഝ	#	ఝ	ಝ	झ	ঝ	ઝ	ଝ	ਝ
u*   30	nj	ഞ	ஞ	ఞ	ಞ	ञ	ঞ	ઞ	ଞ	ਞ
u*   31	tx	ട	ட	ట	ಟ	ट	ট	ટ	ଟ	ਟ
u)   32	txh	ഠ	#	ఠ	ಠ	ठ	ঠ	ઠ	ଠ	ਠ
u(   33	dx	ഡ	#	డ	ಡ	ड	ড	ડ	ଡ	ਡ
u)   34	dxh	ഢ	#	ఢ	ಢ	ढ	ঢ	ઢ	ଢ	ਢ
u*   35	nx	ണ	ண	ణ	ಣ	ण	ণ	ણ	ଣ	ਣ
u)   36	t	ത	த	త	ತ	त	ত	ત	ତ	ਤ
u(   37	th	ഥ	#	థ	ಥ	थ	থ	થ	ଥ	ਥ
u'   38	d	ദ	#	ద	ದ	द	দ	દ	ଦ	ਦ
u(   39	dh	ധ	#	ధ	ಧ	ध	ধ	ધ	ଧ	ਧ
u)   40	n	ന	ந	న	ನ	न	ন	ન	ନ	ਨ
u   41	nd	ഩ	ன	#	#	ऩ	#	#	#	#
u)   42	p	പ	ப	ప	ಪ	प	প	પ	ପ	ਪ
u(   43	ph	ഫ	#	ఫ	ಫ	फ	ফ	ફ	ଫ	ਫ
u'   44	b	ബ	#	బ	ಬ	ब	ব	બ	ବ	ਬ
u(   45	bh	ഭ	#	భ	ಭ	भ	ভ	ભ	ଭ	ਭ
u)   46	m	മ	ம	మ	ಮ	म	ম	મ	ମ	ਮ
u)   47	y	യ	ய	య	ಯ	य	য	ય	ୟ	ਯ
u)   48	r	ര	ர	ర	ರ	र	র	ર	ର	ਰ
u   49	rx	റ	ற	#	#	ऱ	#	#	#	#	
u)   50	l	ല	ல	ల	ಲ	ल	ল	લ	ଲ	ਲ
u(   51	lx	ള	ள	ళ	ಳ	ळ	#	ળ	ଳ	ਲ਼
u   52	zh	ഴ	ழ	#	#	ऴ	#	#	#	#
u'   53	w	വ	வ	వ	ವ	व	#	વ	ଵ	ਵ
u*   54	sh	ശ	ஶ	శ	ಶ	श	শ	શ	ଶ	ਸ਼
u(   55	sx	ഷ	ஷ	ష	ಷ	ष	ষ	ષ	ଷ	#
u)   56	s	സ	ஸ	స	ಸ	स	স	સ	ସ	ਸ
u)   57	h	ഹ	ஹ	హ	ಹ	ह	হ	હ	ହ	ਹ
u   58	$	#	#	#	#	ऺ	#	#	#	#
u   59	$	#	#	#	#	ऻ	#	#	#	#
u"   60	nk	#	#	#	#	़	়	઼	଼	਼
u    61	ag	#	#	#	#	ऽ	ঽ	ઽ	ଽ	#
u+   62	aav	ാ	ா	ా	ಾ	ा	া	ા	ା	ਾ
u*   63	iv	ി	ி	ి	ಿ	ि	ি	િ	ି	ਿ
u+   64	iiv	ീ	ீ	ీ	ೀ	ी	ী	ી	ୀ	ੀ
u*   65	uv	ു	ு	ు	ು	ु	ু	ુ	ୁ	ੁ
u+   66	uuv	ൂ	ூ	ూ	ೂ	ू	ূ	ૂ	ୂ	ੂ
u'   67	rqv	ൃ	#	ృ	ೃ	ृ	ৃ	ૃ	ୃ	#
u)   68	rqwv	ൄ	#	ౄ	ೄೄ	ॄ	ৄ	ૄ	#	#
u   69	aev	#	#	#	#	ॅ	#	#	#	#
u'   70	ev	െ	ெ	ె	ೆೆ	ॆ	#	#	ୄ	#
u+   71	eev	േ	ே	ే	ೇ	े	ে	ે	େ	ੇ
u.   72	eiv	ൈ	ை	ై	ೇೈ	ै	ৈ	ૈ	ୈ	ੈ
u   73	axv	#	#	#	#	ॉ	#	ૉ	#	#
u"   74	ov	ൊ	ொ	ొ	ೊ	ॊ	#	#	#	#
u+   75	oov	ോ	ோ	ో	ೋ	ो	ো	ો	ୋ	ੋ
u+   76	ouv	ൌ	ௌ	ౌ	ೌ	ौ	ৌ	ૌ	ୌ	ੌ
u*   77	eu	്	்	్	್	्	্	્	୍	੍
u   78	tv	#	#	#	#	ॎ	ৎ	#	#	#
u   79	$	#	#	#	#	ॏ	#	#	#	#
u   80	$	#	#	#	#	ॐ	#	ૐ	#	ੴ
u   81	$	#	#	#	#	॓	#	#	#	#
u   82	$	#	#	#	#	॔	#	#	#	#
z83	$	#	#	#	#	#	#	#	#	#
z84	$	#	#	#	#	#	#	#	#	#
u   85	$	#	#	#	#	ॕ	#	#	#	#
u   86	$	#	#	#	#	ॖ	#	#	ୖ	#
u!   87	auv	ൗ	#	#	#	ॗ	ৗ	#	ୗ	#
u   88	kq	#	#	#	#	क़	#	#	#	#
u   89	khq	#	#	#	#	ख़	#	#	#	ਖ਼
u   90	gq	#	#	#	#	ग़	#	#	#	ਗ਼
u   91	z	#	#	#	#	ज़	#	#	#	ਜ਼
u!   92	dxq	#	#	#	#	ड़	ড়	#	ଡ଼	ੜ
u    93	dxhq	#	#	#	#	ढ़	ঢ়	#	ଢ଼	#
u   94	f	#	#	#	#	फ़	#	#	#	ਫ਼
u   95	y	#	#	#	#	य़	য়	#	ୟ	#
u!   96	rqw	#	#	#	#	ॠ	ৠ	ૠ	ୠ	#
u   97	$	#	#	#	#	ॡ	ৡ	ૡ	ୡ	#
u   98	$	#	#	#	#	ॢ	ৢ	ૢ	#	#
u   99	$	#	#	#	#	ॣ	ৣ	ૣ	ୢ	#
u   100	$	#	#	#	#	।	#	#	#	#
u   101	$	#	#	#	#	॥	#	#	ୣ	#
u"   102	$	#	#	#	#	०	০	૦	୦	੦
u"   103	$	#	#	#	#	१	১	૧	୧	੧
u"   104	$	#	#	#	#	२	২	૨	୨	੨
u#   105	$	#	#	#	#	३	৩	૩	୩	੩	
u"   106	$	#	#	#	#	४	৪	૪	୪	੪
u"   107	$	#	#	#	#	५	৫	૫	୫	੫
u"   108	$	#	#	#	#	६	৬	૬	୬	੬
u"   109	$	#	#	#	#	७	৭	૭	୭	੭
u"   110	$	#	#	#	#	८	৮	૮	୮	੮
u"   111	$	#	#	#	#	९	৯	૯	୯	੯
u!   112	rv	#	#	#	#	॰	ৰ	૰	୰	#
u!   113	wv	#	#	#	#	ॱ	ৱ	૱	ୱ	#
u   114	$	#	#	#	#	ॲ	৲	#	୲	#
u   115	$	#	#	#	#	ॳ	৳	#	୳	#
u   116	$	#	#	#	#	ॴ	৴	#	୴	#
u   117	$	#	#	#	#	ॵ	৵	#	୵	#
u   118	$	#	#	#	#	ॶ	৶	#	୶	#
u   119	$	#	#	#	#	ॷ	৷	#	୷	#
u   120	$	#	#	#	#	ॸ	৸	#	#	#
u   121	$	#	#	#	#	ॹ	৹	#	#	#
u    122	nwv	ൺ	#	#	#	ॺ	৺	#	#	#
u    123	nnv	ൻ	#	#	#	ॻ	৻	#	#	#
u   124	rwv	ർ	#	#	#	ॼ	#	#	#	#
u   125	lwv	ൽ	#	#	#	ॽ	#	#	#	#
u   126	lnv	ൾ	#	#	#	ॾ	#	#	#	#
u   127	$	#	#	#	#	ॿ	#	#	#	#r   r%      	)lenrangerA   rR   stripsplitsymbolTablerM   )	r"   r   linesstr1lengthjfirstLetilr   r   r	   SetlanguageFeatf   s"   
 
ra   c                 C   s0   d}t | jD ]}| j| d |kr dS qdS Nr   r%   rV   ROWrY   r"   r   r_   r   r   r	   CheckSymbol  s   rf   c                 C   st   |}d| j _tt|D ]}t|| dk r+| j  jd| jt|| d  d  7  _q| j jdd  | j _| j jS )Nr   rS      r%   )wordssyllabifiedWordrV   rU   rA   rY   )r"   r   r[   r]   r   r   r	   ConvertToSymbols  s   *rj   textc                 C   s   d| d| _ d S )Nz(set! wordstruct '( z)))answer)r"   rk   r   r   r	   	WriteFile  s   rm   qrqc                 C   s   |  ddkr	dS |  ddkrdS |  ddkrdS |  ddkr$dS |  ddkr-dS |r8|  ddkr8dS |rC|  d	dkrCdS d
S )Nar%   er_   ourn   ro   r   find)r   rn   ro   r   r   r	   
CheckVowel  s   rw   c                 C   s   |  ddkr	dS dS )Neuvrq   r%   r   ru   r   r   r   r	   Checkeuv/  s   rz   c                 C   s$   | dv rdS |dkr| dkrdS dS )N)rp   rr   r_   rs   rt   r%   r   rn   r   )r   rn   r   r   r	   CheckSingleVowel5  s
   r{   posc                 C   st   |}| d}ttdd |}t|t|}||d  }| jjr5td|  td| dt| |  t| |S )Nr   c                 S   s   | dkS )Nr   r   )xr   r   r	   <lambda>@  s    zGetPhoneType.<locals>.<lambda>r%   zinput : zstr :  )	rX   listfilterminrU   flagsDEBUGrO   GetType)r"   r   r|   phonepchr   r   r	   GetPhoneType=  s   

r   c                 C   sp   t | jD ]}| j| |kr dS qt | jD ]}| j| |kr# dS qt | jD ]}| j| |kr5 dS q)dS )Nr%   r&   r1   r   )rV   
VOWELSSIZEVOWELSCONSONANTSSIZE
CONSONANTSSEMIVOWELSSIZE
SEMIVOWELSre   r   r   r	   r   K  s   r   c                 C   s*   g d}|D ]}|  |dkr dS qdS )N)nwvnnvrwvlwvlnvrq   r%   r   ru   )r   r`   r}   r   r   r	   CheckChilluX  s   r   c                 C   s8   t | jD ]}|| j| d kr| j| d   S qdS )Nr%   r   rc   re   r   r   r	   GetUTFa  s
   r   pc                 C   s    t | dkrt | dkrdS dS )Na   z   r%   r   )rA   )r   r   r   r	   isEngLetteri  s   r   r   c                 C   sJ   d}| D ]}|dkrt |dkrd}||7 }qt|dd}t|dd}|S )Nr   r   r   r   r   &&)r   r
   )r   	phonecopyr   r   r   r	   CleanseWordo  s   
r   c                 C   s   d}d}|}t | jD ].}t | jD ]&}d| j|  d| j|  d}d| j|  d| j|  d}|||}qqt | jD ].}t | jD ]&}d| j|  d| j|  d}d| j|  d| j|  d}|||}qFq?|S )Nr   r   &av&)rV   r   r   r   r   r   r   r   )r"   r   c1c2r   r_   r]   r   r   r	   MiddleVowelz  s    r   c                 C   s   g d}| }t ddD ]&}t ddD ]}||  d||  }||  ||  d}|||}qqt|dd}t|dd	}|S )
N)&nwv&&nnv&&rwv&&lwv&&lnv&&aav&&iiv&&uuv&&rqv&&eev&&eiv&&ouv&&axv&&oov&&aiv&&auv&&aev&&iv&&ov&&ev&&uv&r      r   #&&#&hq&&hq&#&r   r   rV   r   r
   )r   doubleModifierListr   r_   r]   r   r   r   r   r	   DoubleModifierCorrection  s   r   c           	   
   C   s   g d}g d}| }t ddD ]:}t ddD ]2}t ddD ]*}d||  d||  d||  }d||  d||  d||  }|||}qqqt|d	d
}|S )N'r    khlxrxr"   ghngr   chr]   jhnjtxtxhdxdxhnxtthddhnr   phbbhmyrr`   wshsxzhr   shfdxq*zav&znwv&znnv&zrwv&zlwv&zlnv&zaav&ziiv&zuuv&zrqv&zeev&zeiv&zouv&zaxv&zoov&zaiv&znnx&znxx&zrrx&zllx&zlxx&aa&ziv&zov&zmq&r   zii&zuu&zrq&zee&zei&zou&zoo&zax&zai&zev&zuv&za&ze&zi&zo&zu&r   '   *   &euv&r   r   r   r   r   )	r   consonentList	vowelListr   r_   r]   r    r   r   r   r   r	   SchwaDoubleConsonent  s   ""r   c                 C   s  g d}g d}| j jrtt|  |d }| j jr"td|  tddD ]*}tddD ]"}d	||  d
||  d}d||  d
||  d}|||}q.q't|dd}tddD ]}d	||  d	}d||  d}|||}q]| j jrtd|  tddD ]2}d	||  d
}d
||  d
}	tddD ]}d|	 d||  }
| ||  }|||
}qqt|dd}tddD ]}d||  d}d||  d	}|||}q|S )N)&r    r   r"   r   r   r   r   r]   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r`   r   r   r   r   r   r   r   r   r   r   r   r   zphone cur - r   &   r%   r   r   r   r   r   z&euv$&z&av$&zinside schwa )   r   &q&)r   r   rO   rU   rV   r   r
   )r"   r   	schwaListr   r   r_   r]   r   r   c3c4r   r   r	   SchwaSpecificCorrection  sD   r   	isReversec                 C   st   g d}| }t ddD ],}d||  d||  d}d||  d||  d}|dkr1t|||nt|||}q|S )Nr   r   r   r   &eu&)rV   r
   )r   r   geminateListr   r_   r   r   r   r   r	   GeminateCorrection  s   "r   c                 C   sR  | }t |dd}|dd}|dd}t |dd}|d	d
}|dd}g d}tddD ]}|| }|d }|||}q/t |dd}g d}tddD ]}d||  }||| |}qOg d}tddD ]}d||  d}d||  d
}|||}qjtddD ]}d||  d}d||  d
}|||}q|dd}|S )Nr   r   r   z&eu&#&r   &euv&#&z&avqz&q&avr   z&av&#&z&qz&q&#)-r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z&nnx&z&nxx&z&rrx&z&llx&z&lxx&&aa&r   r   &mq&r   &ii&&uu&&rq&&au&&ee&&ei&z&ou&&oo&&ax&&ai&r   r   &ae&&a&&e&&i&&o&&u&r   -   r   r   r   )r   r   r   r  r  r3   z&#)'r    r   r"   r   r   r   r   r]   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r`   r   r   r   r   r   r   r   r   r   r   r   r   )r
   r   rV   )r   r   
removeListr_   r   r   pureVowelListconsonantListr   r   r	   
Syllabilfy  s8   r  c                 C   s  t | | jd}| jjrtd|  zt|d}| }W d    n1 s'w   Y  W n   | jjr9td | j| jkrCtd Y dS | j| jkrcd}|D ]}t	|dk r\|
 }||7 }qP|}|D ][}| d}t|d	ksvJ | jjrtd
|d   ||d kr| jjrtd td|d   td|d   | jjdkrt| |d  | jjdkrt| |d   dS qedS )Nr%   zdict : r   zDict not foundr   r   r   rT   r1   zword : zmatch foundzSyllables : zmonophones : r&   )r=   rM   r   r   rO   open	readlinesrL   rP   rA   lowerrW   rX   rU   writeFormatrm   )r"   r   r;   r   cntsinput1r   r`   r   r   r	   CheckDictionary-  sL   

r  leftrightc           	      C   sh   g d}| }t ddD ]&}|}|}|d|| }|d|| }|dkr+t|||nt|||}q|S )Nr   r   r   r   r   )	r   r  r  r   r   r   r_   r   r   r   r   r	   PositionCorrectionW  s   "r  r   r   c                 C   s"   d}| D ]
}||kr|d7 }q|S rb   r   )r   r   countr}   r   r   r	   
CountCharsd  s   r  r]   isRightc                 C   s   d}|| d d dkr8|dkr$|d | j j| j j< | j  jd7  _d S |d | j j| j j< | j  jd7  _d S d}|| | d dkrh|d || |  }t| |d ||| |d7 }|| | d dksDd S d S )Nr   r   r   r%   r   )combvarsrightStrbileftStrGenerateAllCombinations)r"   r]   r   r   r  r   r_   r   r   r	   r  l  s   r  
combMatrixregexc                 C   s  d\}}}t dt|D ]h}|| dkr+d|| |d < |d7 }d}d}d|| |< n5|| dkr>|d7 }d}d|| |< n"|| | d | ||  || | |d d   || |< |d7 }| jjrtt| d| d|| |   qd|| |d < d||d  d< d S )	N)r   r   r   r   r   r   r%   r   |r   )rV   rU   r   r   rO   )r"   r  r  rowcolitemr_   r   r   r	   GenerateMatrix}  s&   
< r   c           	      C   s  dd t dD }dd t dD }t| || t| || d| j_t| dd|d d| j_t| dd|d d}|}| jj| dkr|dkrU|| jj| | jj| }n|| jj| | jj| }| jj	rxt
| jj|  d| jj|   |d7 }| jj| dksB| j  |S )	Nc                 S      g | ]}d d t dD qS )c                 S      g | ]}d qS r   r   .0_r   r   r	   
<listcomp>      4CombinationCorrection.<locals>.<listcomp>.<listcomp>   rV   r$  r   r   r	   r'        z)CombinationCorrection.<locals>.<listcomp>r*  c                 S   r!  )c                 S   r"  r#  r   r$  r   r   r	   r'    r(  r)  r*  r+  r$  r   r   r	   r'    r,  r   r   r%   r   )rV   r   r  r  r  r  r   r  r   r   rO   refresh)	r"   r   r  r  r   leftComb	rightCombr_   r   r   r   r	   CombinationCorrection  s(   "
r0  langSpecFlagc                 C   s  |}| j rt|dd}t|dd}nt|dd}t|dd}|d	d
}t|dd}t|dd}t|dd}t|dd}t|dd}t|dd}t|dd}t|dd}t|dd}t|dd}t|dd}t|d d}t|d!d"}t|d#d}t|d$d%}t|d&d}t|d'd(}t|d)d*}t|d+d,}t|d-d}t|d.d/}t|d0d1}t|d2d3}t|d4d5}t|d6d7}t|d8d9}t|d:d}t|d;d<}t|d=d}t|d>d?}t|d@d}t|dAdB}t|dCdD}t|dEd1}|dFkr|S t| | jdG}t|dH}| }W d    n	1 sw   Y  dI}dI}dJ| dK }| jjr-t	dL|  |D ]k}	|	
 }	|	dMdNkr?q/|	dO}	t|	dGksMJ |	dF |	dP }}|dQdNkr|dPdN }
|dPdN }t| ||
|dF}| jjrt	|
 dO|  q/|dRdNkrt|||dF}q/|||}q/|dJdI}|dKdI}dF}tt|D ]}|| dSkr|}q|d |dP  S )TNr   r   r   r   r   r  r   r   r   &av&q&z&a&av&r   z&e&av&r   z&i&av&r   z&o&av&z&u&av&r  z&a&rqv&r   z&aa&av&r   z&ae&av&r   z&ax&av&r   z&ee&av&r   z&ii&av&r   z&ai&av&z&au&av&r   z&oo&av&z&uu&av&r   z&rq&av&z&av&av&r   z&ev&av&r   z&iv&av&r   z&ov&av&z&uv&av&r   z&av&rqv&r   z&aav&av&r   z&aev&av&r   z&auv&av&r   z&axv&av&r   z&aiv&av&z&eev&av&r   z&eiv&av&z&iiv&av&r   z&oov&av&z&ouv&av&r   z&uuv&av&r   z&rqv&av&r   r&   r   r   r   r   zphone : r   rq   rT   r%   r  r   r   )rN   r
   r   r=   rM   r  r	  r   r   rO   rW   rv   rX   rU   r0  r  rV   )r"   r   r1  r   r;   r   r  r  r  r`   a1a2r  r_   r   r   r	   LangSpecificCorrection  s   



r5  c                 C   s  |}| j rt|dd}t|dd}nt|dd}t|dd}|d	kr$|S t| | jd
}t|d}| }W d    n1 s?w   Y  d}d}d| d }| jjrYtd|  |D ]b}	|		 }	|	
ddkriq[|	d}	t|	d
ksvJ |	d	 |	d }}|
ddkr|dd }
|dd }t| ||
|d}| jjrt|
 d|  q[|
ddkrt|||d}q[|||}q[|dd}|dd}| jjrtd|  |S )Nr   r   r   r   r  r   r   r   r   r&   r   r   r   r   zbefore phone : r   rq   rT   r%   r  r   zafter phone : )rN   r
   r=   rM   r  r	  r   r   rO   rW   rv   rX   rU   r0  r  r   )r"   r   r1  r   r;   r   r  r  r  r`   r3  r4  r   r   r	   SyllableReverseCorrection  sN   

r6  c                 C   s   | dkrdS dS )Nr2  r%   r   r   ry   r   r   r	   LangSyllableCorrectionA  s   r7  c                 C   s  |}| j jdkr@d}d}g d}tddD ]*}tddD ]"}d||  d||  d}d||  d||  d}|||}qqt|dd}t|d	d
}|d}g | _|D ]}	|	dkrb| j|	 qVt| j}
|
dkrndS | j j	rt|
D ]}t
d| j|   qvt| j|
d  dddkrt| j|
d  dkr| jr| j|
d   d7  < n| j|
d   d7  < | j jdkr|
| _d| j _dS d}|
dkrt|
d ddD ]}t| j| dkr| j|d   | j| 7  < d| j|< | j| ddkr
| j| dd| j|< d}| j| ddkr#| j| dd| j|< d}t| j| dddkr_|d dkrJ| j|d   | j| 7  < d| j|< n| j|  | j|d  7  < d| j|d < |d dkr|dkr|| j|d  dd| j|d < n|dkr| j|d  dd| j|d < t| j|d  dd| j|d < |dkr| j| dd| j|< q|dkr| j| dd| j|< qn&t| jd dddkr| j jdkst| jd dkr| jd  d7  < | j j	rt|
D ]}t
d| j|   qt|
D ]}| j| dd| j|< | j j	r&t
dt| j|   t| j| dkr| j| ddkrI| j| dd| j|< d}| j| ddkrb| j| dd| j|< d}t| j| dddkr| j jdkr| j j	rt
d| j|   | j|  d7  < | j| ddkr|dkr| j| dd| j|< n|dkr| j| dd| j|< | j| dd| j|< t| j| dd| j|< t| j| d| j|< q| j j	rt|
D ]}t
d| j|   qt
d|
  |
| _| j jdkrd| j _dS )Nr&   r   r   r   r   r   z&#&mq&r   z&#&q&r   r   r%   zinitStack : r   r   rq   r   r   r   r   r1   z&avzsyllablifiedStack : 1zLenStack : zStack : euzsyllablifiedStack1 : zNo of syllables : )r   r  rV   r   r
   rX   syllableListappendrU   r   rO   rw   r   rN   syllableCountr7  rv   rz   r   )r"   r   incopyr_   r]   fullListr   r   r   r   lneuFlagr   r   r	   SplitSyllablesH  s   

0


"
  

:!

&



rA  c                 C   s  | j jrtd| jD ]}td| j|   q
d}td| jD ]}| j| dkr,|d7 }q| j jr;td| jd   d| j_d}| j jdkrd}t| jD ]}| j jd7  _| j| 	d}|D ] }|dkriqb| j jrttd|  d}| j jd	| d
7  _qb|dkr| j j
dkr|dkr| j jd7  _n||d kr| j jd7  _n| j jd7  _|d7 }| j jd7  _n| jjd t| jjd  | j_d}qN| jjdd| j_| jjdd| j_| jjdd| j_n| j jdkrd}t| jD ]}t| j| dd| j|< t| | j| | j j| j|< | j jr't| j|   | j jd7  _| j| 	d}|D ]9}|dkrBq9| j jrNtd|  d}t| |dkrq| j jt| |7  _|dkrq| j jrqtd q9|dkr| j j
dkr|dkr| j jd7  _n||d kr| j jd7  _n| j jd7  _|d7 }| j jd7  _n| jjd t| jjd  | j_d}q| jjdd| j_| jjdd| j_| j jrtd| jj  t| | jj dS )Nr   zsyllablifiedStackfinal : r   r%   za correction z(( r   zsyl "z" _beg_end_midz) 0) r1   vz "eu"r   rx   r9  z(( "avzav foundz" ) 0) r2   r   z  r   zPrint text : )r   r   rV   r<  rO   r:  rh   
outputTextr  rX   syllTagFlagrU   r   r
   r6  LangSpecificCorrectionFlagrf   r   rm   )r"   r_   validSyllabler]   syllablesPrintr`   r   r   r   r	   WritetoFiles  s    




 
rM  )/sysospathdirnameabspath__file__
SCRIPT_DIRr;  globalsstrr
   r!   GLOBALSintr=   rR   ra   rf   rj   rm   rw   rz   r{   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r  r   r0  r5  r6  r7  rA  rM  r   r   r   r	   <module>   sP    	!  	82*"[6 