Overview
| Comment: | [core][py] ibdawg: debugging |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk | core |
| Files: | files | file ages | folders |
| SHA3-256: |
cbe1422160e68702fd792c2cc8edd0e9 |
| User & Date: | olr on 2017-11-06 14:21:13 |
| Other Links: | manifest | tags |
Context
|
2017-11-06
| ||
| 17:21 | [core][py] timer for testing check-in: 8ddc15536e user: olr tags: trunk, core | |
| 14:21 | [core][py] ibdawg: debugging check-in: cbe1422160 user: olr tags: trunk, core | |
| 11:31 | [fr] faux positif: se dire (part. passé) check-in: 57d0adc08a user: olr tags: trunk, fr | |
Changes
Modified gc_core/py/ibdawg.py from [816500e455] to [08bbb9ff98].
1 2 3 4 5 6 7 8 9 10 11 12 | #!python3 import os import traceback import pkgutil import re from itertools import chain from . import str_transform as st from . import char_player as cp from .echo import echo | > > > < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!python3
import os
import traceback
import pkgutil
import re
from itertools import chain
#import logging
#logging.basicConfig(filename="suggestions.log", level=logging.DEBUG)
from . import str_transform as st
from . import char_player as cp
from .echo import echo
class IBDAWG:
"""INDEXABLE BINARY DIRECT ACYCLIC WORD GRAPH"""
def __init__ (self, sDicName):
self.by = pkgutil.get_data(__package__, "_dictionaries/" + sDicName)
if not self.by:
|
| ︙ | ︙ | |||
205 206 207 208 209 210 211 |
# we add what we removed
return list(map(lambda sSug: sPfx + sSug + sSfx, aSugg))
return aSugg
def _suggest (self, sRemain, nMaxDel=0, nMaxHardRepl=0, nDeep=0, iAddr=0, sNewWord="", bAvoidLoop=False):
"returns a set of suggestions"
# recursive function
| | | > | 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
# we add what we removed
return list(map(lambda sSug: sPfx + sSug + sSfx, aSugg))
return aSugg
def _suggest (self, sRemain, nMaxDel=0, nMaxHardRepl=0, nDeep=0, iAddr=0, sNewWord="", bAvoidLoop=False):
"returns a set of suggestions"
# recursive function
#logging.info((nDeep * " ") + sNewWord + ":" + sRemain)
aSugg = set()
if not sRemain:
if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
#logging.info((nDeep * " ") + "__" + sNewWord + "__")
aSugg.add(sNewWord)
for sTail in self._getTails(iAddr):
#logging.info((nDeep * " ") + "__" + sNewWord+sTail + "__")
aSugg.add(sNewWord+sTail)
return aSugg
cCurrent = sRemain[0:1]
for cChar, jAddr in self._getSimilarArcs(cCurrent, iAddr):
aSugg.update(self._suggest(sRemain[1:], nMaxDel, nMaxHardRepl, nDeep+1, jAddr, sNewWord+cChar))
if not bAvoidLoop: # avoid infinite loop
if cCurrent == sRemain[1:2]:
|
| ︙ | ︙ |