Ë
    È:j„Q  ã                   ó˜   — d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
 d dlmZ ddlmZ  G d„ d«      Z G d	„ d
«      Z G d„ d«      Zy)é    N)ÚFraction)ÚIteratorÚListÚMatchÚOptionalÚUnion)Úwindowedé   )Úremove_symbols_and_diacriticsc                   ób   ‡ — e Zd ZdZˆ fd„Zdee   dee   fd„Zdefd„Z	defd„Z
defd	„Zˆ xZS )
ÚEnglishNumberNormalizerav  
    Convert any spelled-out numbers into arabic numbers, while handling:

    - remove any commas
    - keep the suffixes such as: `1960s`, `274th`, `32nd`, etc.
    - spell out currency symbols after the number. e.g. `$20 million` -> `20000000 dollars`
    - spell out `one` and `ones`
    - interpret successive single-digit numbers as nominal: `one oh one` -> `101`
    c                 óÒ  •— t         ‰| �  «        h d£| _        t        g d¢d¬«      D ��ci c]  \  }}||“Œ
 c}}| _        | j                  j                  «       D ��ci c]  \  }}|dk(  rdn|dz   |df“Œ c}}| _        dd	d
ddddœ| j                  j                  «       D ��ci c]/  \  }}|dkD  r%|dk7  r |dk7  r||j                  d«      rdndz   |df“Œ1 c}}¥| _        i | j                  ¥| j                  ¥| _	        dddddddddœ| _
        | j                  j                  «       D ��ci c]  \  }}|j                  dd«      |df“Œ c}}| _        | j                  j                  «       D ��ci c]  \  }}|j                  dd «      |df“Œ c}}| _        i | j                  ¥| j                  ¥| _        d!d"d#d$d%d&d'd(d)d*d+d,d-œ| _        | j                  j                  «       D ��ci c]  \  }}|dz   |df“Œ c}}| _        | j                  j                  «       D ��ci c]  \  }}|dz   |df“Œ c}}| _        i | j                   ¥| j"                  ¥| _        h | j                  £| j                  £| j                  £| _        d.d.d/d/d0œ| _        d1d1d2d2d3d3d4d4d5œ| _        t-        t/        | j(                  j1                  «       «      t/        | j*                  j1                  «       «      z   «      | _        d6d7id7d8œ| _        h d9£| _        t-        | j                  | j                  | j                  | j                  | j                  | j                  | j$                  | j(                  | j*                  | j4                  | j6                  fD ��cg c]  }|D ]  }|‘Œ Œ c}}«      | _        d:d;h| _        y c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w c c}}w )<N>   ÚoÚohÚzero)ÚoneÚtwoÚthreeÚfourÚfiveÚsixÚsevenÚeightÚnineÚtenÚelevenÚtwelveÚthirteenÚfourteenÚfifteenÚsixteenÚ	seventeenÚeighteenÚnineteenr
   )Ústartr   ÚsixesÚs)r   Úth)r
   Úst)é   Únd)é   Úrd)é   r(   )é   r(   )ÚzerothÚfirstÚsecondÚthirdÚfifthÚtwelfthr,   r.   r/   ÚtÚhr(   é   é   é(   é2   é<   éF   éP   éZ   )ÚtwentyÚthirtyÚfortyÚfiftyÚsixtyÚseventyÚeightyÚninetyÚyÚiesÚiethéd   éè  i@B i Êš;l    J)£l     �Iú5 l     ÈNÎZol     @=7M.cl      B¶3v^!< l      Pó „~Écegl       ©7§3M“e'l       (l
