§
    'ê[f»@  ã                   óØ   — 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
 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)Ú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     úC/var/www/piapp/venv/lib/python3.11/site-packages/nltk/parse/malt.pyÚmalt_regex_taggerr"      s?   € Ø%Ð%Ð%Ð%Ð%Ð%àˆlð	
ð 	
ð 	
ñô €Gð@ Œ;Ðó    c                 óT  — 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>H   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>M   s#   € ˜Ÿš mÑ4Ô4ÐK¸¿ºÀFÑ9KÔ9K€ r#   )
r*   r+   Úexistsr   Úsetr   ÚissubsetÚanyÚfilterÚlist)Úparser_dirnameÚ	_malt_dirÚmalt_dependenciesÚ
_malt_jarsÚ_jarss        r!   Úfind_maltparserrC   =   sË   € õ 
„w‡~‚~�nÑ%Ô%ð 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+   r8   r   )Úmodel_filenames    r!   Úfind_malt_modelrI   R   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://goo.gl/mpDBvQ)
        :type additional_java_args: list
        NrE   )rC   Ú	malt_jarsÚadditional_java_argsrI   ÚmodelÚ_trainedÚtempfileÚ
gettempdirÚworking_dirr"   Útagger)Úselfr>   rH   rT   rN   s        r!   Ú__init__zMaltParser.__init__r   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¦  «        ‚t          j        d| j        dd¬¦  «        5 }t          j        d| j        dd¬¦  «        5 }t          |¦  «        D ]$}|                     t          |¦  «        ¦  «         Œ%|                     ¦   «          |  	                    |j
        |j
        d¬¦  «        }t          j        ¦   «         }	 t          j        t          j                             | j        ¦  «        d	         ¦  «         n#  Y nxY w|                      ||¦  «        }	t          j        |¦  «         |	d	k    r't          d
d                     |¦  «        |	fz  ¦  «        ‚t'          |j
        ¦  «        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   t          j        |j
        ¦  «         t          j        |j
        ¦  «         dS )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.zmalt_input.conll.ÚwF©ÚprefixÚdirÚmodeÚdeletezmalt_output.conll.Úparse©r]   r   z0MaltParser parsing (%s) failed with exit code %dÚ z

©Útop_relation_labelN)rP   Ú	ExceptionrQ   ÚNamedTemporaryFilerS   r	   ÚwriteÚstrÚcloseÚgenerate_malt_commandÚnamer*   ÚgetcwdÚchdirr+   r,   rO   Ú_executeÚjoinÚopenÚreadÚiterr   Úremove)rU   Ú	sentencesrG   rc   Ú
input_fileÚoutput_fileÚlineÚcmdÚ_current_pathÚretÚinfileÚtree_strs               r!   Úparse_tagged_sentszMaltParser.parse_tagged_sentsœ   s!  è è € ð Œ}ð 	PÝÐNÑOÔOÐOåÔ(Ø&¨DÔ,<À3Èuð
ñ 
ô 
ð /	àÝÔ,Ø+ØÔ$ØØð	ñ ô ð ,ð
 å0°Ñ;Ô;ð 0ð 0�DØ×$Ò$¥S¨¡Y¤YÑ/Ô/Ð/Ð/Ø× Ò Ñ"Ô"Ð"ð ×0Ò0Ø”O [Ô%5¸Gð 1ñ ô �õ !#¤	¡¤�ðÝ”H�RœWŸ]š]¨4¬:Ñ6Ô6°qÔ9Ñ:Ô:Ð:Ð:øðØ�DøøøØ—m’m C¨Ñ1Ô1�Ý”˜Ñ'Ô'Ð'à˜!’8�8Ý#ð"Ø%(§X¢X¨c¡]¤]°CÐ$8ñ9ñô ð õ ˜+Ô*Ñ+Ô+ð 
