1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# Spellchecker
# Wrapper for the IBDAWG class.
# Useful to check several dictionaries at once.
# To avoid iterating over a pile of dictionaries, it is assumed that 3 are enough:
# - the main dictionary, bundled with the package
# - the extended dictionary
# - the community dictionary, added by an organization
# - the personal dictionary, created by the user for its own convenience
import traceback
from . import ibdawg
from . import tokenizer
dDefaultDictionaries = {
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# Spellchecker
# Wrapper for the IBDAWG class.
# Useful to check several dictionaries at once.
# To avoid iterating over a pile of dictionaries, it is assumed that 3 are enough:
# - the main dictionary, bundled with the package
# - the extended dictionary
# - the community dictionary, added by an organization
# - the personal dictionary, created by the user for its own convenience
import importlib
import traceback
from . import ibdawg
from . import tokenizer
dDefaultDictionaries = {
|
︙ | | | ︙ | |
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
self.oExtendedDic = self._loadDictionary(sfExtendedDic)
self.oCommunityDic = self._loadDictionary(sfCommunityDic)
self.oPersonalDic = self._loadDictionary(sfPersonalDic)
self.bExtendedDic = bool(self.oExtendedDic)
self.bCommunityDic = bool(self.oCommunityDic)
self.bPersonalDic = bool(self.oPersonalDic)
self.oTokenizer = None
# storage
self.bStorage = False
self._dMorphologies = {} # key: flexion, value: list of morphologies
self._dLemmas = {} # key: flexion, value: list of lemmas
def _loadDictionary (self, source, bNecessary=False):
"returns an IBDAWG object"
|
>
>
>
|
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
self.oExtendedDic = self._loadDictionary(sfExtendedDic)
self.oCommunityDic = self._loadDictionary(sfCommunityDic)
self.oPersonalDic = self._loadDictionary(sfPersonalDic)
self.bExtendedDic = bool(self.oExtendedDic)
self.bCommunityDic = bool(self.oCommunityDic)
self.bPersonalDic = bool(self.oPersonalDic)
self.oTokenizer = None
# Default suggestions
self.dDefaultSugg = None
self.loadSuggestions(sLangCode)
# storage
self.bStorage = False
self._dMorphologies = {} # key: flexion, value: list of morphologies
self._dLemmas = {} # key: flexion, value: list of lemmas
def _loadDictionary (self, source, bNecessary=False):
"returns an IBDAWG object"
|
︙ | | | ︙ | |
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
def deactivateCommunityDictionary (self):
self.bCommunityDic = False
def deactivatePersonalDictionary (self):
self.bPersonalDic = False
# Storage
def activateStorage (self):
self.bStorage = True
def deactivateStorage (self):
|
>
>
>
>
>
>
>
>
>
>
>
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
def deactivateCommunityDictionary (self):
self.bCommunityDic = False
def deactivatePersonalDictionary (self):
self.bPersonalDic = False
# Default suggestions
def loadSuggestions (self, sLangCode):
try:
suggest_module = importlib.import_module("."+sLangCode, "graphspell")
except:
print("No suggestion module for language <"+sLangCode+">")
return
self.dDefaultSugg = suggest_module.dSugg
# Storage
def activateStorage (self):
self.bStorage = True
def deactivateStorage (self):
|
︙ | | | ︙ | |
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
if sWord not in self._dLemmas:
self.getMorph(sWord)
return self._dLemmas[sWord]
return set([ s[1:s.find(" ")] for s in self.getMorph(sWord) ])
def suggest (self, sWord, nSuggLimit=10):
"generator: returns 1, 2 or 3 lists of suggestions"
yield self.oMainDic.suggest(sWord, nSuggLimit)
if self.bExtendedDic:
yield self.oExtendedDic.suggest(sWord, nSuggLimit)
if self.bCommunityDic:
yield self.oCommunityDic.suggest(sWord, nSuggLimit)
if self.bPersonalDic:
yield self.oPersonalDic.suggest(sWord, nSuggLimit)
|
>
>
>
|
|
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
|
if sWord not in self._dLemmas:
self.getMorph(sWord)
return self._dLemmas[sWord]
return set([ s[1:s.find(" ")] for s in self.getMorph(sWord) ])
def suggest (self, sWord, nSuggLimit=10):
"generator: returns 1, 2 or 3 lists of suggestions"
if self.dDefaultSugg and sWord in self.dDefaultSugg:
yield self.dDefaultSugg[sWord].split("|")
else:
yield self.oMainDic.suggest(sWord, nSuggLimit)
if self.bExtendedDic:
yield self.oExtendedDic.suggest(sWord, nSuggLimit)
if self.bCommunityDic:
yield self.oCommunityDic.suggest(sWord, nSuggLimit)
if self.bPersonalDic:
yield self.oPersonalDic.suggest(sWord, nSuggLimit)
|
︙ | | | ︙ | |