§
    íóÉjsD  ã                   óà   — d dl Z d dlZ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 d dlmZ d„ Zd„ Zd	„ Z G d
„ de¦  «        Zedk    r	 d dlZ ej        ¦   «          dS dS )é    N)ÚZipFilePathPointer)Ú_validate_java_optionsÚ_verify_jar_sandboxÚfind_dirÚ	find_fileÚfind_jars_within_path)ÚParserI)ÚDependencyGraph)Útaggedsents_to_conllc                  ó6   — ddl m}   | g d¢¦  «        }|j        S )Nr   )ÚRegexpTagger))z\.$ú.)z\,$ú,)z\?$ú?)z\($ú()z\)$ú))z\[$ú[)z\]$ú])z^-?[0-9]+(\.[0-9]+)?$ÚCD)z(The|the|A|a|An|an)$ÚDT)z&(He|he|She|she|It|it|I|me|Me|You|you)$ÚPRP)z(His|his|Her|her|Its|its)$úPRP$)z(my|Your|your|Yours|yours)$r   )z (on|On|in|In|at|At|since|Since)$ÚIN)z (for|For|ago|Ago|before|Before)$r   )z(till|Till|until|Until)$r   )z(by|By|beside|Beside)$r   )z(under|Under|below|Below)$r   )z(over|Over|above|Above)$r   )z (across|Across|through|Through)$r   )z(into|Into|towards|Towards)$r   )z(onto|Onto|from|From)$r   )z.*able$ÚJJ)z.*ness$ÚNN)z.*ly$ÚRB)z.*s$ÚNNS)z.*ing$ÚVBG)z.*ed$ÚVBD)z.*r   )Únltk.tagr   Útag)r   Ú_taggers     úr/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/nltk/parse/malt.pyÚmalt_regex_taggerr$      s?   € Ø%Ð%Ð%Ð%Ð%Ð%àˆlð	
ð 	
ð 	
ñô €Gð@ Œ;Ðó    c                 óº  — t          j        | ¦  «        } t           j                             | ¦  «        r"t           j                             | ¦  «        r| }nt          | d¬¦  «        }g d¢}t          t          |¦  «        ¦  «        }d„ |D ¦   «         }h d£}|                     |¦  «        sJ ‚t          t          d„ |¦  «        ¦  «        sJ ‚t          |¦  «        S )zE
    A module to find MaltParser .jar file and its dependencies.
    )ÚMALT_PARSER)Úenv_vars)Ú r)   r)   c                 óX   — h | ]'}t           j                             |¦  «        d          ’Œ(S )é   )ÚosÚpathÚsplit)Ú.0Újars     r#   ú	<setcomp>z"find_maltparser.<locals>.<setcomp>V   s+   € Ð9Ð9Ð9 s�RŒW�]Š]˜3ÑÔ Ô"Ð9Ð9Ð9r%   >   ú	log4j.jarú
libsvm.jarúliblinear-1.8.jarc                 óV   — |                       d¦  «        o|                      d¦  «        S )Nzmaltparser-z.jar)Ú
startswithÚendswith)Úis    r#   ú<lambda>z!find_maltparser.<locals>.<lambda>[   s#   € ˜Ÿš mÑ4Ô4ÐK¸¿ºÀFÑ9KÔ9K€ r%   )r,   Úfspathr-   ÚisabsÚisdirr   Úsetr   ÚissubsetÚanyÚfilterÚlist)Úparser_dirnameÚ	_malt_dirÚmalt_dependenciesÚ
_malt_jarsÚ_jarss        r#   Úfind_maltparserrG   C   sò   € õ
 ”Y˜~Ñ.Ô.€Nõ 
