o
    'N ic%  ã                   @   sž   d dl Z d dlZd dlmZ d dlZddddddd	œZi Ze ¡ D ]\Z	Z
e	ee
< q!d
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zddd„Zddd„Zddd„ZdS )é    N)Úindic_scriptsu   à´£u   à´¨u   à´°u   à´²u   à´³u   à´•)u   àµºu   àµ»u   àµ¼u   àµ½u   àµ¾u   àµ¿c                 C   sT   t  dd| ¡}t ¡ D ]\}}|  |d |¡¡} | |d¡}qt  dd|¡}| |fS )Nú[0-9]Ú0u   {}àµÚ41ú[^0-9])ÚreÚsubÚchillu_char_mapÚitemsÚreplaceÚformat)ÚwordÚ	word_maskÚchilluÚchar© r   úQ/home/ubuntu/.local/lib/python3.10/site-packages/indicnlp/syllable/syllabifier.pyÚnormalize_malayalam   s   r   c              
   C   s   t | ƒ} t |ƒ}d}|dkrCz| d|¡}t| |  | ||d …< d|||d …< |}W n ty> } zW Y d }~n	d }~ww |dksd | ¡S )Nr   Ú4é   r   Ú )ÚlistÚindexÚchar_chillu_mapÚ
ValueErrorÚjoin©r   r   ÚidxÚstartÚer   r   r   Údenormalize_malayalam'   s   €ÿú
	r    c                 C   sX   t  dd| ¡}|  dd¡} | dd¡}t  dd| ¡} t  dd|¡}t  d	d|¡}| |fS )
Nr   r   õ   à©°u   à¨‚Ú2z	\u0a71(.)u   \1à©\1Ú311r   )r   r   r   )r   r   r   r   r   Únormalize_punjabi9   s   r$   c              
   C   sð   t | ƒ} t |ƒ}d}|dkr7z| d|¡}d| |< d||< |}W n ty2 } zW Y d }~n	d }~ww |dksd}|dkrsz| d|¡}d | | ¡| ||d …< d|||d …< |}W n tyn } zW Y d }~n	d }~ww |dks=d	 | ¡S )
Nr   r"   r!   r   Ú3u   à©±{}é   Ú00r   )r   r   r   r   r   r   r   r   r   Údenormalize_punjabiH   s6   €ÿú
€ÿú
	r(   c                 C   sJ   g }|d u r
| }|S | D ]}||v r|  |¡ q|D ]}|  |¡ qq|S ©N)Úappend)Úsyllables_listÚvocabÚsyllables_finalÚsÚxr   r   r   Úchar_backoffe   s   	ùÿr0   c                    sè  dgt | ƒ }ˆ dkrt| ƒ\} }| } n
ˆ dkrt| ƒ\} }‡ fdd„| D ƒ}g }g }tt | ƒƒD ]
}|| }| | | ¡ | || ¡ |d t | ƒk rkt ||d  ¡r`t ||d  ¡rk| d¡ | d¡ q1t |¡rut |¡r€| d¡ | d¡ q1t |¡rÀ|d t | ƒk oŸt 	||d  ¡oŸt 
||d  ¡ }	|d t | ƒko°t 	||d  ¡}
|	s¿|
s¿| d¡ | d¡ q1|d t | ƒk r<t |¡sÔt |¡r<t ||d  ¡rè| d¡ | d¡ q1t ||d  ¡rt ||d  ¡s| d¡ | d¡ q1t 	||d  ¡r<|d t | ƒk o#t 
||d  ¡ }	|d t | ƒk}
|	s<|
s<| d¡ | d¡ q1d	 |¡}d	 |¡}| d
¡dkrStdƒ ˆ dkr^t||ƒ}n
ˆ dkrht||ƒ}| ¡  d¡}t||ƒS )Nr   ÚmlÚpac                    ó   g | ]}t  |ˆ ¡‘qS r   ©ÚsiÚget_phonetic_feature_vector©Ú.0Úc©Úlangr   r   Ú
<listcomp>   ó    z3orthographic_syllabify_improved.<locals>.<listcomp>é   ú r   r   Ú01r   ÚWarning)Úlenr   r$   Úranger*   r5   Úis_validÚis_miscÚis_vowelÚis_anusvaarÚ
is_plosiveÚis_consonantÚis_nuktaÚis_dependent_vowelr   ÚfindÚprintr    r(   ÚstripÚsplitr0   )r   r;   r,   r   Ú	p_vectorsÚ	syllablesÚsyllables_maskÚiÚvÚanu_nonplosÚanu_eowr+   r   r:   r   Úorthographic_syllabify_improvedu   s€   4


ÿþÿ

€ÿÿ
ÿ
ÿ

€





rW   c           
         sü  ‡ fdd„| D ƒ}g }t t| ƒƒD ]Ý}|| }| | | ¡ |d t| ƒk r>t ||d  ¡r8t ||d  ¡r>| d¡ qt |¡rHt |¡rN| d¡ qt |¡r‰|d t| ƒk omt ||d  ¡omt ||d  ¡ }|d t| ƒko~t ||d  ¡}|sˆ|sˆ| d¡ q|d t| ƒk rît 	|¡s›t 
|¡rît 	||d  ¡rª| d¡ qt ||d  ¡rÂt ||d  ¡sÂ| d¡ qt ||d  ¡rî|d t| ƒk oÜt ||d  ¡ }|d t| ƒk}|sî|sî| d¡ qd |¡ ¡  d¡}	t|	|ƒS )Nc                    r3   r   r4   r7   r:   r   r   r<   ×   r=   z*orthographic_syllabify.<locals>.<listcomp>r>   r?   r   r   )rC   rB   r*   r5   rD   rE   rF   rG   rH   rI   rJ   rK   r   rN   rO   r0   )
r   r;   r,   rP   rQ   rS   rT   rU   rV   r+   r   r:   r   Úorthographic_syllabifyÕ   sT   4
ÿþÿ
€ÿÿÿÿ
€
rX   c                    s  ‡ fdd„| D ƒ}g }t t| ƒƒD ]k}|| }| | | ¡ |d t| ƒk r>t ||d  ¡r8t ||d  ¡r>| d¡ qt |¡rMt |¡sMt |¡rS| d¡ q|d t| ƒk r|t |¡set |¡r|t ||d  ¡swt 	||d  ¡r|| d¡ qd 
|¡ ¡  d¡}t||ƒS )Nc                    r3   r   r4   r7   r:   r   r   r<     r=   z1orthographic_simple_syllabify.<locals>.<listcomp>r>   r?   r   )rC   rB   r*   r5   rD   rE   rF   rI   rJ   rG   r   rN   rO   r0   )r   r;   r,   rP   rQ   rS   rT   r+   r   r:   r   Úorthographic_simple_syllabify  s4   ÿÿÿÿþþ
€
rY   r)   )ÚcodecsÚsysÚindicnlp.scriptr   r5   r   r	   r   r
   ÚkrT   r   r    r$   r(   r0   rW   rX   rY   r   r   r   r   Ú<module>   s*   ú	


`@