§
    'ê[fs  ã                   óŽ   — d Z ddlZddlmZ ddlT ddlT ddlT  G d„ d¦  «        Z G d„ de¦  «        Z	 G d	„ d
e
¦  «        Zd„ ZdS )a  
Read from the Senseval 2 Corpus.

SENSEVAL [http://www.senseval.org/]
Evaluation exercises for Word Sense Disambiguation.
Organized by ACL-SIGLEX [https://www.siglex.org/]

Prepared by Ted Pedersen <tpederse@umn.edu>, University of Minnesota,
https://www.d.umn.edu/~tpederse/data.html
Distributed with permission.

The NLTK version of the Senseval 2 files uses well-formed XML.
Each instance of the ambiguous words "hard", "interest", "line", and "serve"
is tagged with a sense identifier, and supplied with context.
é    N)ÚElementTree)Ú*c                   ó   — e Zd Zd„ Zd„ ZdS )ÚSensevalInstancec                 óX   — || _         t          |¦  «        | _        || _        || _        d S ©N)ÚwordÚtupleÚsensesÚpositionÚcontext)Úselfr	   r   r   r   s        úO/var/www/piapp/venv/lib/python3.11/site-packages/nltk/corpus/reader/senseval.pyÚ__init__zSensevalInstance.__init__"   s(   € ØˆŒ	Ý˜F‘m”mˆŒØ ˆŒØˆŒˆˆó    c           	      óH   — d| j         ›d| j        ›d| j        ›d| j        ›d�	S )NzSensevalInstance(word=z, position=z
, context=z	, senses=ú))r	   r   r   r   )r   s    r   Ú__repr__zSensevalInstance.__repr__(   s2   € € àŒIˆIˆIØŒMˆMˆMØŒLˆLˆLØŒKˆKˆKð	
ð 	
r   N)Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r   !   s2   € € € € € ðð ð ð
ð 
ð 
ð 
ð 
r   r   c                   ó   — e Zd Zdd„Zd„ ZdS )ÚSensevalCorpusReaderNc                 ó\   — t          d„ |                      |d¦  «        D ¦   «         ¦  «        S )Nc                 ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r   )ÚSensevalCorpusView)Ú.0ÚfileidÚencs      r   ú
<listcomp>z2SensevalCorpusReader.instances.<locals>.<listcomp>4   s6   € ð ð ð á!�V˜Sõ # 6¨3Ñ/Ô/ðð ð r   T)ÚconcatÚabspaths)r   Úfileidss     r   Ú	instanceszSensevalCorpusReader.instances2   s>   € Ýðð à%)§]¢]°7¸DÑ%AÔ%Aðñ ô ñ
ô 
ð 	
r   c                 óâ   — g }|                      d¦  «        D ]V}|                      d¦  «        D ]>}|d         j        d         }d„ |d         D ¦   «         }|                     ||f¦  «         Œ?ŒW|S )NÚlexeltÚinstancer   Úsenseidc                 ó6   — g | ]}|j         |j        d          f‘ŒS )Úpos)ÚtextÚattrib)r   Úws     r   r!   z/SensevalCorpusReader._entry.<locals>.<listcomp>?   s%   € ÐFÐFÐF¸˜AœF A¤H¨U¤OÐ4ÐFÐFÐFr   é   )Úfindallr-   Úappend)r   ÚtreeÚeltsr'   ÚinstÚsenser   s          r   Ú_entryzSensevalCorpusReader._entry:   sŠ   € ØˆØ—l’l 8Ñ,Ô,ð 	.ð 	.ˆFØŸš zÑ2Ô2ð .ð .�Ø˜Qœœ yÔ1�ØFÐF¸dÀ1¼gÐFÑFÔF�Ø—’˜U GÐ,Ñ-Ô-Ð-Ð-ð.ð ˆr   r   )r   r   r   r%   r6   r   r   r   r   r   1   s7   € € € € € ð
ð 
ð 
ð 
ðð ð ð ð r   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )r   c                 ó†   — t                                | ||¬¦  «         t          ¦   «         | _        dg| _        d g| _        d S )N)Úencodingr   )ÚStreamBackedCorpusViewr   ÚWhitespaceTokenizerÚ_word_tokenizerÚ_lexelt_startsÚ_lexelts)r   r   r9   s      r   r   zSensevalCorpusView.__init__E   sB   € Ý×'Ò'¨¨f¸xÐ'ÑHÔHÐHå2Ñ4Ô4ˆÔØ ˜cˆÔØ˜ˆŒˆˆr   c                 ó   — t                                | j        |                     ¦   «         ¦  «        dz
  }| j        |         }g }d}	 |                     ¦   «         }|dk    r
