@@ -103,38 +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- _lazy_wordnet_pos_to_type = {}
110- _lazy_wordnet_type_to_pos = {}
111-
112- def _wordnet_pos_to_type (p ):
113- if not _lazy_wordnet_pos_to_type :
114- _lazy_wordnet_pos_to_type .update ({
115- nltk .corpus .wordnet .VERB : 'Verb' ,
116- nltk .corpus .wordnet .NOUN : 'Noun' ,
117- nltk .corpus .wordnet .ADJ : 'Adjective' ,
118- nltk .corpus .wordnet .ADJ_SAT : 'Adjective' ,
119- nltk .corpus .wordnet .ADV : 'Adverb' ,
120- })
121- return _lazy_wordnet_pos_to_type [p ]
122-
123- def _wordnet_type_to_pos (t ):
124- if not _lazy_wordnet_type_to_pos :
125- _lazy_wordnet_type_to_pos .update ({
126- 'Verb' : [nltk .corpus .wordnet .VERB ],
127- 'Noun' : [nltk .corpus .wordnet .NOUN ],
128- 'Adjective' : [nltk .corpus .wordnet .ADJ , nltk .corpus .wordnet .ADJ_SAT ],
129- 'Adverb' : [nltk .corpus .wordnet .ADV ],
130- })
131- return _lazy_wordnet_type_to_pos [t ]
132- except (ImportError , LookupError ):
133- def _wordnet_pos_to_type (p ):
134- raise ValueError ('Needed NLTK corpora are not installed.' )
135-
136- def _wordnet_type_to_pos (t ):
137- raise ValueError ('Needed NLTK corpora are not installed.' )
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+ })
129+ except ImportError :
130+ pass
138131
139132try :
140133 import spacy
@@ -782,6 +775,7 @@ def _language_name(self, evaluation, options):
782775 def _init_wordnet (self , evaluation , language_name , language_code ):
783776 try :
784777 wordnet_resource = nltk .data .find ('corpora/wordnet' )
778+ _init_nltk_maps ()
785779 except LookupError :
786780 evaluation .message (self .get_name (), 'package' , 'wordnet' )
787781 return None
@@ -852,7 +846,7 @@ def containers():
852846 for lemma in WordProperty ._synonymous_lemmas (syn ):
853847 yield lemma .name ()
854848
855- return what , _wordnet_pos_to_type ( pos ) , containers
849+ return what , _wordnet_pos_to_type [ pos ] , containers
856850
857851 @staticmethod
858852 def syn (syn , wordnet , language_code ):
@@ -1009,7 +1003,7 @@ def _words(self, language_name, type, evaluation):
10091003 if type == 'All' :
10101004 filtered_pos = [None ]
10111005 else :
1012- filtered_pos = _wordnet_type_to_pos ( type )
1006+ filtered_pos = _wordnet_type_to_pos [ type ]
10131007 words = []
10141008 for pos in filtered_pos :
10151009 words .extend (list (wordnet .all_lemma_names (pos , language_code )))
@@ -1083,7 +1077,7 @@ def _parts_of_speech(self, py_word, wordnet, language_code):
10831077 if not parts :
10841078 return Expression ('Missing' , 'NotAvailable' )
10851079 else :
1086- 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 ])])
10871081
10881082 def _property (self , word , py_property , py_form , evaluation , options ):
10891083 if py_property == 'PorterStem' :
0 commit comments