F3Y‘HqS )ÚhundredÚthousandÚmillionÚbillionÚtrillionÚquadrillionÚquintillionÚ
sextillionÚ
septillionÚ	octillionÚ	nonillionÚ	decillionú-ú+)ÚminusÚnegativeÚplusÚpositiveõ   Â£u   â‚¬ú$õ   Â¢)ÚpoundÚpoundsÚeuroÚeurosÚdollarÚdollarsÚcentÚcentsrh   ú%)ÚperÚpercent>   ÚandÚpointÚdoubleÚtripler   Úones)ÚsuperÚ__init__ÚzerosÚ	enumeraterq   ÚitemsÚones_pluralÚendswithÚones_ordinalÚones_suffixedÚtensÚreplaceÚtens_pluralÚtens_ordinalÚtens_suffixedÚmultipliersÚmultipliers_pluralÚmultipliers_ordinalÚmultipliers_suffixedÚdecimalsÚpreceding_prefixersÚfollowing_prefixersÚsetÚlistÚvaluesÚprefixesÚ	suffixersÚspecialsÚwordsÚliteral_words)ÚselfÚiÚnameÚvalueÚmappingÚkeyÚ	__class__s         €úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/whisper/normalizers/english.pyrs   z EnglishNumberNormalizer.__init__   s<  ø€ Ü‰ÑÔâ(ˆŒ
ô %òð* ô-÷
á��4ð �!‰Gó
ˆŒ	ð:  $Ÿy™yŸ™Ó0÷
á��eð ˜u’}‰G¨$°©*°u¸c°lÑBó
ˆÔð
  ØØØØØ!ñ
ð $(§9¡9§?¡?Ó#4÷á�D˜%Ø˜1’9 ¨!¢°¸²ð ˜tŸ}™}¨SÔ1™°tÑ<¸uÀd¸mÑKóð
ˆÔð G × 0Ñ 0ÐF°D×4EÑ4EÐFˆÔð ØØØØØØØñ	
ˆŒ	ð GKÇiÁiÇoÁoÓFW÷
Ù7B°t¸UˆD�L‰L˜˜eÓ$ u¨c lÑ2ó
ˆÔð
  $Ÿy™yŸ™Ó0÷
á��eð �L‰L˜˜fÓ%¨¨t }Ñ4ó
ˆÔð G × 0Ñ 0ÐF°D×4EÑ4EÐFˆÔð ØØ Ø$Ø)Ø0Ø4Ø7Ø;Ø>ØBØFñ
ˆÔð 9=×8HÑ8H×8NÑ8NÓ8P÷#
Ù)4¨¨uˆD�3‰J˜ ˜Ñ$ó#
ˆÔð ;?×:JÑ:J×:PÑ:PÓ:R÷$
Ù+6¨4°ˆD�4‰K˜% ˜Ñ&ó$
ˆÔ ð%
Ø×%Ñ%ð%
à×&Ñ&ð%
ˆÔ!ð >˜$Ÿ)™)Ð= d§i¡iÐ=°$·*±*Ð=ˆŒð ØØØñ	$
ˆÔ ð ØØØØØØØñ	$
ˆÔ ô Ü�×)Ñ)×0Ñ0Ó2Ó3Ü�4×+Ñ+×2Ñ2Ó4Ó5ñ6ó
ˆŒð
 ˜C�=Øñ
