ó <¿CVc@@s”dZddlmZmZmZddlmZddlmZddl m Z ddl Z de j fd„ƒYZ ed kre jƒndS( u Unit tests for nltk.tgrep. i(tabsolute_importtprint_functiontunicode_literals(tb(t ParentedTree(ttgrepNtTestSequenceFunctionscB@seZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(u5 Class containing unit tests for nltk.tgrep. cC@setjdƒ}|j|dddddddd d d d dd dddddd dddgƒdS(u. Simple test of tokenization. u%A .. (B !< C . D) | ![<< (E , F) $ G]uAu..u(uBu!udgƒ|jtjd?ƒdd@dgƒ|jtjdAƒddBddgƒ|jtjdCƒddBddgƒ|jtjdDƒddBddgƒ|jtjdEƒddBd dgƒ|jtjdFƒddBd dgƒ|jtjdGƒddBddgƒ|jtjdHƒddBddgƒ|jtjdIƒddBddgƒ|jtjdJƒddBddgƒ|jtjdKƒddBddgƒ|jtjdLƒddBddgƒ|jtjdMƒddBddgƒ|jtjdNƒddBddgƒ|jtjdOƒddBddgƒ|jtjdPƒddBd dgƒ|jtjdQƒddBd"dgƒ|jtjdRƒddBd$dgƒ|jtjdSƒddBd&dgƒ|jtjdTƒddBd(dgƒ|jtjdUƒddBd*dgƒ|jtjdVƒddBd,dgƒ|jtjdWƒddBd.dgƒ|jtjdXƒddBd0dgƒ|jtjdYƒddBd2dgƒ|jtjdZƒddBd4dgƒ|jtjd[ƒddBd6dgƒ|jtjd\ƒddBd8dgƒ|jtjd]ƒddBd:dgƒ|jtjd^ƒddBd<dgƒ|jtjd_ƒddBd>dgƒ|jtjd`ƒddBd@dgƒdaS(bu8 Test tokenization of basic link types. uABu>uA<3Bu<3uA>3Bu>3uA<,Bu<,uA>,Bu>,uA<-3Bu<-3uA>-3Bu>-3uA<-Bu<-uA>-Bu>-uA<'Bu<'uA>'Bu>'uA<:Bu<:uA>:Bu>:uA<>Bu>>uA<<,Bu<<,uA>>,Bu>>,uA<<'Bu<<'uA>>'Bu>>'uA<<:Bu<<:uA>>:Bu>>:uA.Bu.uA,Bu,uA..Bu..uA,,Bu,,uA$Bu$uA$.Bu$.uA$,Bu$,uA$..Bu$..uA$,,Bu$,,uA!BuA!<3BuA!>3BuA!<,BuA!>,BuA!<-3BuA!>-3BuA!<-BuA!>-BuA!<'BuA!>'BuA!<:BuA!>:BuA!<>BuA!<<,BuA!>>,BuA!<<'BuA!>>'BuA!<<:BuA!>>:BuA!.BuA!,BuA!..BuA!,,BuA!$BuA!$.BuA!$,BuA!$..BuA!$,,BN(RRR(R ((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttest_tokenize_link_types-s”"""""""""""""""""""""""""""""""%%%%%%%%%%%%%%%%%%%c C@s|jtjdƒdddgƒ|jtjdƒdgƒ|jtjdƒddddd gƒ|jtjd ƒdddd dd gƒ|jtjd ƒdd dddddd dd dg ƒ|jtjdƒdddddd dgƒ|jtjdƒdddddddddddg ƒ|jtjdƒdddddddddg ƒ|jtjdƒdddddddddddg ƒ|jtjd ƒdddddddddg ƒ|jtjd!ƒdddd"ddgƒd#S($uJ Test tokenization of the TGrep2 manual example patterns. uNP < PPuNPu NP | >> VP]u!u[u>u>>u]uNP << (PP . VP)u(u)uNP <' (PP <, (IN < on))u<'u<,uINuonuS < (A < B) < CuSuAuBuCuS < ((A < B) < C)uS < (A < B < C)uA3B"3B"uCN(RRR(R ((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttest_tokenize_quotingšscC@s |jtjdƒdgƒ|jtjdƒdgƒ|jtjdƒdgƒ|jtjdƒdgƒ|jtjdƒddgƒ|jtjdƒdd d dgƒ|jtjd ƒdd d d dgƒ|jtjd ƒdd d d d dgƒd S(u2 Test tokenization of node names. uRobertu /^[Bb]ob/u*u__uN()uN(u)uN(0,)u0u,uN(0,0)uN(0,0,)N(RRR(R ((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttest_tokenize_nodenames¢s cC@sY|jtjdƒdddddddddd d d dd d d dd dd gƒdS(u9 Test tokenization of macro definitions. u4@ NP /^NP/; @ NN /^NN/; @NP [!< NP | < @NN] !$.. @NNu@uNPu/^NP/u;uNNu/^NN/u@NPu[u!ud?d@dAdBggƒtjdƒ}|jttjd|gƒƒdCggƒ|jttjd|gƒƒdDdEggƒ|jttjd|gƒƒdFdGdHdIdJdKdLdMggƒ|jttjd|gƒƒdNggƒtjdƒ}|jttjd|gƒƒdOggƒ|jttjd|gƒƒdPdQdRdSdTdUdVdWggƒtjdƒ}|jttjd|gƒƒdXdYdZd[d\d]d^ggƒ|jttjd|gƒƒd_d`dadbdcdddeggƒdS(fuC Test matching nodes based on dominance relations. u(S (A (T x)) (B (N x)))u* < Tiu * < T > Su* !< Tiu * !< T > Su* > Au* > Bu* !> Bu * !> B >> Su* >> Su* >>, Su* >>' Su* << Tu* <<' Tu* <<1 Nu* !<< Tu(S (A (T x)) (B (T x) (N x )))u* <: Tu* !<: Tu * !<: T > Su(S (T (A x) (B x)) (T (C x)))u* >: Tu* !>: Tu=(S (A (B (C (D (E (T x)))))) (A (B (C (D (E (T x))) (N x)))))u* <<: Tu* >>: AN(i(i((ii(iii(i(ii(iii(i(ii(ii((i(ii(iii(i(iii(i(ii(i(i(ii(i(ii(i(ii(i(ii((i(i(i(ii(iii(i(ii(iii(i(i(i((ii(iii(i(ii(iii(ii(iii(i(ii((i(ii(iii(ii(iii(i(iii(i(ii(iii(iiii(iiiii(iiii(iiiii(ii(iii(iiii(iiiii(iiiiii(ii(iii(RRRRRR(R R((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttests_rel_dominance&sl            cC@s8tjdƒ}|jtjttjd|gƒƒdS(uC Test error handling of undefined tgrep operators. u(S (A (T x)) (B (N x)))u* >>> SN(RRt assertRaisesRtTgrepExceptionRR(R R((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttest_bad_operatores cC@s{tjdƒ}d}|jttj||gƒƒddggƒd}|jttj||gƒƒd d ggƒdS( u` Test that comments are correctly filtered out of tgrep search strings. u(S (NN x) (NP x) (NN x))u= @ NP /^NP/; @ NN /^NN/; @NN iiug # macros @ NP /^NP/; @ NN /^NN/; # search string @NN N(i(i(i(i(RRRRRR(R Rtsearch1tsearch2((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyt test_commentsoscC@sítjdƒ}|jttjd|gƒƒd ggƒ|jttjd|gƒƒd ggƒ|jttjd|gƒƒd ggƒ|jttjd|gƒƒd ggƒ|jttjd|gƒƒddggƒd S(u7 Test matching sister nodes in a tree. u(S (A x) (B x) (C x))u* $. Biu* $.. Bu* $, Biu* $,, Bu* $ BN(i(i(i(i(i(i(RRRRRR(R R((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttest_rel_sister_nodes‡s ++++cC@sÒtjdƒ}|jttjd|gƒƒdggƒ|jttjd|gƒƒdggƒ|jttjd|gƒƒdggƒ|jttjd|gƒƒdggƒ|jttjd |gƒƒdggƒ|jttjd |gƒƒdggƒ|jttjd |gƒƒdggƒ|jttjd |gƒƒdggƒtjd ƒ}|jttjd|gƒƒdggƒ|jttjd|gƒƒd ggƒ|jttjd|gƒƒd!ggƒ|jttjd|gƒƒd"ggƒ|jttjd|gƒƒd#ggƒ|jttjd|gƒƒd$ggƒ|jttjd|gƒƒd%ggƒ|jttjd|gƒƒd&ggƒdS('uP Test matching nodes based on their index in their parent node. u(S (A x) (B x) (C x))u* >, Siu* >1 Su* >2 Siu* >3 Siu* >' Su* >-1 Su* >-2 Su* >-3 SuE(S (D (A x) (B x) (C x)) (E (B x) (C x) (A x)) (F (C x) (A x) (B x)))u* <, Au* <1 Au* <2 Au* <3 Au* <' Au* <-1 Au* <-2 Au* <-3 AN(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(i(RRRRRR(R R((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttests_rel_indexed_children’s&++++++++ +++++++c C@s¶tjdƒ}|jttjd|gƒƒdddggƒ|jttjd|gƒƒddggƒ|jttjd|gƒƒdddddggƒ|jttjd|gƒƒdddddddggƒ|jttjd|gƒƒdd ggƒ|jttjd |gƒƒd!d"d#d$ggƒ|jttjd |gƒƒd%d&d'd(d)d*ggƒ|jttjd |gƒƒd+d,d-d.ggƒd S(/uD Test matching nodes based on precedence relations. uV(S (NP (NP (PP x)) (NP (AP x))) (VP (AP (X (PP x)) (Y (AP x)))) (NP (RC (NP (AP x)))))u* . Xiiu* . Yu* .. Xu* .. Yu* , Xu* , Yiu* ,, Xu* ,, YN(i(ii(iii(iii(iiii(i(ii(iii(ii(iii(i(ii(iii(ii(iii(iii(iiii(iii(iiii(i(ii(iii(iiii(iii(iiii(i(ii(iii(iiii(i(ii(iii(iiii(RRRRRR(R R((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttest_rel_precedence«s& cC@stjdƒ}|jttjd|gƒƒdggƒtjdƒ}|jttjd|gƒƒdggƒtjdƒ}|jttjd|gƒƒddggƒtjd ƒ}|jttjd |gƒƒddggƒtjd ƒ}|jttjd |gƒƒdggƒtjdƒ}|jttjd|gƒƒdggƒtjdƒ}|jttjd|gƒƒdggƒtjdƒ}|jttjd|gƒƒdggƒ|jttjd|gƒƒd ggƒdS(!uA Test the Basic Examples from the TGrep2 manual. u(S (NP (AP x)) (NP (PP x)))uNP < PPiu$(S (NP x) (VP x) (NP (PP x)) (VP x))u NP << PP . VPiu6(S (NP (AP x)) (NP (PP x)) (NP (DET x) (NN x)) (VP x))uNP << PP | . VPuX(S (NP (NP (PP x)) (NP (AP x))) (VP (AP (NP (PP x)) (NP (AP x)))) (NP (RC (NP (AP x)))))uNP !<< PP [> NP | >> VP]iu:(S (NP (AP (PP x) (VP x))) (NP (AP (PP x) (NP x))) (NP x))uNP << (PP . VP)ue(S (NP (DET a) (NN cat) (PP (IN on) (NP x))) (NP (DET a) (NN cat) (PP (IN on) (NP x)) (PP x)) (NP x))uNP <' (PP <, (IN < on))u;(S (S (C x) (A (B x))) (S (C x) (A x)) (S (D x) (A (B x))))uS < (A < B) < Cu/(S (S (A (B x) (C x))) (S (S (C x) (A (B x)))))uS < ((A < B) < C)uS < (A < B < C)N(i(i(i(i(ii(iii(i(i(i(i(i(RRRRRR(R R((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyt test_examplesÅs>         cC@sftjdƒ}|jttjd|gƒƒddggƒ|jtjttjd|gƒƒdS( u8 Test defining and using tgrep2 macros. ui(VP (VB sold) (NP (DET the) (NN heiress)) (NP (NN deed) (PREP to) (NP (DET the) (NN school) (NN house))))u+@ NP /^NP/; @ NN /^NN/; @NP !< @NP !$.. @NNiiu,@ NP /^NP/; @ NN /^NN/; @CNP !< @NP !$.. @NNN(i(ii(RRRRRRR.R/(R R((sk/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/test/unit/test_tgrep.pyttest_use_macros s  cC@s|jtjdƒddddddddddd d d g ƒ|jtjd ƒdddd d dddd dddddd d d gƒdS(u#Test tokenization of labeled nodes.u!S < @SBJ < (@VP < (@VB $.. @OBJ))uSu s ÿÿ^