
    Vhl                         d Z ddlmZ ddlmZ ddlZddlmZ ddlm	Z	 d Z
d Z G d	 d
e      Z G d de      Z G d de      Zy)z*
Mock test for Stanford CoreNLP wrappers.
    )TestCase)	MagicMockN)corenlp)Treec                 @   	 t        j                  d      a	 t        j                          y # t        $ r t	        j
                  d       Y 6w xY w# t         j                  $ r8}t	        j
                  dj                  |j                               Y d }~y d }~ww xY w)Ni(#  )portz$Could not instantiate CoreNLPServer.zhSkipping CoreNLP tests because the server could not be started. Make sure that the 9000 port is free. {})
r   CoreNLPServerserverLookupErrorpytestskipstartCoreNLPServerErrorformatstrerror)modulees     K/home/dcms/DCMS/lib/python3.12/site-packages/nltk/test/unit/test_corenlp.pysetup_moduler      s~    <&&D1
	  <:;<
 %% 


#	
 	

s&   . A AAB%.BBc                 ,    t         j                          y )N)r
   stop)r   s    r   teardown_moduler       s    
KKM    c                       e Zd Zd Zy)TestTokenizerAPIc                 T   t        j                         }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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d d$d%d&d&dg	d'ddd#d(d)dd*d*dddd+d,dd-d-dddd.d/dd0d0dddd1d2dd3d3dddd4d5d	d6d6dddd7d8dd9d9dddd8d:dd&d&dgd'dddd;d<dd=d=dddd<d>dd&d&dgd'gi}t        |?      |_        d@}g dA}t	        |j                  |            }|j                  j                  d@dBdCiD       | j                  ||       y )EN	sentencesr           Good)afterbeforecharacterOffsetBegincharacterOffsetEndindexoriginalTextword         muffins         cost      $
   3.88         in         New   #      Yorkz  $   	   .r'   tokens&   ,   Please-   0   buy1   3   me4   7   two8   :   of;   ?   them@   A   G   ThanksH   return_valuezHGood muffins cost $3.88
in New York.  Please buy me
two of them.
Thanks.)r"   r-   r1   r4   r7   r;   r?   rC   rF   rK   rN   rQ   rT   rW   rZ   rF   r^   rF   
annotatorsztokenize,ssplit
properties)r   CoreNLPParserr   api_calllisttokenizeassert_called_once_withassertEqual)selfcorenlp_tokenizerapi_return_valueinput_stringexpected_outputtokenized_outputs         r   test_tokenizezTestTokenizerAPI.test_tokenize%   s   #113  &)&(4523%&,2$* &)&)4524%&,5$- &)&)4624%&,2$* &(&)4624%&,/$' &*&(4624%&,2$* &)&*4624%&,0$( &)&)4624%&,1$) &(&)4624%&,2$* &*&(4624%&,/$'SRUn  &)&*4624%&,4$, &)&)4624%&,1$) &*&)4624%&,0$( &)&*4624%&,1$) &)&)4624%&,0$( &(&)4624%&,2$* &*&(4624%&,/$'o@CJ  &(&*4624%&,4$, &(&(4624%&,/$'wrt
j &/<L%M"d
*   1 : :< HI""::Y$&78 	; 	
 	*:;r   N)__name__