ˆŒò =ˆŒäð —J‘JØ—I‘IØ×&Ñ&Ø—I‘IØ×&Ñ&Ø×$Ñ$Ø×-Ñ-Ø×,Ñ,Ø×,Ñ,Ø—N‘NØ—M‘Mð ÷àð #òð ò ðØóó
ˆŒ
ð& $ V˜_ˆÕùóQ
ùó6
ùóùó$
ùó
ùó(#
ùó$
ùóHs/   «N9ÁN?Â%4OÄ/OÅ4OÇ,OÈ$OÎO#
r�   Úreturnc              #   óÚ  ‡‡K  — d Šd Šd}dt         fd„}dt        t         t        f   fˆˆfd„}t        |«      dk(  ry t	        d g|z   d gz   d«      D �]  \  }}}|rd}Œ|d uxr t        j                  d|«      }|d   | j                  v }	|	r|d	d  n|}
t        j                  d|
«      ry ||
«      }|€J ‚‰�Ct        ‰t         «      r)‰j                  d
«      rt        ‰«      t        |«      z   ŠŒ  |‰«      –— |	r|d   n‰Š|j                  d	k(  r|j                  ŠŒÏ|
ŠŒÒ|| j                  vr‰�
 |‰«      –—  ||«      –— Œ÷|| j                  v rt        ‰xs d«      dz   Š�Œ|| j                  v rÑ| j                  |   }‰€|Š�Œ<t        ‰t         «      s|| j                  v rI|| j                  v r"|dk  r‰d   dk(  sJ ‚‰d d t        |«      z   Š�ŒŠt        ‰«      t        |«      z   Š�Œ£|dk  r(‰dz  dk(  r‰|z  Š�Œ·t        ‰«      t        |«      z   Š�ŒÐ‰dz  dk(  r‰|z  Š�Œßt        ‰«      t        |«      z   Š�Œø|| j                   v �r9| j                   |   \  }}‰€ |t        |«      |z   «      –— �n	t        ‰t         «      s|| j                  v r]|| j                  v r,|dk  r'‰d   dk(  sJ ‚ |‰d d t        |«      z   |z   «      –— n± |t        ‰«      t        |«      z   |z   «      –— nŽ|dk  rE‰dz  dk(  r |t        ‰|z   «      |z   «      –— ng |t        ‰«      t        |«      z   |z   «      –— nD‰dz  dk(  r |t        ‰|z   «      |z   «      –— n" |t        ‰«      t        |«      z   |z   «      –— d Š�Œ@|| j                  v rf| j                  |   }‰€|Š�Œct        ‰t         «      rt        ‰«      t        |«      z   Š�ŒŒ‰dz  dk(  r‰|z  Š�Œ›t        ‰«      t        |«      z   Š�Œ´|| j"                  v r§| j"                  |   \  }}‰€ |t        |«      |z   «      –— �Œît        ‰t         «      r$ |t        ‰«      t        |«      z   |z   «      –— �Œ"‰dz  dk(  r |t        ‰|z   «      |z   «      –— �ŒE |t        ‰«      t        |«      z   |z   «      –— �Œi|| j$                  v r| j$                  |   }‰€|Š�ŒŒt        ‰t         «      s‰dk(  r> |‰«      }|�||z  nd }|�|j                  d	k(  r|j                  Š�ŒÑ |‰«      –— |Š�Œß‰dz  dz  }‰dz  }|||z  z   Š�Œö|| j&                  v rÎ| j&                  |   \  }}‰€ |t        |«      |z   «      –— nŸt        ‰t         «      rd |‰«      }|�||z  nd }|�0|j                  d	k(  r! |t        |j                  «      |z   «      –— nL |‰«      –—  |t        |«      |z   «      –— n+‰dz  dz  }‰dz  }|||z  z   Š |t        ‰«      |z   «      –— d Š�ŒÒ|| j(                  v r9‰�
 |‰«      –— || j                  v s|r| j(                  |   Š�Œ ||«      –— �Œ|| j*                  v r)‰�| j*                  |   Š |‰«      –— �ŒD ||«      –— �ŒP|| j,                  v r|‰�n| j,                  |   }t        |t.        «      r7||v r |t        ‰«      ||   z   «      –— d}�Œ  |‰«      –—  ||«      –— �Œ¶ |t        ‰«      |z   «      –— �ŒÎ ||«      –— �ŒÚ|| j0                  v �r|| j                  vr|s‰�
 |‰«      –—  ||«      –— �Œ|dk(  r(|| j$                  vs�Œ&‰�
 |‰«      –—  ||«      –— �Œ>|dk(  s|dk(  r{|| j                  v s|| j                  v rG|dk(  rdnd}| j                  j3                  |d«      }t        ‰xs d«      t        |«      |z  z   Šd}�Œ«‰�
 |‰«      –—  ||«      –— �ŒÃ|dk(  r&|| j4                  v s|s�ŒÚt        ‰xs d«      d
z   Š�Œît7        d|› �«      ‚t7        d|› �«      ‚ ‰� |‰«      –— y y ­w)NFr'   c                 ó8   — 	 t        | «      S # t        $ r Y y w xY w©N)r   Ú
ValueError)r'   s    r–   Úto_fractionz:EnglishNumberNormalizer.process_words.<locals>.to_fractionª   s#   € ðÜ “{Ð"øÜò Ùðús   ‚
 �	˜Úresultc                 ó4   •— t        | «      } ‰�‰| z   } d Šd Š| S rš   )Ústr)r�   Úprefixr’   s    €€r–   Úoutputz5EnglishNumberNormalizer.process_words.<locals>.output°   s*   ø€ ä˜“[ˆFØÐ!Ø &™�ØˆEØˆFØˆMó    r   r,   z^\d+(\.\d+)?$r
   ú.Ú Ú0é
   éÿÿÿÿrK   rL   Trm   ro   rp   r*   rn   zUnexpected token: )rŸ   r   ÚintÚlenr	   ÚreÚmatchrŠ   Ú
