58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
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"
# sort according to distance
lRes = []
lResTmp = sorted(self.dAccSugg.items(), key=lambda x: (x[1], x[0]))
for i in range(min(self.nSuggLimit, len(lResTmp))):
lRes.append(lResTmp[i][0])
#st.showDistance(self.sWord, lResTmp[i][0])
# casing
if self.sWord.isupper():
lRes = list(dict.fromkeys(map(lambda sSugg: sSugg.upper(), lRes)))
elif self.sWord[0:1].isupper():
|
|
|
>
|
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
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.distanceDamerauLevenshteinX(self.sWord, sSugg), st.distanceDamerauLevenshteinX(self.sSimplifiedWord, st.simplifyWord(sSugg)))
#print(">", end="")
#st.showDistance(self.sWord, sSugg)
self.dAccSugg[sSugg] = nDist if " " not in sSugg else nDist+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"
# sort according to distance
lRes = []
lResTmp = sorted(self.dAccSugg.items(), key=lambda x: (x[1], x[0]))
#print("\n>", lResTmp)
for i in range(min(self.nSuggLimit, len(lResTmp))):
lRes.append(lResTmp[i][0])
#st.showDistance(self.sWord, lResTmp[i][0])
# casing
if self.sWord.isupper():
lRes = list(dict.fromkeys(map(lambda sSugg: sSugg.upper(), lRes)))
elif self.sWord[0:1].isupper():
|