„w‡}‚}�^Ñ$Ô$ð H­¬¯ª°~Ñ)FÔ)Fð HØ"ˆ	ˆ	å˜^Ð6FÐGÑGÔGˆ	à$˜˜ÐÝÕ*¨9Ñ5Ô5Ñ6Ô6€JØ9Ð9¨jÐ9Ñ9Ô9€EØHÐHÐHÐà×%Ò% eÑ,Ô,Ð,Ð,Ð,ÝÝÐKÐKÈUÑSÔSñô ð ð ð õ �
ÑÔÐr%   c                 óp   — | €dS t           j                             | ¦  «        r| S t          | dd¬¦  «        S )z8
    A module to find pre-trained MaltParser model.
    Númalt_temp.mco)Ú
MALT_MODELF)r(   Úverbose)r,   r-   Úexistsr   )Úmodel_filenames    r#   Úfind_malt_modelrN   `   sA   € ð ÐØˆÝ	Œ�Š˜Ñ	'Ô	'ð RØÐå˜°/È5ÐQÑQÔQÐQr%   c                   ób   — e Zd ZdZ	 	 	 	 dd„Zdd„Zdd„Zdd	„Zedd
„¦   «         Z	dd„Z
dd„ZdS )Ú
MaltParseraà  
    A class for dependency parsing with MaltParser. The input is the paths to:
    - (optionally) a maltparser directory
    - (optionally) the path to a pre-trained MaltParser .mco model file
    - (optionally) the tagger to use for POS tagging before parsing
    - (optionally) additional Java arguments

    Example:
        >>> from nltk.parse import malt
        >>> # With MALT_PARSER and MALT_MODEL environment set.
        >>> mp = malt.MaltParser(model_filename='engmalt.linear-1.7.mco') # doctest: +SKIP
        >>> mp.parse_one('I shot an elephant in my pajamas .'.split()).tree() # doctest: +SKIP
        (shot I (elephant an) (in (pajamas my)) .)
        >>> # Without MALT_PARSER and MALT_MODEL environment.
        >>> mp = malt.MaltParser('/home/user/maltparser-1.9.2/', '/home/user/engmalt.linear-1.7.mco') # doctest: +SKIP
        >>> mp.parse_one('I shot an elephant in my pajamas .'.split()).tree() # doctest: +SKIP
        (shot I (elephant an) (in (pajamas my)) .)
    r)   Nc                 óê   — t          |¦  «        | _        |�|ng | _        t          |¦  «        | _        | j        dk    | _        t          j        ¦   «         | _        |�|nt          ¦   «         | _
        dS )a  
        An interface for parsing with the Malt Parser.

        :param parser_dirname: The path to the maltparser directory that
            contains the maltparser-1.x.jar
        :type parser_dirname: str
        :param model_filename: The name of the pre-trained model with .mco file
            extension. If provided, training will not be required.
            (see http://www.maltparser.org/mco/mco.html and
            see http://www.patful.com/chalk/node/185)
        :type model_filename: str
        :param tagger: The tagger used to POS tag the raw string before
            formatting to CONLL format. It should behave like `nltk.pos_tag`
        :type tagger: function
        :param additional_java_args: This is the additional Java arguments that
            one can use when calling Maltparser, usually this is the heapsize
            limits, e.g. `additional_java_args=['-Xmx1024m']`
            (see https://javarevisited.blogspot.com/2011/05/java-heap-space-memory-size-jvm.html)
        :type additional_java_args: list
        NrI   )rG   Ú	malt_jarsÚadditional_java_argsrN   ÚmodelÚ_trainedÚtempfileÚ
gettempdirÚworking_dirr$   Útagger)ÚselfrB   rM   rY   rS   s        r#   Ú__init__zMaltParser.__init__€   sv   € õ: )¨Ñ8Ô8ˆŒð %9Ð$DÐ Ð È"ð 	Ô!õ % ^Ñ4Ô4ˆŒ
Øœ
 oÒ5ˆŒå#Ô.Ñ0Ô0ˆÔà &Ð 2�f�fÕ8IÑ8KÔ8KˆŒˆˆr%   FÚnullc           
   #   ó  K  — | j         st          d¦  «        ‚d}d}	 t          j        d| j        dd¬¦  «        5 }t          j        d| j        dd¬¦  «        5 }|j        }|j        }t          j                             | j	        ¦  «        d         }|rt          j         
                    |¦  «        nd}	|	r!t          j                             |	¦  «        sd}	t          |¦  «        D ]$}