|g k    sJ ‚g S |                     ¦   «                              d¦  «        r­|dz  }t          j	        d|¦  «        }|€J ‚| 
                    d¦  «        dd…         }|t          | j        ¦  «        k     r|| j        |         k    sJ ‚nF| j                             |¦  «         | j                             |                     ¦   «         ¦  «         |                     ¦   «                              d¦  «        r
|g k    sJ ‚d}|r|                     |¦  «         |                     ¦   «                              d	¦  «        rOd
                     |¦  «        }t          |¦  «        }t          j        |¦  «        }	|                      |	|¦  «        gS �Œ¸)Nr/   FTÚ z<lexeltzitem=("[^"]+"|'[^']+')éÿÿÿÿz	<instancez
</instanceÚ
)ÚbisectÚbisect_rightr=   Útellr>   ÚreadlineÚlstripÚ
startswithÚreÚsearchÚgroupÚlenr1   ÚjoinÚ_fixXMLr   Ú
fromstringÚ_parse_instance)
r   ÚstreamÚ
lexelt_numr'   Úinstance_linesÚin_instanceÚlineÚmÚ	xml_blockr4   s
             r   Ú
read_blockzSensevalCorpusView.read_blockL   sò  € å×(Ò(¨Ô)<¸f¿kºk¹m¼mÑLÔLÈqÑPˆ
Ø”˜zÔ*ˆàˆØˆð 	<Ø—?’?Ñ$Ô$ˆDØ�rŠzˆzØ%¨Ò+Ð+Ð+Ð+Ø�	ð �{Š{‰}Œ}×'Ò'¨	Ñ2Ô2ð 	>Ø˜a‘�
Ý”IÐ9¸4Ñ@Ô@�Ø�}�}�}ØŸš ™œ A b DÔ)�Ø¥ D¤MÑ 2Ô 2Ò2Ð2Ø! T¤]°:Ô%>Ò>Ð>Ð>Ð>Ð>à”M×(Ò(¨Ñ0Ô0Ð0ØÔ'×.Ò.¨v¯{ª{©}¬}Ñ=Ô=Ð=ð �{Š{‰}Œ}×'Ò'¨Ñ4Ô4ð #Ø%¨Ò+Ð+Ð+Ð+Ø"�ð ð ,Ø×%Ò% dÑ+Ô+Ð+ð �{Š{‰}Œ}×'Ò'¨Ñ5Ô5ð <Ø ŸIšI nÑ5Ô5�	Ý# IÑ.Ô.�	Ý"Ô-¨iÑ8Ô8�Ø×,Ò,¨T°6Ñ:Ô:Ð;Ð;ñA 	<r   c                 óô  — g }g }d }|D �]]}|j         dk    r!|                     |j        d         ¦  «         Œ/|j         dk    �r|| j                             |j        ¦  «        z  }|D �]ê}|j         dk    r|d         }|j         dk    �rA|�
J d¦   «         ‚|j                             ¦   «         st          |¦  «        dk    sJ ‚|j                             ¦   «         rt          |¦  «        dk    rJ ‚t          |¦  «        }|j                             ¦   «         r-|                     |j                             ¦   «         ¦  «         nâ|d         j         d	k    ri|                     |d         j        |d         j        d
         f¦  «         |d         j        r(|| j                             |d         j        ¦  «        z  }nhJ d¦   «         ‚|j         d	k    r(|                     |j        |j        d
         f¦  «         n+|j         dk    rnt          d|j         ¦  «         J d¦   «         ‚|j        r"|| j                             |j        ¦  «        z  }�Œì�ŒMJ d|j         z  ¦   «         ‚t          ||||¦  «        S )NÚanswerr)   r   Úcompoundr   Úheadzhead specified twicer/   Úwfr+   Fzexpected CDATA or wf in <head>ÚsÚACKz expected CDATA or <wf> or <head>zunexpected tag %s)Útagr1   r-   r<   Útokenizer,   ÚstriprL   ÚtailÚprintr   )r   r(   r'   r   r   r   ÚchildÚcwords           r   rP   z"SensevalCorpusView._parse_instanceu   s„  € ØˆØˆØˆØð $	>ñ $	>ˆEØŒy˜HÒ$Ð$Ø—’˜eœl¨9Ô5Ñ6Ô6Ð6Ð6Ø”˜iÒ'Ñ'Ø˜4Ô/×8Ò8¸¼ÑDÔDÑD�Ø"ð Mñ M�EØ”y JÒ.Ð.Ø % a¤˜à”y FÒ*Ñ*à'Ð/Ð/Ð1GÑ/Ô/Ð/Ø$œz×/Ò/Ñ1Ô1ÐDµS¸±Z´ZÀ1²_°_°_°_Ø$)¤J×$4Ò$4Ñ$6Ô$6ÐK½3¸u¹:¼:Èº?¸?¸?¸?å#& w¡<¤<˜à œ:×+Ò+Ñ-Ô-ð KØ#ŸNšN¨5¬:×+;Ò+;Ñ+=Ô+=Ñ>Ô>Ð>Ð>Ø" 1œXœ\¨TÒ1Ð1Ø#ŸNšN¨E°!¬H¬M¸5À¼8¼?È5Ô;QÐ+RÑSÔSÐSØ$ Qœxœ}ð XØ '¨4Ô+?×+HÒ+HÈÈqÌÌÑ+WÔ+WÑ W øàJÐ*JÑJÔJÐJØœ dÒ*Ð*ØŸš¨¬
°E´LÀÔ4GÐ'HÑIÔIÐIÐIØœ cÒ)Ð)Øõ ˜e U¤YÑ/Ô/Ð/ØHÐ&HÑHÔHÐHØ”zð MØ 4Ô#7×#@Ò#@ÀÄÑ#LÔ#LÑL˜ùñ;Mð> >Ð1°E´IÑ=Ñ=Ô=Ð=Ý ¨°'¸6ÑBÔBÐBr   N)r   r   r   r   rX   rP   r   r   r   r   r   D   sG   € € € € € ðð ð ð'<ð '<ð '<ðR)Cð )Cð )Cð )Cð )Cr   r   c                 óš  — t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        d	d
| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } | S )z:
    Fix the various issues with Senseval pseudo-XML.
    z	<([~\^])>z\1z(\s+)\&(\s+)z	\1&amp;\2z"""z'"'z(<[^<]*snum=)([^">]+)>z\1"\2"/>z<\&frasl>\s*<p[^>]*>ÚFRASLz
<\&I[^>]*>r@   z<{([^}]+)}>z	<(@|/?p)>z	<&\w+ \.>z<!DOCTYPE[^>]*>z<\[\/?[^>]+\]*>z
<(\&\w+;)>z&(?!amp|gt|lt|apos|quot)z'[ \t]*([^<>\s]+?)[ \t]*<p="([^"]*"?)"/>z <wf pos="\2">\1</wf>z\s*"\s*<p=\'"\'/>z <wf pos='"'>"</wf>)rI   Úsub)r,   s    r   rN   rN   ¡   s5  € õ
 Œ6�,  tÑ,Ô,€DåŒ6�/ <°Ñ6Ô6€DåŒ6�&˜& $Ñ'Ô'€DåŒ6Ð+¨[¸$Ñ?Ô?€DåŒ6Ð)¨7°DÑ9Ô9€DåŒ6�-  TÑ*Ô*€DåŒ6�. %¨Ñ.Ô.€DåŒ6�,  TÑ*Ô*€DåŒ6�,  TÑ*Ô*€DåŒ6Ð$ c¨4Ñ0Ô0€DåŒ6Ð$ c¨4Ñ0Ô0€DåŒ6�- ¨Ñ-Ô-€DåŒ6Ð-¨s°DÑ9Ô9€DåŒ6Ø2Ð4LÈdñô €Dõ Œ6Ð&Ð(?ÀÑFÔF€DØ€Kr   )Ú__doc__rI   Ú	xml.etreer   Únltk.corpus.reader.apiÚnltk.corpus.reader.utilÚnltk.tokenizer   ÚCorpusReaderr   r:   r   rN   r   r   r   ú<module>rp      s÷   ððð ð  
€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !à $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ø Ð Ð Ð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð ð ð ð ð ˜<ñ ô ð ð&ZCð ZCð ZCð ZCð ZCÐ/ñ ZCô ZCð ZCðz#ð #ð #ð #ð #r   