__module____qualname__rq    r   r   r   r   $   s    W<r   r   c                       e Zd Zd Zd Zd Zy)TestTaggerAPIc                 X   t        j                  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ddddddddddddddddddddddg	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ddddddddd dddddddddddg	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ddddddddd dddddddddddg	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"d+d,dddd-dd&	d"d"d.d/dddd0dd&	d"d"d1d2dd3dd*dd&	d"d"d4d5dddd6dd&	d"d"d7d8dddd9dd&	d#d"d:d;dddd<dd&	g	d=gi}t        |>      |_        d?j	                         }g d@}|j                  |      }|j                  j                  d?dAdBdCD       | j                  ||       y )ENpostagtyper   ROOTr!   Whatr   dep	dependentdependentGlossgovernorgovernorGlosscopr,   isdetr0   ther    airspeednsubjcaser*   rW   rB   swallowr:   ancompoundr>   unladennmodpunctrE   ?znmod:ofz(ROOT
  (SBARQ
    (WHNP (WP What))
    (SQ (VBZ is)
      (NP
        (NP (DT the) (NN airspeed))
        (PP (IN of)
          (NP (DT an) (NN unladen) (NN swallow)))))
    (. ?)))r   r   whatWP	r#   r$   r%   r&   r'   lemmar(   ry   r)   beVBZ   DTr+      NN   r6   INr8   r9   ar<   "   JJrA   *   VB+   rJ   rF   basicDependenciesenhancedDependenciesenhancedPlusPlusDependenciesr'   parserH   r`   z,What is the airspeed of an unladen swallow ?)	)r}   r   )r   r   )r   r   )r   r   )rW   r   )r   r   )r   r   )r   r   )r   rF   trueztokenize,ssplit,poszssplit.isOneSentencerb   rc   r   re   r   rf   splittagri   rj   rk   corenlp_taggerrm   input_tokensro   tagged_outputs         r   test_pos_taggerzTestTaggerAPI.test_pos_tagger   sL    ..u=  $*)*.4()-3 $))*.2()-3 $))*.3()-7 $+)*.8()-3 $*)*.2()-6 $))*.2()-6 $.)*.7()-6 $*)*.7()-7 $+)*.1()-3s@*F $*)*.4()-3 $))*.2()-3 $))*.3()-7 $+)*.8()-3 $*)*.2()-6 $))*.2()-6 $.)*.7()-6 $-)*.7()-7 $+)*.1()-3s@-F $*)*.4()-3 $))*.2()-3 $))*.3()-7 $+)*.8()-3 $*)*.2()-6 $))*.2()-6 $.)*.7()-6 $-)*.7()-7 $+)*.1()-3s@5B  ^ &)&(4523%&%+,2#'$*
 &)&)4523%&%),0#($(
 &)&)4524%&%*,1#'$)
 &)&)4624%&%/,6#'$.
 &)&)4624%&%),0#'$(
 &)&)4624%&%(,0#'$(
 &)&)4624%&%.,5#'$-
 &)&)4624%&%.,5#'$-
 &(&)4624%&%(,/#&$'
sdMkmo
`	 #,9I"JEKKM

 '**<877:(.3 	8 	
 	-8r   c                     t        j                  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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$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
ddd0d1d2d3dd3dd3d
g
d4gi}t        |5      |_        d6j	                         }g d7}|j                  |      }|j                  j                  d6d8d9d:;       | j                  ||       y )<Nnerrz   r   r   r   r   r    r!   RamiPERSONNNP)
r#   r$   r%   r&   r'   r   r   r(   ry   r)   r*   rB   r,   EidrE   r   r0   r   Or   r   r+   r   studystudyingVBGr   r6   atr   r8      r:   StonyORGANIZATIONr=   rA   r>   BrookrD   .   
University/   rO   r;   2   rR   
   NYrG   r`   z4Rami Eid is studying at Stony Brook University in NY)
)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r;   r   )r   r   r   ztokenize,ssplit,nerr   rc   r   r   s         r   test_ner_taggerzTestTaggerAPI.test_ner_taggerL  s    ..u=  &)&(4523%&%+#+,2#($* &)&)4523%&%*#+,1#($) &)&)4524%&%)#&,0#($( &)&)4624%&%,#&,6#($. &)&)4624%&%)#&,0#'$( &)&)4624%&%,#1,3#($+ &)&)4624%&%,#1,3#($+ &)&)4624%&%1#1,8#($0 &)&)4624%&%)#&,0#'$( &(&)4624%'%)#&,0#($([y|~@
D #,9I"JMSSU
 '**<877B(.3 	8 	
 	-8r   c                     | j                  t              5  t        j                  d      }d d d        y # 1 sw Y   y xY w)Ntestrz   )assertRaises
