ó <¿CVc@sxdZddlmZddlZddlZddlmZddlmZddl m Z de fd„ƒYZ dS( uˆ An NLTK interface to the VerbNet verb lexicon For details about VerbNet see: http://verbs.colorado.edu/~mpalmer/projects/verbnet.html iÿÿÿÿ(tunicode_literalsN(t defaultdict(tcompat(tXMLCorpusReadertVerbnetCorpusReadercBseZdZed„ZejdƒZejdƒZejdƒZ dd„Z dd„Z ddddd„Z d„Zdd „Zd „Zd „Zd „Zd „Zd„Zd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZRS(u An NLTK interface to the VerbNet verb lexicon. From the VerbNet site: "VerbNet (VN) (Kipper-Schuler 2006) is the largest on-line verb lexicon currently available for English. It is a hierarchical domain-independent, broad-coverage verb lexicon with mappings to other lexical resources such as WordNet (Miller, 1990; Fellbaum, 1998), Xtag (XTAG Research Group, 2001), and FrameNet (Baker et al., 1998)." For details about VerbNet see: http://verbs.colorado.edu/~mpalmer/projects/verbnet.html cCsTtj||||ƒttƒ|_ttƒ|_i|_i|_|jƒdS(N( Rt__init__Rtlistt_lemma_to_classt_wordnet_to_classt_class_to_fileidt_shortid_to_longidt _quick_index(tselftroottfileidst wrap_etree((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyR&s   u([^\-\.]*)-([\d+.\-]+)$u [\d+.\-]+$uH]+>|cCs[|dkrt|jjƒƒS|j|ƒ}g|jdƒD]}|jdƒ^q>SdS(ux Return a list of all verb lemmas that appear in any class, or in the ``classid`` if specified. uMEMBERS/MEMBERunameN(tNonetsortedRtkeystvnclasstfindalltget(R tclassidRtmember((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pytlemmasHs  cCsm|dkrt|jjƒƒS|j|ƒ}tg|jdƒD]}|jddƒjƒ^qAgƒSdS(u| Return a list of all wordnet identifiers that appear in any class, or in ``classid`` if specified. uMEMBERS/MEMBERuwnuN( RRRRRtsumRRtsplit(R RRR((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyt wordnetidsUs  c Cstg||||gD]}|dk r|^qƒdkrLtdƒ‚n|dk rŠg|jjƒD]\}}||krh|^qhS|dk r¡|j|S|dk r¸|j|S|dk rü|j|ƒ}g|jdƒD]} | j dƒ^qãSt |jj ƒƒSdS(uS Return a list of the verbnet class identifiers. If a file identifier is specified, then return only the verbnet class identifiers for classes (and subclasses) defined by that file. If a lemma is specified, then return only verbnet class identifiers for classes that contain that lemma as a member. If a wordnetid is specified, then return only identifiers for classes that contain that wordnetid as a member. If a classid is specified, then return only identifiers for subclasses of the specified verbnet class. iu:Specify at most one of: fileid, wordnetid, fileid, classiduSUBCLASSES/VNSUBCLASSuIDN( tlenRt ValueErrorR titemsRRRRRRR( R tlemmat wordnetidtfileidRtxtctftxmltreetsubclass((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pytclassidsbs !      &cCsÎ||jkr|j|ƒS|j|ƒ}||jkrº|j|j|ƒ}|j|ƒ}||jdƒkrx|SxO|jdƒD]}||jdƒkrˆ|SqˆWtsÊt‚ntd|ƒ‚dS(u• Return an ElementTree containing the xml for the specified verbnet class. :param fileid_or_classid: An identifier specifying which class should be returned. Can be a file identifier (such as ``'put-9.1.xml'``), or a verbnet class identifier (such as ``'put-9.1'``) or a short verbnet class identifier (such as ``'9.1'``). uIDu .//VNSUBCLASSuUnknown identifier %sN( t_fileidstxmltlongidR RRtFalsetAssertionErrorR(R tfileid_or_classidRR!ttreeR&((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyR€s  cCsg|dkr|jSt|tjƒr<|j|j|ƒgSg|D]}|j|j|ƒ^qCSdS(u¼ Return a list of fileids that make up this corpus. If ``vnclass_ids`` is specified, then return the fileids that make up the specified verbnet class(es). N(RR(t isinstanceRt string_typesR R*(R t vnclass_idst vnclass_id((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyR s  cCs1x*|jD]}|j|j|ƒ|ƒq WdS(u+ Initialize the indexes ``_lemma_to_class``, ``_wordnet_to_class``, and ``_class_to_fileid`` by scanning through the corpus fileids. This is fast with cElementTree (<0.1 secs), but quite slow (>10 secs) with the python implementation of ElementTree. N(R(t _index_helperR)(R R!((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyt_index³scCsÎ|jdƒ}||j|<||j|j|ƒtgroupR(R R*R=((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyR5øs  csÒt|tjƒr$ˆj|ƒ}n|jdƒd}|ˆj|ddƒd7}|ˆj|ddƒd7}|d7}|ˆj|ddƒd7}|d7}|dj‡fd†|j d ƒDƒƒ7}|S( uï Return a string containing a pretty-printed representation of the given verbnet class. :param vnclass: A verbnet class identifier; or an ElementTree containing the xml contents of a verbnet class. uIDu tindentu u Thematic roles: u u Frames: c3s$|]}ˆj|ddƒVqdS(RCu N(t pprint_frame(t.0tvnframe(R (sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pys su FRAMES/FRAME( R/RR0RRtpprint_subclassestpprint_memberstpprint_themrolestjoinR(R Rts((R sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pytpprints  ucCs”t|tjƒr$|j|ƒ}ng|jdƒD]}|jdƒ^q4}|sadg}nddj|ƒ}tj|dd|d|d ƒS( u Return a string containing a pretty-printed representation of the given verbnet class's subclasses. :param vnclass: A verbnet class identifier; or an ElementTree containing the xml contents of a verbnet class. uSUBCLASSES/VNSUBCLASSuIDu(none)u Subclasses: u iFtinitial_indenttsubsequent_indentu ( R/RR0RRRRJttextwraptfill(R RRCR&t subclassesRK((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyRGs( cCs”t|tjƒr$|j|ƒ}ng|jdƒD]}|jdƒ^q4}|sadg}nddj|ƒ}tj|dd|d|d ƒS( u Return a string containing a pretty-printed representation of the given verbnet class's member verbs. :param vnclass: A verbnet class identifier; or an ElementTree containing the xml contents of a verbnet class. uMEMBERS/MEMBERunameu(none)u Members: u iFRMRNu ( R/RR0RRRRJRORP(R RRCRtmembersRK((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyRH/s( cCs¾t|tjƒr$|j|ƒ}ng}x„|jdƒD]s}|d|jdƒ}g|jdƒD]}d|j^qg}|r |ddj|ƒ7}n|j|ƒq:Wdj|ƒS( u Return a string containing a pretty-printed representation of the given verbnet class's thematic roles. :param vnclass: A verbnet class identifier; or an ElementTree containing the xml contents of a verbnet class. uTHEMROLES/THEMROLEu* utypeuSELRESTRS/SELRESTRu%(Value)s%(type)su[%s]u u ( R/RR0RRRtattribRJR6(R RRCtpiecestthemroletpiecetrestrt modifiers((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyRIAs&cCs`|j||ƒd}||j||dƒd7}||d7}||j||dƒ7}|S(uÔ Return a string containing a pretty-printed representation of the given verbnet frame. :param vnframe: An ElementTree containing the xml contents of a verbnet frame. u u Syntax: u Semantics: u (tpprint_descriptiont pprint_syntaxtpprint_semantics(R RFRCRK((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyRDWs cCsP|jdƒ}||jd}|jddƒrL|d|jdƒ7}n|S(uà Return a string containing a pretty-printed representation of the given verbnet frame description. :param vnframe: An ElementTree containing the xml contents of a verbnet frame. u DESCRIPTIONuprimaryu secondaryuu (%s)(tfindRSR(R RFRCtdescrRK((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyRYes cCsÏg}xµ|jdƒD]¤}|j}g}d|jkrS|j|jdƒƒn|g|jdƒ|jdƒD]}d|j^qs7}|r­|ddj|ƒ7}n|j|ƒqW|dj|ƒS(uÛ Return a string containing a pretty-printed representation of the given verbnet frame syntax. :param vnframe: An ElementTree containing the xml contents of a verbnet frame. uSYNTAXuvalueuSELRESTRS/SELRESTRuSYNRESTRS/SYNRESTRu%(Value)s%(type)su[%s]u (R\ttagRSR6RRRJ(R RFRCRTteltRVRXRW((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyRZss  (cs‘g}xk|jdƒD]Z}g|jdƒD]}|jdƒ^q,}|jd|jdƒdj|ƒfƒqWdj‡fd†|DƒƒS(uÞ Return a string containing a pretty-printed representation of the given verbnet frame semantics. :param vnframe: An ElementTree containing the xml contents of a verbnet frame. uSEMANTICS/PREDuARGS/ARGuvalueu%s(%s)u, u c3s|]}dˆ|fVqdS(u%s* %sN((RERV(RC(sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pys –s(RRR6RJ(R RFRCRTtpredtargtargs((RCsl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyR[Šs +-N(t__name__t __module__t__doc__R+RtretcompileR>R@R8RRRR'RRR4R3R R*R5RLRGRHRIRDRYRZR[(((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyRs.     !        ( Ret __future__RRfROt collectionsRtnltkRtnltk.corpus.reader.xmldocsRR(((sl/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/corpus/reader/verbnet.pyt s