Skip to content

Commit 176df37

Browse files
authored
Merge pull request #594 from poke1024/wordnetfix
Fix for nltk loading problem
2 parents 54a0441 + c6ac08c commit 176df37

1 file changed

Lines changed: 23 additions & 16 deletions

File tree

mathics/builtin/natlang.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
106112
try:
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+
})
122129
except ImportError:
123-
_wordnet_pos_to_type = {}
124-
_wordnet_type_to_pos = {}
130+
pass
125131

126132
try:
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

Comments
 (0)