ValueErrorr   re   )rk   r   s     r   test_unexpected_tagtypez%TestTaggerAPI.test_unexpected_tagtype  s9    z* 	C$226BN	C 	C 	Cs   6?N)rr   rs   rt   r   r   r   ru   r   r   rw   rw      s    J9X
]9~Cr   rw   c                       e Zd Zd Zd Zy)TestParserAPIc                    t        j                         }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dddddddddd
dddddddddddg	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ddddddddd
dddddddddddg	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ddddddddd
dddddddddddg	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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/d0dddd dd!	ddd1d2dddd"dd!	ddd3d4dddd'dd!	g	d5gi}t        |6      |_        d7j	                         }t        dt        d8t        d8t        d d	g      t        d"dg      t        d"dg      t        d'dg      g      t        d8t        d8t        d9dg      g      t        d:t        d.dg      t        d8t        d dg      t        d"dg      t        d'dg      g      g      g      g      g      }t        |j                  |            }|j                  j                  d7d;d<i=       | j                  ||       y )>Nr   r|   r    foxr   r~   r   r!   Theamodr,   quickr0   brownr   r*   jumpsr   r:   overrE   dogr>   r   rB   lazyr   	nmod:overz(ROOT
  (NP
    (NP (DT The) (JJ quick) (JJ brown) (NN fox))
    (NP
      (NP (NNS jumps))
      (PP (IN over)
        (NP (DT the) (JJ lazy) (NN dog))))))r   r   r   r   r   r         r3   r   r      jumpr   r9   r=   r   r@   r   rA   '   (   r   r   r`   +The quick brown fox jumps over the lazy dogNPNNSPPssplit.eolonlyr   rc   )
r   re   r   rf   r   r   nextr   ri   rj   rk   corenlp_parserrm   rn   ro   parsed_datas         r   
test_parsezTestParserAPI.test_parse  s     ..0  $*)*.3()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $))*.5()-2 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $*)*.3()-4s@*F $*)*.3()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $))*.5()-2 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@-F $*)*.3()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $))*.5()-2 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@5B  B &)&(4523%&%*,1#'$)
 &)&)4523%&%,,3#'$+
 &)&)4624%&%,,3#'$+
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,3#($+
 &)&)4624%&%+,2#'$*
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,2#'$*
 &(&)4624%&%*,1#'$)
sdMkmo
b	 #,9I"JDJJL  $TE7 3 $TG9 5 $TG9 5 $TE7 3	   $TD	,B+C D $$((,TF8(<(,,004TE70C04TF80D04TE70C-.)*
%&!"!#&
P >//=>779(&1 	8 	
 	+6r   c                    t        j                         }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dddddddddddddddddddddg	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ddddddddddddddddddddg	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ddddddddddddddddddddg	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$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ddd 	ddd0d1dddd!dd 	ddd2d3dddd&dd 	g	d4gi}t        |5      |_        d6j	                         }t        dt        dg d7      t        dg d8      g      }t        |j                  |            }|j                  j                  d6d9d:i;       | j                  ||j                                y )<Nr   r|   r*   r   r   r~   r   r!   r   r    r   r   r,   r   r0   r   r   r   r:   r   rE   r   r>   r   rB   r   r   r   r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r9   r=   r   r@   r   rA   r   r   r   )r   r   r   r'   rH   r`   r   )r   r   r   )r   r   r   r   r   rc   )r   CoreNLPDependencyParserr   rf   r   r   r   r   ri   rj   treer   s         r   test_dependency_parserz$TestParserAPI.test_dependency_parserX  sp    88:  $*)*.5()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $+)*.3()-4 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $*)*.3()-4s@*F $*)*.5()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $+)*.3()-4 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@-F $*)*.5()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $+)*.3()-4 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@5B  &)&(4523%&%*,1#'$)
 &)&)4523%&%,,3#'$+
 &)&)4624%&%,,3#'$+
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,3#($+
 &)&)4624%&%+,2#'$*
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,2#'$*
 &(&)4624%&%*,1#'$)
sdKjln
`	 #,9I"JDJJLU56U34
 >//=>779(&1 	8 	
 	+*:*:*<=r   N)rr   rs   rt   r   r   ru   r   r   r   r     s    e7ND>r   r   )__doc__unittestr   unittest.mockr   r   
nltk.parser   	nltk.treer   r   r   r   rw   r   ru   r   r   <module>r      sS     #   
$X<x X<vnCH nCbl
>H l
>r   