46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
self.sSimplifiedWord = st.simplifyWord(sWord)
self.nDistLimit = nDistLimit if nDistLimit >= 0 else (len(sWord) // 3) + 1 # used in suggest()
self.nMinDist = 1000
# Temporary sets
self.aAllSugg = set() # All suggestions, even the one rejected
self.dAccSugg = {} # Accepted suggestions
# Parameters
self.nSuggLimit = nSuggLimit
self.nTempSuggLimit = nSuggLimit * 6
def addSugg (self, sSugg, nDeep=0):
"add a suggestion"
if sSugg in self.aAllSugg:
return
self.aAllSugg.add(sSugg)
nSimDist = st.distanceSift4(self.sSimplifiedWord, st.simplifyWord(sSugg))
st.showDistance(self.sSimplifiedWord, st.simplifyWord(sSugg))
if nSimDist < self.nMinDist:
self.nMinDist = nSimDist
if nSimDist <= (self.nMinDist + 1):
nDist = st.distanceJaroWinkler(self.sWord, sSugg)
st.showDistance(self.sWord, sSugg)
self.dAccSugg[sSugg] = min(nDist, nSimDist+1)
if len(self.dAccSugg) > self.nTempSuggLimit:
self.nDistLimit = -1 # suggest() ends searching when this variable = -1
self.nDistLimit = min(self.nDistLimit, self.nMinDist+1)
def getSuggestions (self):
"return a list of suggestions"
|
<
|
|
|
|
|
>
|
|
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
self.sSimplifiedWord = st.simplifyWord(sWord)
self.nDistLimit = nDistLimit if nDistLimit >= 0 else (len(sWord) // 3) + 1 # used in suggest()
self.nMinDist = 1000
# Temporary sets
self.aAllSugg = set() # All suggestions, even the one rejected
self.dAccSugg = {} # Accepted suggestions
# Parameters
self.nSuggLimit = nSuggLimit # number of returned suggestions
self.nTempSuggLimit = nSuggLimit * 6 # limit of accepted suggestions (ends search over this limit)
def addSugg (self, sSugg, nDeep=0):
"add a suggestion to the suggestion list"
if sSugg in self.aAllSugg:
return
self.aAllSugg.add(sSugg)
nSimDist = st.distanceSift4(self.sSimplifiedWord, st.simplifyWord(sSugg))
#st.showDistance(self.sSimplifiedWord, st.simplifyWord(sSugg))
if nSimDist < self.nMinDist:
self.nMinDist = nSimDist
if nSimDist <= (self.nMinDist + 1):
nDist = min(st.distanceDamerauLevenshtein(self.sWord, sSugg), st.distanceDamerauLevenshtein(self.sSimplifiedWord, st.simplifyWord(sSugg)))
#print(">", end="")
#st.showDistance(self.sWord, sSugg)
self.dAccSugg[sSugg] = min(nDist, nSimDist+1)
if len(self.dAccSugg) > self.nTempSuggLimit:
self.nDistLimit = -1 # suggest() ends searching when this variable = -1
self.nDistLimit = min(self.nDistLimit, self.nMinDist+1)
def getSuggestions (self):
"return a list of suggestions"
|