isinstancerx   ÚdenominatorÚ	numeratorr�   rt   rq   r{   rz   r   r€   rƒ   r…   r†   r‹   ÚdictrŒ   Úgetr„   r›   )r�   r�   Úskiprœ   r¡   ÚprevÚcurrentÚnextÚnext_is_numericÚ
has_prefixÚcurrent_without_prefixÚfrq   Úsuffixr{   Ú
multiplierÚpÚbeforeÚresidualÚrepeatsr    r’   s                       @@r–   Úprocess_wordsz%EnglishNumberNormalizer.process_words¥   s}  ùè ø€ Ø $ˆØ+/ˆØˆð	œ3ó 	ð	œ5¤¤c ™?ö 	ô ˆu‹:˜Š?Øä#+¨T¨F°U©N¸d¸VÑ,CÀQÓ#Gó C	AÑˆD�'˜4ÙØ�Øà"¨$Ð.ÒS´2·8±8Ð<LÈdÓ3SˆOØ  ™ t§}¡}Ð4ˆJÙ4> W¨Q¨R¡[ÀGÐ"Ü�x‰xÐ(Ð*@ÔAáÐ 6Ó7�Ø�}Ð$�}ØÐ$Ü! %¬Ô-°%·.±.ÀÔ2Eä # E£
¬S°«\Ñ 9˜Ø á$ U›mÒ+á'1˜ š°v�Ø—=‘= AÒ%ØŸK™K‘Eà2‘EØ §
¡
Ñ*àÐ$Ù  ›-Ò'Ù˜W“oÓ%Ø˜DŸJ™JÑ&Ü˜EšK RÓ(¨3Ñ.’Ø˜DŸI™IÑ%Ø—y‘y Ñ)�à�=Ø ’EÜ ¤sÔ+¨t°t·y±yÑ/@à §	¡	Ñ)¨d°Rªià$ R™y¨CÒ/Ð/Ð/Ø % c r 
¬S°«YÑ 6šä # E£
¬S°«YÑ 6šØ˜B’YØ˜r‘z Q’Ø ™šä # E£
¬S°«YÑ 6šà˜s‘{ aÒ'Ø ™šä # E£
¬S°«YÑ 6šØ˜D×.Ñ.Ò.à#×1Ñ1°'Ñ:‘��fØ�=Ù ¤ T£¨VÑ!3Ó4Ô4Ü ¤sÔ+¨t°t·y±yÑ/@Ø˜tŸy™yÑ(¨T°BªYØ$ R™y¨CÒ/Ð/Ð/Ù$ U¨3¨B Z´#°d³)Ñ%;¸fÑ%DÓEÓEá$¤S¨£Z´#°d³)Ñ%;¸fÑ%DÓEÓEØ˜B’YØ˜r‘z Q’Ù$¤S¨°©Ó%6¸Ñ%?Ó@Ó@á$¤S¨£Z´#°d³)Ñ%;¸fÑ%DÓEÓEà˜s‘{ aÒ'Ù$¤S¨°©Ó%6¸Ñ%?Ó@Ó@á$¤S¨£Z´#°d³)Ñ%;¸fÑ%DÓEÒEØ’Ø˜DŸI™IÑ%Ø—y‘y Ñ)�Ø�=Ø ’EÜ ¤sÔ+Ü ›J¬¨T«Ñ2’Eà˜s‘{ aÒ'Ø ™šä # E£
¬S°«YÑ 6šØ˜D×.Ñ.Ñ.à#×1Ñ1°'Ñ:‘��fØ�=Ù ¤ T£¨VÑ!3Ó4Ô4Ü ¤sÔ+Ù ¤ U£¬c°$«iÑ!7¸&Ñ!@ÓAÔAà˜s‘{ aÒ'Ù$¤S¨°©Ó%6¸Ñ%?Ó@Ô@á$¤S¨£Z´#°d³)Ñ%;¸fÑ%DÓEÔEØ˜D×,Ñ,Ñ,Ø!×-Ñ-¨gÑ6�
Ø�=Ø&’EÜ ¤sÔ+¨u¸ªzÙ# EÓ*�AØ*+¨-˜˜Jš¸T�AØ�}¨¯©¸!Ò);Ø !§¡šá$ U›mÒ+Ø *šà" d™]¨TÑ1�FØ$ t™|�HØ" X°
Ñ%:Ñ:’EØ˜D×5Ñ5Ñ5Ø%)×%>Ñ%>¸wÑ%GÑ"�
˜FØ�=Ù ¤ Z£°6Ñ!9Ó:Ó:Ü ¤sÔ+Ù# EÓ*�AØ*+¨-˜˜Jš¸T�AØ�}¨¯©¸!Ò);Ù$¤S¨¯©Ó%5¸Ñ%>Ó?Ó?á$ U›mÒ+Ù$¤S¨£_°vÑ%=Ó>Ó>à" d™]¨TÑ1�FØ$ t™|�HØ" X°
Ñ%:Ñ:�EÙ ¤ U£¨fÑ!4Ó5Ò5Ø’Ø˜D×4Ñ4Ñ4àÐ$Ù  ›-Ò'à˜4Ÿ:™:Ñ%©Ø!×5Ñ5°gÑ>’Fá  ›/Ô)Ø˜D×4Ñ4Ñ4àÐ$Ø!×5Ñ5°gÑ>�FÙ  ›-Ô'á  ›/Ô)Ø˜DŸN™NÑ*àÐ$Ø!Ÿ^™^¨GÑ4�FÜ! &¬$Ô/Ø 6™>Ù"(¬¨U«°f¸T±lÑ)BÓ"CÒCØ#'šDá"(¨£-Ò/Ù"(¨£/Ô1á$¤S¨£Z°&Ñ%8Ó9Ô9á  ›/Ô)Ø˜DŸM™MÒ)Ø˜tŸz™zÑ)±/àÐ(Ù$ U›mÒ+Ù  ›/Ô)Ø Ò%à 4×#3Ñ#3Ó3Ø Ð,Ù"(¨£-Ò/Ù$ W›oÔ-Ø Ò(¨G°xÒ,?Ø˜tŸy™yÑ(¨D°D·J±JÑ,>Ø'.°(Ò':¡!À˜Ø#Ÿy™yŸ}™}¨T°1Ó5˜Ü # E¢K¨RÓ 0´3°t³9¸wÑ3FÑ F˜Ø#šà Ð,Ù"(¨£-Ò/Ù$ W›oÔ-Ø Ò'Ø˜tŸ}™}Ñ,³Ü # E¢K¨RÓ 0°3Ñ 6šô %Ð'9¸'¸Ð%CÓDÐDô !Ð#5°g°YÐ!?Ó@Ð@ðGC	AðJ ÐÙ˜“-Óð ùs   „]2a+Ý8B2a+à,?a+r'   c                 óR  — g }t        j                  d|«      }t        |«      D ]ª  \  }}t        |j	                  «       «      dk(  rŒ#|t        |«      dz
  k(  r|j                  |«       ŒF|j                  |«       |j                  d¬«      d   }|| j                  v s|| j                  v r|j                  d«       Œš|j                  d«       Œ¬ d	j                  |«      }t        j                  d