|                     t          |
¦  «        ¦  «         Œ%|                     ¦   «          |                      ||d	¬
¦  «        }|                      |||	¬¦  «        }|dk    r't          dd                     |¦  «        |fz  ¦  «        ‚t'          |¦  «        5 }|                     ¦   «                              d¦  «        D ]#}t+          t-          ||¬¦  «        g¦  «        V — Œ$	 ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ||fD ]*}|r&	 t          j        |¦  «         Œ# t0          $ r Y Œ&w xY wŒ+dS # ||fD ]*}|r&	 t          j        |¦  «         Œ# t0          $ r Y Œ&w xY wŒ+w xY w)a»  
        Use MaltParser to parse multiple POS tagged sentences. Takes multiple
        sentences where each sentence is a list of (word, tag) tuples.
        The sentences must have already been tokenized and tagged.

        :param sentences: Input sentences to parse
        :type sentence: list(list(tuple(str, str)))
        :return: iter(iter(``DependencyGraph``)) the dependency graph
            representation of each sentence
        z0Parser has not been trained. Call train() first.Nzmalt_input.conll.ÚwF©ÚprefixÚdirÚmodeÚdeletezmalt_output.conll.r   Úparse©rb   )Úcwdz0MaltParser parsing (%s) failed with exit code %dú z

©Útop_relation_label)rU   Ú	ExceptionrV   ÚNamedTemporaryFilerX   Únamer,   r-   r.   rT   Úabspathr<   r   ÚwriteÚstrÚcloseÚgenerate_malt_commandÚ_executeÚjoinÚopenÚreadÚiterr
   ÚremoveÚOSError)rZ   Ú	sentencesrK   ri   Úinput_file_nameÚoutput_file_nameÚ
input_fileÚoutput_fileÚ	model_dirÚ	model_cwdÚlineÚcmdÚretÚinfileÚtree_strÚfilenames                   r#   Úparse_tagged_sentszMaltParser.parse_tagged_sentsª   sß  è è € ð Œ}ð 	PÝÐNÑOÔOÐOàˆØÐð8	ÝÔ,Ø*°Ô0@ÀsÐSXðñ ô ð 0à�XÔ8Ø+ØÔ$ØØð	ñ ô ð0ð Ø",¤/�Ø#.Ô#3Ð åœGŸMšM¨$¬*Ñ5Ô5°aÔ8�	Ø:CÐM�BœGŸOšO¨IÑ6Ô6Ð6È�	Øð %¥R¤W§]¢]°9Ñ%=Ô%=ð %Ø $�Iõ 1°Ñ;Ô;ð 0ð 0�DØ×$Ò$¥S¨¡Y¤YÑ/Ô/Ð/Ð/Ø× Ò Ñ"Ô"Ð"ð ×0Ò0Ø#Ð%5¸Gð 1ñ ô �ð —m’m C¨°i�mÑ@Ô@�à˜!’8�8Ý#ð"Ø%(§X¢X¨c¡]¤]°CÐ$8ñ9ñô ð õ Ð*Ñ+Ô+ð ¨vØ$*§K¢K¡M¤M×$7Ò$7¸Ñ$?Ô$?ð 
ð 
˜å å$3Ø(0Ø;Mð%&ñ %&ô %&ð!"ñô ð	ð 	ð 	ð 	ð
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ðK0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ðd -Ð.>Ð?ð ð �Øð ðÝœ	 (Ñ+Ô+Ð+Ð+øÝ"ð ð ð Ø˜ðøøøððð ø˜_Ð.>Ð?ð ð �Øð ðÝœ	 (Ñ+Ô+Ð+Ð+øÝ"ð ð ð Ø˜ðøøøððøøøs®   žI »HÁD3G<ÆAG%ÇG<Ç%G)Ç)G<Ç,G)Ç-G<Ç0HÇ<H 	È HÈH 	ÈHÈI ÈHÈI ÈHÈI È'H<È<
I	ÉI	É	J ÉI.É-J É.
I;	É8J É:I;	É;J c                 óP   ‡ — ˆ fd„|D ¦   «         }‰                       |||¬¦  «        S )an  
        Use MaltParser to parse multiple sentences.
        Takes a list of sentences, where each sentence is a list of words.
        Each sentence will be automatically tagged with this
        MaltParser instance's tagger.

        :param sentences: Input sentences to parse
        :type sentence: list(list(str))
        :return: iter(DependencyGraph)
        c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S )N)rY   )r/   ÚsentencerZ   s     €r#   ú	<genexpr>z)MaltParser.parse_sents.<locals>.<genexpr>ÿ   s/   øè è € ÐLÐL°h˜DŸKšK¨Ñ1Ô1ÐLÐLÐLÐLÐLÐLr%   rh   )r†   )rZ   ry   rK   ri   Útagged_sentencess   `    r#   Úparse_sentszMaltParser.parse_sentsô   sE   ø€ ð MÐLÐLÐLÀ)ÐLÑLÔLÐØ×&Ò&Ø˜gÐ:Lð 'ñ 
