@@ -106,22 +106,35 @@ def generator(doc):
106106try :
107107 import nltk
108108
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- }
122- except ImportError :
123- _wordnet_pos_to_type = {}
124- _wordnet_type_to_pos = {}
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.' )
125138
126139try :
127140 import spacy
@@ -839,7 +852,7 @@ def containers():
839852 for lemma in WordProperty ._synonymous_lemmas (syn ):
840853 yield lemma .name ()
841854
842- return what , _wordnet_pos_to_type [ pos ] , containers
855+ return what , _wordnet_pos_to_type ( pos ) , containers
843856
844857 @staticmethod
845858 def syn (syn , wordnet , language_code ):
@@ -996,7 +1009,7 @@ def _words(self, language_name, type, evaluation):
9961009 if type == 'All' :
9971010 filtered_pos = [None ]
9981011 else :
999- filtered_pos = _wordnet_type_to_pos [ type ]
1012+ filtered_pos = _wordnet_type_to_pos ( type )
10001013 words = []
10011014 for pos in filtered_pos :
10021015 words .extend (list (wordnet .all_lemma_names (pos , language_code )))
0 commit comments