@@ -103,25 +103,31 @@ def generator(doc):
103103
104104 return forms
105105
106+ # the following two may only be accessed after_WordNetBuiltin._load_wordnet has
107+ # been called.
108+
109+ _wordnet_pos_to_type = {}
110+ _wordnet_type_to_pos = {}
111+
106112try :
107113 import nltk
108114
109- _wordnet_pos_to_type = {
110- nltk .corpus .wordnet .VERB : 'Verb' ,
111- nltk .corpus .wordnet .NOUN : 'Noun' ,
112- nltk .corpus .wordnet .ADJ : 'Adjective' ,
113- nltk .corpus .wordnet .ADJ_SAT : 'Adjective' ,
114- nltk .corpus .wordnet .ADV : 'Adverb' ,
115- }
116- _wordnet_type_to_pos = {
117- 'Verb' : [nltk .corpus .wordnet .VERB ],
118- 'Noun' : [nltk .corpus .wordnet .NOUN ],
119- 'Adjective' : [nltk .corpus .wordnet .ADJ , nltk .corpus .wordnet .ADJ_SAT ],
120- 'Adverb' : [nltk .corpus .wordnet .ADV ],
121- }
115+ def _init_nltk_maps ():
116+ _wordnet_pos_to_type .update ({
117+ nltk .corpus .wordnet .VERB : 'Verb' ,
118+ nltk .corpus .wordnet .NOUN : 'Noun' ,
119+ nltk .corpus .wordnet .ADJ : 'Adjective' ,
120+ nltk .corpus .wordnet .ADJ_SAT : 'Adjective' ,
121+ nltk .corpus .wordnet .ADV : 'Adverb' ,
122+ })
123+ _wordnet_type_to_pos .update ({
124+ 'Verb' : [nltk .corpus .wordnet .VERB ],
125+ 'Noun' : [nltk .corpus .wordnet .NOUN ],
126+ 'Adjective' : [nltk .corpus .wordnet .ADJ , nltk .corpus .wordnet .ADJ_SAT ],
127+ 'Adverb' : [nltk .corpus .wordnet .ADV ],
128+ })
122129except ImportError :
123- _wordnet_pos_to_type = {}
124- _wordnet_type_to_pos = {}
130+ pass
125131
126132try :
127133 import spacy
@@ -769,6 +775,7 @@ def _language_name(self, evaluation, options):
769775 def _init_wordnet (self , evaluation , language_name , language_code ):
770776 try :
771777 wordnet_resource = nltk .data .find ('corpora/wordnet' )
778+ _init_nltk_maps ()
772779 except LookupError :
773780 evaluation .message (self .get_name (), 'package' , 'wordnet' )
774781 return None
@@ -1070,7 +1077,7 @@ def _parts_of_speech(self, py_word, wordnet, language_code):
10701077 if not parts :
10711078 return Expression ('Missing' , 'NotAvailable' )
10721079 else :
1073- return Expression ('List' , * [String (s ) for s in sorted ([_wordnet_pos_to_type ( p ) for p in parts ])])
1080+ return Expression ('List' , * [String (s ) for s in sorted ([_wordnet_pos_to_type [ p ] for p in parts ])])
10741081
10751082 def _property (self , word , py_property , py_form , evaluation , options ):
10761083 if py_property == 'PorterStem' :
0 commit comments