ô 
ð 	
r%   c                 óÄ  — t          | j        ¦  «         t          | j        ¦  «         dg}|| j        z  }|dt          j                             | j        ¦  «        gz  }|dgz  }t          j                             | j	        ¦  «        r0|dt          j         
                    | j	        ¦  «        d         gz  }n|d| j	        gz  }|d|gz  }|dk    r|d|gz  }|d	|gz  }|S )
a  
        This function generates the maltparser command use at the terminal.

        :param inputfilename: path to the input file
        :type inputfilename: str
        :param outputfilename: path to the output file
        :type outputfilename: str
        Újavaz-cpzorg.maltparser.Maltz-céÿÿÿÿz-ird   z-oz-m)r   rR   r   rS   r,   Úpathseprs   r-   rL   rT   r.   )rZ   ÚinputfilenameÚoutputfilenamerb   r�   s        r#   rq   z MaltParser.generate_malt_command  sù   € õ 	˜DœNÑ+Ô+Ð+Ý˜tÔ8Ñ9Ô9Ð9àˆhˆØˆtÔ(Ñ(ˆØØÝŒJ�OŠO˜DœNÑ+Ô+ð
ñ 	
ˆð 	Ð%Ð&Ñ&ˆõ Œ7�>Š>˜$œ*Ñ%Ô%ð 	&Ø�D�"œ'Ÿ-š-¨¬
Ñ3Ô3°BÔ7Ð8Ñ8ˆCˆCà�D˜$œ*Ð%Ñ%ˆCà��mÐ$Ñ$ˆØ�7Š?ˆ?Ø�D˜.Ð)Ñ)ˆCØ��dˆ|ÑˆØˆ
r%   c                 óz   — |rd nt           j        }t          j        | |||¬¦  «        }|                     ¦   «         S )N)ÚstdoutÚstderrrf   )Ú
subprocessÚPIPEÚPopenÚwait)r�   rK   rf   ÚoutputÚps        r#   rr   zMaltParser._execute*  s8   € à Ð5��¥j¤oˆÝÔ˜S¨¸ÀCÐHÑHÔHˆØ�vŠv‰xŒxˆr%   c                 ó\  — t          j        d| j        dd¬¦  «        5 }d                     d„ |D ¦   «         ¦  «        }|                     t          |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |                      |j        |¬¦  «         t          j	        |j        ¦  «         dS )	zÍ
        Train MaltParser from a list of ``DependencyGraph`` objects

        :param depgraphs: list of ``DependencyGraph`` objects for training input data
        :type depgraphs: DependencyGraph
        úmalt_train.conll.r^   Fr_   ú