d|«      }t        j                  dd|«      }t        j                  dd|«      }|S )Nz\band\s+a\s+half\br   r
   r*   )Úmaxsplitr§   z
point fivez
and a halfú z([a-z])([0-9])z\1 \2z([0-9])([a-z])z([0-9])\s+(st|nd|rd|th|s)\bú\1\2)rª   Úsplitru   r©   ÚstripÚappendÚrsplitr„   r€   ÚjoinÚsub)r�   r'   ÚresultsÚsegmentsr�   ÚsegmentÚ	last_words          r–   Ú
preprocessz"EnglishNumberNormalizer.preprocess„  s  € àˆä—8‘8Ð1°1Ó5ˆÜ# HÓ-ò 	1‰JˆAˆwÜ�7—=‘=“?Ó# qÒ(ØØ”C˜“M AÑ%Ò%Ø—‘˜wÕ'à—‘˜wÔ'Ø#ŸN™N°A˜NÓ6°rÑ:�	Ø §¡Ñ-°¸d×>NÑ>NÑ1NØ—N‘N <Õ0à—N‘N <Õ0ð	1ð �H‰H�WÓˆô �F‰FÐ$ h°Ó2ˆÜ�F‰FÐ$ h°Ó2ˆô �F‰FÐ1°7¸AÓ>ˆàˆr¢   c                 ó¸   — dt         fd„}dt         fd„}t        j                  d||«      }t        j                  d||«      }t        j                  dd|«      }|S )NÚmc                 óÆ   — 	 | j                  d«      }| j                  d«      }t        | j                  d«      «      }|› |› d|d›�S # t        $ r | j                  cY S w xY w)Nr
   r*   r,   r£   Ú02d)Úgroupr¨   r›   Ústring)rÐ   ÚcurrencyÚintegerri   s       r–   Úcombine_centsz:EnglishNumberNormalizer.postprocess.<locals>.combine_cents¢  sa   € ð ØŸ7™7 1›:�ØŸ'™' !›*�Ü˜AŸG™G A›J›�Ø"˜ G 9¨A¨e°C¨[Ð9Ð9øÜò  Ø—x‘x’ð ús   ‚AA ÁA ÁA c                 ót   — 	 dt        | j                  d«      «      › �S # t        $ r | j                  cY S w xY w)Nra   r
   )r¨   rÓ   r›   rÔ   )rÐ   s    r–   Úextract_centsz:EnglishNumberNormalizer.postprocess.<locals>.extract_cents«  s9   € ð ØœC §¡¨£