¨vØ$*§K¢K¡M¤M×$7Ò$7¸Ñ$?Ô$?ð 	ð 	˜å å$3Ø(0ÐEWð%&ñ %&ô %&ð!"ñô ðð ð ð ð	ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ðE,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð/	ð /	ð /	ñ /	ô /	ð /	ð /	ð /	ð /	ð /	ð /	øøøð /	ð /	ð /	ð /	õb 	Œ	�*”/Ñ"Ô"Ð"Ý
Œ	�+Ô"Ñ#Ô#Ð#Ð#Ð#st   ¶H	ÁA>G2Ã<DÄG2ÄDÄA0G2ÆAGÇG2ÇGÇG2Ç"GÇ#G2Ç&H	Ç2G6	Ç6H	Ç9G6	Ç:H	È	HÈH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)rT   )r-   ÚsentencerU   s     €r!   ú	<genexpr>z)MaltParser.parse_sents.<locals>.<genexpr>é   s/   øè è € ÐLÐL°h˜DŸKšK¨Ñ1Ô1ÐLÐLÐLÐLÐLÐLr#   rb   )r|   )rU   rs   rG   rc   Útagged_sentencess   `    r!   Úparse_sentszMaltParser.parse_sentsÞ   sE   ø€ ð MÐLÐLÐLÀ)ÐLÑLÔLÐØ×&Ò&Ø˜gÐ:Lð 'ñ 
ô 
ð 	
r#   c                 ó¦  — dg}|| j         z  }t          j                             d¦  «        rdnd}|d|                     | 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
        ÚjavaÚwinú;ú:z-cpzorg.maltparser.Maltz-céÿÿÿÿz-ir_   z-oz-m)rN   ÚsysÚplatformr4   rn   rM   r*   r+   r8   rO   r,   )rU   ÚinputfilenameÚoutputfilenamer]   rw   Úclasspaths_separators         r!   ri   z MaltParser.generate_malt_commandî   s÷   € ð ˆhˆØˆtÔ(Ñ(ˆå&)¤l×&=Ò&=¸eÑ&DÔ&DÐM˜s˜sÈ#ÐØØØ ×%Ò% d¤nÑ5Ô5ð
ñ 	
ˆð 	Ð%Ð&Ñ&ˆõ Œ7�>Š>˜$œ*Ñ%Ô%ð 	&Ø�D�"œ'Ÿ-š-¨¬
Ñ3Ô3°BÔ7Ð8Ñ8ˆCˆCà�D˜$œ*Ð%Ñ%ˆCà��mÐ$Ñ$ˆØ�7Š?ˆ?Ø�D˜.Ð)Ñ)ˆCØ��dˆ|ÑˆØˆ
r#   c                 óx   — |rd nt           j        }t          j        | ||¬¦  «        }|                     ¦   «         S )N)ÚstdoutÚstderr)Ú
subprocessÚPIPEÚPopenÚwait)rw   rG   ÚoutputÚps       r!   rm   zMaltParser._execute  s6   € à Ð5��¥j¤oˆÝÔ˜S¨¸Ð?Ñ?Ô?ˆØ�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.rY   FrZ   Ú
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©rG   )
rQ   re   rS   rn   rf   rg   Útrain_from_filerj   r*   rr   )rU   Ú	depgraphsrG   rt   Ú	input_strs        r!   ÚtrainzMaltParser.train  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˜   rY   FrZ   Nrž   Úlearnr`   r   z1MaltParser training (%s) failed with exit code %dra   T)Ú
isinstancer   rQ   re   rS   ro   rp   rf   rg   rŸ   rj   ri   rm   rd   rn   rP   )rU   Ú
conll_filerG   rt   Úconll_input_fileÚ	conll_strrw   ry   s           r!   rŸ   zMaltParser.train_from_file'  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)FrW   )NN)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rV   r|   r‚   ri   Ústaticmethodrm   r¢   rŸ   © r#   r!   rK   rK   ^   sÏ   € € € € € ðð ð* ØØØ!ð(Lð (Lð (Lð (LðT@$ð @$ð @$ð @$ðD
ð 
ð 
ð 
ð ð ð ð ð@ ðð ð ñ „\ðð
#ð #ð #ð #ð&ð ð ð ð ð r#   rK   Ú__main__)Úinspectr*   r‘   r‰   rQ   Ú	nltk.datar   Únltk.internalsr   r   r   Únltk.parse.apir   Únltk.parse.dependencygraphr   Únltk.parse.utilr	   r"   rC   rI   rK   r©   ÚdoctestÚtestmodr®   r#   r!   ú<module>r¸      s?  ðð €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€à (Ð (Ð (Ð (Ð (Ð (Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ "Ð "Ð "Ð "Ð "Ð "Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ð#ð #ð #ðLð ð ð*	Rð 	Rð 	Rðcð cð cð cð c�ñ cô cð cðL ˆzÒÐð@ðD €N€N€Nà€G„OÑÔÐÐÐðK Ðr#   