§
    'ê[fç$  ã                   óx   — d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	  G d„ d¦  «        Z
 G d„ de¦  «        ZdS )	é    N)ÚIteratorÚListÚTuple)Ú
TokenizerI)Úalign_tokensc                   ó*   — e Zd ZdZg d¢ZddgZddgZdS )ÚMacIntyreContractionszI
    List of contractions adapted from Robert MacIntyre's tokenizer.
    )z(?i)\b(can)(?#X)(not)\bz(?i)\b(d)(?#X)('ye)\bz(?i)\b(gim)(?#X)(me)\bz(?i)\b(gon)(?#X)(na)\bz(?i)\b(got)(?#X)(ta)\bz(?i)\b(lem)(?#X)(me)\bz(?i)\b(more)(?#X)('n)\bz(?i)\b(wan)(?#X)(na)(?=\s)z(?i) ('t)(?#X)(is)\bz(?i) ('t)(?#X)(was)\bz(?i)\b(whad)(dd)(ya)\bz(?i)\b(wha)(t)(cha)\bN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCONTRACTIONS2ÚCONTRACTIONS3ÚCONTRACTIONS4© ó    úM/var/www/piapp/venv/lib/python3.11/site-packages/nltk/tokenize/destructive.pyr	   r	      sA   € € € € € ðð ð	ð 	ð 	€Mð -Ð.FÐG€MØ.Ð0HÐI€M€M€Mr   r	   c                   óè  — e Zd ZdZ ej        dej        ¦  «        df ej        d¦  «        df ej        d¦  «        df ej        d¦  «        df ej        d	ej        ¦  «        d
fgZ ej        dej        ¦  «        df ej        d¦  «        df ej        d¦  «        df ej        d¦  «        df ej        d¦  «        dfgZ ej        dej        ¦  «        df ej        d¦  «        df ej        d¦  «        df ej        dej        ¦  «        df ej        d¦  «        df ej        d¦  «        df ej        d¦  «        df ej        d¦  «        df ej        dej        ¦  «        dfg	Z	 ej        d ¦  «        dfZ
 ej        d!¦  «        d"f ej        d#¦  «        d$f ej        d%¦  «        d&f ej        d'¦  «        d(f ej        d)¦  «        d*f ej        d+¦  «        d,fgZ ej        d-¦  «        d.fZ e¦   «         Z e eej        ej        ¦  «        ¦  «        Z e eej        ej        ¦  «        ¦  «        Z	 d7d0ed1ed2ed3ee         fd4„Zd0ed3eeeef                  fd5„Zd6S )8ÚNLTKWordTokenizeraE  
    The NLTK tokenizer that has improved upon the TreebankWordTokenizer.

    This is the method that is invoked by ``word_tokenize()``.  It assumes that the
    text has already been segmented into sentences, e.g. using ``sent_tokenize()``.

    The tokenizer is "destructive" such that the regexes applied will munge the
    input string to a state beyond re-construction. It is possible to apply
    `TreebankWordDetokenizer.detokenize` to the tokenized outputs of
    `NLTKDestructiveWordTokenizer.tokenize` but there's no guarantees to
    revert to the original string.
    u   ([Â«â€œâ€˜â€ž]|[`]+)z \1 z^\"ú``z(``)z([ \(\[{<])(\"|\'{2})z\1 `` z$(?i)(\')(?!re|ve|ll|m|t|s|d|n)(\w)\bz\1 \2u   ([Â»â€�â€™])ú''z '' ú"z([^' ])('[sS]|'[mM]|'[dD]|') z\1 \2 z)([^' ])('ll|'LL|'re|'RE|'ve|'VE|n't|N'T) u&   ([^\.])(\.)([\]\)}>"\'Â»â€�â€™ ]*)\s*$z	\1 \2 \3 z([:,])([^\d])z \1 \2z([:,])$z\.{2,}z \g<0> z[;@#$%&]z([^\.])(\.)([\]\)}>"\']*)\s*$z\1 \2\3 z[?!]z([^'])' z\1 ' z[*]z[\]\[\(\)\{\}\<\>]z\(z-LRB-z\)z-RRB-z\[z-LSB-z\]z-RSB-z\{z-LCB-z\}z-RCB-z--z -- FÚtextÚconvert_parenthesesÚ
return_strÚreturnc                 ó’  — |rt          j        dt          d¬¦  «         | j        D ]\  }}|                     ||¦  «        }Œ| j        D ]\  }}|                     ||¦  «        }Œ| j        \  }}|                     ||¦  «        }|r#| j        D ]\  }}|                     ||¦  «        }Œ| j        \  }}|                     ||¦  «        }d|z   dz   }| j	        D ]\  }}|                     ||¦  «        }Œ| j
        D ]}|                     d|¦  «        }Œ| j        D ]}|                     d|¦  «        }Œ|                     ¦   «         S )aò  Return a tokenized copy of `text`.

        >>> from nltk.tokenize import NLTKWordTokenizer
        >>> s = '''Good muffins cost $3.88 (roughly 3,36 euros)\nin New York.  Please buy me\ntwo of them.\nThanks.'''
        >>> NLTKWordTokenizer().tokenize(s) # doctest: +NORMALIZE_WHITESPACE
        ['Good', 'muffins', 'cost', '$', '3.88', '(', 'roughly', '3,36',
        'euros', ')', 'in', 'New', 'York.', 'Please', 'buy', 'me', 'two',
        'of', 'them.', 'Thanks', '.']
        >>> NLTKWordTokenizer().tokenize(s, convert_parentheses=True) # doctest: +NORMALIZE_WHITESPACE
        ['Good', 'muffins', 'cost', '$', '3.88', '-LRB-', 'roughly', '3,36',
        'euros', '-RRB-', 'in', 'New', 'York.', 'Please', 'buy', 'me', 'two',
        'of', 'them.', 'Thanks', '.']


        :param text: A string with a sentence or sentences.
        :type text: str
        :param convert_parentheses: if True, replace parentheses to PTB symbols,
            e.g. `(` to `-LRB-`. Defaults to False.
        :type convert_parentheses: bool, optional
        :param return_str: If True, return tokens as space-separated string,
            defaults to False.
        :type return_str: bool, optional
        :return: List of tokens from `text`.
        :rtype: List[str]
        zHParameter 'return_str' has been deprecated and should no longer be used.é   )ÚcategoryÚ
stacklevelÚ z \1 \2 )ÚwarningsÚwarnÚDeprecationWarningÚSTARTING_QUOTESÚsubÚPUNCTUATIONÚPARENS_BRACKETSÚCONVERT_PARENTHESESÚDOUBLE_DASHESÚENDING_QUOTESr   r   Úsplit)Úselfr   r   r   ÚregexpÚsubstitutions         r   ÚtokenizezNLTKWordTokenizer.tokenizex   sœ  € ð8 ð 	ÝŒMð"å+Øð	ñ ô ð ð %)Ô$8ð 	2ð 	2Ñ ˆF�LØ—:’:˜l¨DÑ1Ô1ˆDˆDà$(Ô$4ð 	2ð 	2Ñ ˆF�LØ—:’:˜l¨DÑ1Ô1ˆDˆDð  $Ô3Ñˆ�Ø�zŠz˜,¨Ñ-Ô-ˆàð 	6Ø(,Ô(@ð 6ð 6Ñ$�˜Ø—z’z ,°Ñ5Ô5��ð  $Ô1Ñˆ�Ø�zŠz˜,¨Ñ-Ô-ˆð �T‰z˜CÑˆà$(Ô$6ð 	2ð 	2Ñ ˆF�LØ—:’:˜l¨DÑ1Ô1ˆDˆDàÔ(ð 	0ð 	0ˆFØ—:’:˜j¨$Ñ/Ô/ˆDˆDØÔ(ð 	0ð 	0ˆFØ—:’:˜j¨$Ñ/Ô/ˆDˆDð �zŠz‰|Œ|Ðr   c              #   óÒ   ‡K  — |                       |¦  «        }d|v sd|v r.d„ t          j        d|¦  «        D ¦   «         Šˆfd„|D ¦   «         }n|}t          ||¦  «        E d{V —† dS )a}  
        Returns the spans of the tokens in ``text``.
        Uses the post-hoc nltk.tokens.align_tokens to return the offset spans.

            >>> from nltk.tokenize import NLTKWordTokenizer
            >>> s = '''Good muffins cost $3.88\nin New (York).  Please (buy) me\ntwo of them.\n(Thanks).'''
            >>> expected = [(0, 4), (5, 12), (13, 17), (18, 19), (19, 23),
            ... (24, 26), (27, 30), (31, 32), (32, 36), (36, 37), (37, 38),
            ... (40, 46), (47, 48), (48, 51), (51, 52), (53, 55), (56, 59),
            ... (60, 62), (63, 68), (69, 70), (70, 76), (76, 77), (77, 78)]
            >>> list(NLTKWordTokenizer().span_tokenize(s)) == expected
            True
            >>> expected = ['Good', 'muffins', 'cost', '$', '3.88', 'in',
            ... 'New', '(', 'York', ')', '.', 'Please', '(', 'buy', ')',
            ... 'me', 'two', 'of', 'them.', '(', 'Thanks', ')', '.']
            >>> [s[start:end] for start, end in NLTKWordTokenizer().span_tokenize(s)] == expected
            True

        :param text: A string with a sentence or sentences.
        :type text: str
        :yield: Tuple[int, int]
        r   r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Úgroup)Ú.0Úms     r   ú
<listcomp>z3NLTKWordTokenizer.span_tokenize.<locals>.<listcomp>ß   s    € ÐKÐKÐK Q�q—w’w‘y”yÐKÐKÐKr   z
``|'{2}|\"c                 óF   •— g | ]}|d v r‰                      d¦  «        n|‘ŒS ))r   r   r   r   )Úpop)r4   ÚtokÚmatcheds     €r   r6   z3NLTKWordTokenizer.span_tokenize.<locals>.<listcomp>â   sB   ø€ ð ð ð àð #&Ð):Ð":Ð":�—’˜A‘”�Àðð ð r   N)r0   ÚreÚfinditerr   )r-   r   Ú
raw_tokensÚtokensr:   s       @r   Úspan_tokenizezNLTKWordTokenizer.span_tokenizeÀ   s¥   øè è € ð. —]’] 4Ñ(Ô(ˆ
ð �4ˆKˆK˜T T˜\˜\àKÐK­"¬+°mÀTÑ*JÔ*JÐKÑKÔKˆGðð ð ð à%ðñ ô ˆFˆFð
  ˆFå ¨Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   N)FF)r
   r   r   r   r;   ÚcompileÚUr%   r+   r'   r(   r)   r*   r	   Ú_contractionsÚlistÚmapr   r   ÚstrÚboolr   r0   r   r   Úintr?   r   r   r   r   r   %   sb  € € € € € ðð ð 
ˆŒÐ*¨B¬DÑ	1Ô	1°7Ð;Ø	ˆŒ�FÑ	Ô	˜UÐ#Ø	ˆŒ�GÑ	Ô	˜gÐ&Ø	ˆŒÐ,Ñ	-Ô	-¨yÐ9Ø	ˆŒÐ;¸R¼TÑ	BÔ	BÀHÐMð€Oð 
ˆŒ�N B¤DÑ	)Ô	)¨7Ð3Ø	ˆŒ�EÑ	Ô	˜FÐ#Ø	ˆŒ�DÑ	Ô	˜6Ð"Ø	ˆŒÐ4Ñ	5Ô	5°yÐAØ	ˆŒÐ@Ñ	AÔ	AÀ9ÐMð€Mð& 
ˆŒÐDÀbÄdÑ	KÔ	KÈ\ÐZØ	ˆŒÐ$Ñ	%Ô	% yÐ1Ø	ˆŒ�JÑ	Ô	 Ð)àˆBŒJ�y "¤$Ñ'Ô'Øð	
ð 
ˆŒ�KÑ	 Ô	  *Ð-àˆBŒJÐ7Ñ8Ô8Øð	
ð 
ˆŒ�GÑ	Ô	˜jÐ)Ø	ˆŒ�KÑ	 Ô	  (Ð+àˆBŒJ�v˜rœtÑ$Ô$Øð	
ð€Kð, "�r”zÐ"7Ñ8Ô8¸*ÐE€Oð 
ˆŒ�EÑ	Ô	˜GÐ$Ø	ˆŒ�EÑ	Ô	˜GÐ$Ø	ˆŒ�EÑ	Ô	˜GÐ$Ø	ˆŒ�EÑ	Ô	˜GÐ$Ø	ˆŒ�EÑ	Ô	˜GÐ$Ø	ˆŒ�EÑ	Ô	˜GÐ$ðÐð  �R”Z Ñ&Ô&¨Ð0€Mð *Ð)Ñ+Ô+€MØ�D˜˜˜RœZ¨Ô)DÑEÔEÑFÔF€MØ�D˜˜˜RœZ¨Ô)DÑEÔEÑFÔF€Mð PUðFð FØðFØ.2ðFØHLðFà	ˆcŒðFð Fð Fð FðP). #ð ).¨(°5¸¸c¸´?Ô*Cð ).ð ).ð ).ð ).ð ).ð ).r   r   )r;   r"   Útypingr   r   r   Únltk.tokenize.apir   Únltk.tokenize.utilr   r	   r   r   r   r   ú<module>rK      sÉ   ðð 
€	€	€	Ø €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à (Ð (Ð (Ð (Ð (Ð (Ø +Ð +Ð +Ð +Ð +Ð +ðJð Jð Jð Jð Jñ Jô Jð Jð&D.ð D.ð D.ð D.ð D.˜
ñ D.ô D.ð D.ð D.ð D.r   