›OÐ,Ð-Ð-øÜò  Ø—x‘x’ð ús   ‚ Ÿ7¶7u,   ([â‚¬Â£$])([0-9]+) (?:and )?Â¢([0-9]{1,2})\bu   [â‚¬Â£$]0.([0-9]{1,2})\bz	\b1(s?)\bzone\1)r   rª   rÉ   )r�   r'   r×   rÙ   s       r–   Úpostprocessz#EnglishNumberNormalizer.postprocess¡  s\   € ð	 œUó 	 ð	 œUó 	 ô �F‰FÐBÀMÐSTÓUˆÜ�F‰FÐ.°¸qÓAˆô �F‰F�< ¨1Ó-ˆàˆr¢   c                 ó´   — | j                  |«      }dj                  d„ | j                  |j                  «       «      D «       «      }| j	                  |«      }|S )NrÂ   c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wrš   © )Ú.0Úwords     r–   ú	<genexpr>z3EnglishNumberNormalizer.__call__.<locals>.<genexpr>¼  s   è ø€ ÒX˜dÀtÑGW”TÑXùs   ‚Š)rÎ   rÈ   r¿   rÄ   rÚ   ©r�   r'   s     r–   Ú__call__z EnglishNumberNormalizer.__call__º  sJ   € Ø�O‰O˜AÓˆØ�H‰HÑX d×&8Ñ&8¸¿¹»Ó&CÔXÓXˆØ×Ñ˜QÓˆàˆr¢   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rs   r   rŸ   r   r¿   rÎ   rÚ   râ   Ú__classcell__)r•   s   @r–   r   r      sR   ø„ ñôL-ð\]  4¨¡9ð ] °¸#±ó ] ð~˜Có ð:˜Só ð2˜#÷ r¢   r   c                   ó"   — e Zd ZdZd„ Zdefd„Zy)ÚEnglishSpellingNormalizerz~
    Applies British-American spelling mappings as listed in [1].

    [1] https://www.tysto.com/uk-us-spelling-list.html
    c                 óÌ   — t         j                  j                  t         j                  j                  t        «      d«      }t        j                  t        |«      «      | _        y )Nzenglish.json)	ÚosÚpathrÈ   ÚdirnameÚ__file__ÚjsonÚloadÚopenr“   )r�   Úmapping_paths     r–   rs   z"EnglishSpellingNormalizer.__init__É  s8   € Ü—w‘w—|‘|¤B§G¡G§O¡O´HÓ$=¸~ÓNˆÜ—y‘y¤ lÓ!3Ó4ˆ�r¢   r'   c                 óT   ‡ — dj                  ˆ fd„|j                  «       D «       «      S )NrÂ   c              3   óV   •K  — | ]   }‰j                   j                  ||«      –— Œ" y ­wrš   )r“   r°   )rÞ   rß   r�   s     €r–   rà   z5EnglishSpellingNormalizer.__call__.<locals>.<genexpr>Î  s"   øè ø€ ÒK¸˜Ÿ™×(Ñ(¨¨t×4ÑKùs   ƒ&))rÈ   rÄ   rá   s   ` r–   râ   z"EnglishSpellingNormalizer.__call__Í  s   ø€ Ø�x‰xÓKÀÇÁÃÔKÓKÐKr¢   N)rã   rä   rå   ræ   rs   rŸ   râ   rÝ   r¢   r–   ré   ré   Â  s   „ ñò5ðL˜#ô Lr¢   ré   c                   ó   — e Zd Zd„ Zdefd„Zy)ÚEnglishTextNormalizerc                 óP  — 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"“i d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“¥dEdFdGdHdIdJdKdLdMdNdOdPdLdQdRdSœ¥| _        t        «       | _        t	        «       | _        y )TNz\b(hmm|mm|mhm|mmm|uh|um)\bz	\bwon't\bzwill notz	\bcan't\bzcan notz	\blet's\bzlet usz	\bain't\bÚaintz	\by'all\bzyou allz	\bwanna\bzwant toz	\bgotta\bzgot toz	\bgonna\bzgoing toz\bi'ma\bzi am going toz\bimma\bz