c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS )é
   N)Úto_conll)r/   Údgs     r#   rŠ   z#MaltParser.train.<locals>.<genexpr><  s,   è è € Ð!FÐ!F°b "§+¢+¨b¡/¤/Ð!FÐ!FÐ!FÐ!FÐ!FÐ!Fr%   N©rK   )
rV   rk   rX   rs   rn   ro   Útrain_from_filerl   r,   rw   )rZ   Ú	depgraphsrK   r|   Ú	input_strs        r#   ÚtrainzMaltParser.train0  sê   € õ Ô(Ø&¨DÔ,<À3Èuð
ñ 
ô 
ð 	-àØŸ	š	Ð!FÐ!F¸IÐ!FÑ!FÔ!FÑFÔFˆIØ×Ò�S ™^œ^Ñ,Ô,Ð,ð		-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	×Ò˜Zœ_°gÐÑ>Ô>Ð>å
Œ	�*”/Ñ"Ô"Ð"Ð"Ð"s   žAA,Á,A0Á3A0c                 óX  — t          |t          ¦  «        r³t          j        d| j        dd¬¦  «        5 }|                     ¦   «         5 }|                     ¦   «         }|                     t          |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |  	                    |j
        |¬¦  «        cddd¦  «         S # 1 swxY w Y   |                      |d¬¦  «        }|                      ||¦  «        }|d	k    r't          d
d                     |¦  «        |fz  ¦  «        ‚d| _        dS )z—
        Train MaltParser from a file
        :param conll_file: str for the filename of the training input data
        :type conll_file: str
        r�   r^   Fr_   Nr£   Úlearnre   r   z1MaltParser training (%s) failed with exit code %drg   T)Ú
isinstancer   rV   rk   rX   rt   ru   rn   ro   r¤   rl   rq   rr   rj   rs   rU   )rZ   Ú
conll_filerK   r|   Úconll_input_fileÚ	conll_strr�   r‚   s           r#   r¤   zMaltParser.train_from_fileC  s¿  € õ �jÕ"4Ñ5Ô5ð 	NÝÔ,Ø*°Ô0@ÀsÐSXðñ ô ð NàØ—_’_Ñ&Ô&ð 5Ð*:Ø 0× 5Ò 5Ñ 7Ô 7�IØ×$Ò$¥S¨¡^¤^Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð ×+Ò+¨J¬OÀWÐ+ÑMÔMðNð Nð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nð ×(Ò(¨¸'Ð(ÑBÔBˆØ�mŠm˜C Ñ)Ô)ˆØ�!Š8ˆ8ÝðØ ŸXšX c™]œ]¨CÐ0ñ1ñô ð ð ˆŒˆˆs5   ³B>Á7BÁ?B>ÂB	ÂB>ÂB	ÂB>Â>CÃC)r)   NNN)Fr\   )NN)FN)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r[   r†   rŒ   rq   Ústaticmethodrr   r§   r¤   © r%   r#   rP   rP   l   sÏ   € € € € € ðð ð* ØØØ!ð(Lð (Lð (Lð (LðTHð Hð Hð HðT
ð 
ð 
ð 
ð $ð $ð $ð $ðL ðð ð ñ „\ðð
#ð #ð #ð #ð&ð ð ð ð ð r%   rP   Ú__main__)Úinspectr,   r–   ÚsysrV   Ú	nltk.datar   Únltk.internalsr   r   r   r   r   Únltk.parse.apir	   Únltk.parse.dependencygraphr
   Únltk.parse.utilr   r$   rG   rN   rP   r®   ÚdoctestÚtestmodr³   r%   r#   ú<module>r¾      si  ðð €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€à (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ð#ð #ð #ðLð ð ð:	Rð 	Rð 	Rðqð qð qð qð q�ñ qô qð qðh ˆzÒÐð@ðD €N€N€Nà€G„OÑÔÐÐÐðK Ðr%   