Grammalecte  Check-in [d78ef84a02]

Overview
Comment:[core][py] small code cleaning
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | core
Files: files | file ages | folders
SHA3-256: d78ef84a02bb09b06171ad27bb3a6c912a8a1c206c2a17dd18ac08d3e73275fe
User & Date: olr on 2017-10-22 09:15:49
Other Links: manifest | tags
Context
2017-10-22
09:17
[core] reduce number of hard replacements (avoid slowness) check-in: 0114e69bdb user: olr tags: trunk, core
09:15
[core][py] small code cleaning check-in: d78ef84a02 user: olr tags: trunk, core
09:07
[core][js] ibdawg: spellchecking suggestion mechanism > hard replacements check-in: c80ec8575d user: olr tags: trunk, core
Changes

Modified gc_core/py/ibdawg.py from [1bb4da37d5] to [465d7a71d5].

188
189
190
191
192
193
194
195
196


197
198
199
200
201
202
203
204
205
206
207
208
209
210
188
189
190
191
192
193
194


195
196
197
198
199

200


201
202
203
204
205
206
207







-
-
+
+



-

-
-







        return l

    def suggest (self, sWord, nMaxSugg=10):
        "returns a set of suggestions for <sWord>"
        aSugg = set()
        nMaxDel = len(sWord) // 5
        nMaxHardRepl = max((len(sWord) - 5) // 2, 1)
        if sWord.istitle():
            aSugg.update(self._suggest(sWord, nMaxDel=nMaxDel, nMaxHardRepl=nMaxHardRepl))
        aSugg.update(self._suggest(sWord, nMaxDel=nMaxDel, nMaxHardRepl=nMaxHardRepl))
        if sWord.istitle():
            aSugg.update(self._suggest(sWord.lower(), nMaxDel=nMaxDel, nMaxHardRepl=nMaxHardRepl))
            aSugg = set(map(lambda sSugg: sSugg.title(), aSugg))
        elif sWord.islower():
            aSugg.update(self._suggest(sWord, nMaxDel=nMaxDel, nMaxHardRepl=nMaxHardRepl))
            aSugg.update(self._suggest(sWord.title(), nMaxDel=nMaxDel, nMaxHardRepl=nMaxHardRepl))
        else:
            aSugg.update(self._suggest(sWord, nMaxDel=nMaxDel, nMaxHardRepl=nMaxHardRepl))
        if not aSugg:
            #print("crush useless chars")
            aSugg.update(self._suggestWithCrushedUselessChars(cp.clearWord(sWord)))
        aSugg = filter(lambda sSugg: not sSugg.endswith("è") and not sSugg.endswith("È"), aSugg) # fr language 
        return sorted(aSugg, key=lambda sSugg: cp.distanceDamerauLevenshtein(sWord, sSugg))[:nMaxSugg]

    def _suggest (self, sRemain, nMaxDel=0, nMaxHardRepl=0, nDeep=0, iAddr=0, sNewWord="", bAvoidLoop=False):