\bwoulda\bz
would havez
\bcoulda\bz
could havez\bshoulda\bzshould havez	\bma'am\bÚmadamz\bmr\bzmister z\bmrs\bzmissus z\bst\bzsaint z\bdr\bzdoctor z\bprof\bz
professor z\bcapt\bzcaptain z\bgov\bz	governor z\bald\bz	alderman z\bgen\bzgeneral z\bsen\bzsenator z\brep\bzrepresentative z\bpres\bz
president z\brev\bz	reverend z\bhon\bz
honorable z\basst\bz
assistant z	\bassoc\bz
associate z\blt\bzlieutenant z\bcol\bzcolonel z\bjr\bzjunior z\bsr\bzsenior zesquire z	 had beenz	 has beenz	 had gonez	 has gonez	 had donez has gotz notz arez isz wouldz willz havez am)z\besq\bz	'd been\bz	's been\bz	'd gone\bz	's gone\bz	'd done\bz's got\bzn't\bz're\bz's\bz'd\bz'll\bz't\bz've\bz'm\b)Úignore_patternsÚ	replacersr   Ústandardize_numbersré   Ústandardize_spellings)r�   s    r–   rs   zEnglishTextNormalizer.__init__Ò  s  € Ø<ˆÔð6
à˜*ð6
ð ˜)ð6
ð ˜(ð	6
ð
 ˜&ð6
ð ˜)ð6
ð ˜)ð6
ð ˜(ð6
ð ˜*ð6
ð ˜ð6
ð ˜ð6
ð ˜<ð6
ð ˜<ð6
ð ˜Mð6
ð ˜'ð6
ð" �yð#6
ð$ ˜	ð%6
ð& �xñ'6
ð( �yð)6
ð* ˜ð+6
ð, ˜ð-6
ð. ˜ð/6
ð0 ˜ð16
ð2 ˜
ð36
ð4 ˜
ð56
ð6 Ð)ð76
ð8 ˜ð96
ð: ˜ð;6
ð< ˜ð=6
ð> ˜ð?6
ð@ ˜,ðA6
ðB �}ðC6
ðD ˜
ðE6
ðF �yðG6
ðH �yñI6
ðJ #à%Ø%Ø%Ø%Ø%Ø#àØØØØØØØòk6
ˆŒôn $;Ó#<ˆÔ Ü%>Ó%@ˆÕ"r¢   r'   c                 ó¨  — |j                  «       }t        j                  dd|«      }t        j                  dd|«      }t        j                  | j                  d|«      }t        j                  dd|«      }| j                  j                  «       D ]  \  }}t        j                  |||«      }Œ t        j                  dd|«      }t        j                  dd	|«      }t        |d
¬«      }| j                  |«      }| j                  |«      }t        j                  dd	|«      }t        j                  dd|«      }t        j                  dd|«      }|S )Nz[<\[][^>\]]*[>\]]r¤   z\(([^)]+?)\)z\s+'ú'z	(\d),(\d)rÃ   z\.([^0-9]|$)z \1u
   .%$Â¢â‚¬Â£)Úkeepu   [.$Â¢â‚¬Â£]([^0-9])z	([^0-9])%z\1 z\s+rÂ   )	Úlowerrª   rÉ   rú   rû   rv   r   rü   rý   )r�   r'   ÚpatternÚreplacements       r–   râ   zEnglishTextNormalizer.__call__  s  € Ø�G‰G‹Iˆä�F‰FÐ'¨¨QÓ/ˆÜ�F‰F�? B¨Ó*ˆÜ�F‰F�4×'Ñ'¨¨QÓ/ˆÜ�F‰F�7˜C Ó#ˆà$(§N¡N×$8Ñ$8Ó$:ò 	0Ñ ˆG�[Ü—‘�w ¨QÓ/‰Að	0ô �F‰F�< ¨!Ó,ˆÜ�F‰F�? F¨AÓ.ˆÜ)¨!°,Ô?ˆà×$Ñ$ QÓ'ˆØ×&Ñ& qÓ)ˆô �F‰FÐ)¨6°1Ó5ˆÜ�F‰F�< ¨Ó+ˆä�F‰F�6˜3 Ó"ˆàˆr¢   N)rã   rä   rå   rs   rŸ   râ   rÝ   r¢   r–   rö   rö   Ñ  s   „ ò:Aðx˜#ô r¢   rö   )rï   rë   rª   Ú	fractionsr   Útypingr   r   r   r   r   Úmore_itertoolsr	   Úbasicr   r   ré   rö   rÝ   r¢   r–   ú<module>r     sB   ðÛ Û 	Û 	Ý ß 9Õ 9å #å 0÷sñ s÷lLñ L÷Uò Ur¢   