Overview
Comment: | [graphspell][cli] select by flexion and by tags |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | cli | graphspell | multid |
Files: | files | file ages | folders |
SHA3-256: |
4e94d8cfc8b92a6e0eb26ffd1ba24127 |
User & Date: | olr on 2018-03-21 17:40:29 |
Other Links: | branch diff | manifest | tags |
Context
2018-03-21
| ||
19:37 | [tb] lexicon editor: search similar words / search by regex check-in: 7735782edd user: olr tags: tb, multid | |
17:40 | [graphspell][cli] select by flexion and by tags check-in: 4e94d8cfc8 user: olr tags: cli, graphspell, multid | |
17:06 | [tb] lexicon editor: ui update > search tab + info tab check-in: 93888e7c05 user: olr tags: tb, multid | |
Changes
Modified grammalecte-cli.py from [150bfbed66] to [3a000dfd52].
︙ | ︙ | |||
186 187 188 189 190 191 192 | for sWord in sText[1:].strip().split(): if sWord: for lSugg in oSpellChecker.suggest(sWord): echo(" | ".join(lSugg)) elif sText.startswith(">"): oSpellChecker.drawPath(sText[1:].strip()) elif sText.startswith("="): | > > > > > > > > | | 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | for sWord in sText[1:].strip().split(): if sWord: for lSugg in oSpellChecker.suggest(sWord): echo(" | ".join(lSugg)) elif sText.startswith(">"): oSpellChecker.drawPath(sText[1:].strip()) elif sText.startswith("="): sSearch = sText[1:].strip() if "=" in sSearch: nCut = sSearch.find("=") sFlexPattern = sSearch[0:nCut] sTagsPattern = sSearch[nCut+1:] else: sFlexPattern = sSearch sTagsPattern = "" for sRes in oSpellChecker.select(sFlexPattern, sTagsPattern): echo(sRes) elif sText.startswith("/+ "): oGrammarChecker.gce.setOptions({ opt:True for opt in sText[3:].strip().split() if opt in oGrammarChecker.gce.getOptions() }) echo("done") elif sText.startswith("/- "): oGrammarChecker.gce.setOptions({ opt:False for opt in sText[3:].strip().split() if opt in oGrammarChecker.gce.getOptions() }) echo("done") |
︙ | ︙ |
Modified graphspell-js/ibdawg.js from [73e27f350e] to [494630e09a].
︙ | ︙ | |||
414 415 416 417 418 419 420 | return aTails; } // morph (sWord) { // is defined in constructor // } | | | | | | | > | | | | | < | | | > | | | | > | 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 | return aTails; } // morph (sWord) { // is defined in constructor // } * select (sFlexPattern="", sTagsPattern="") { // generator: returns all entries which flexion fits <sFlexPattern> and morphology fits <sTagsPattern> let zFlexPattern = null; let zTagsPattern = null; try { zFlexPattern = (sFlexPattern !== "") ? new RegExp(sFlexPattern) : null; zTagsPattern = (sTagsPattern !== "") ? new RegExp(sTagsPattern) : null; } catch (e) { console.log("Error in regex pattern"); console.log(e.message); } yield* this._select1(zFlexPattern, zTagsPattern, 0, ""); } // VERSION 1 * _select1 (zFlexPattern, zTagsPattern, iAddr, sWord) { // recursive generator for (let [nVal, jAddr] of this._getArcs1(iAddr)) { if (nVal <= this.nChar) { // simple character yield* this._select1(zFlexPattern, zTagsPattern, jAddr, sWord + this.lArcVal[nVal]); } else { if (!zFlexPattern || zFlexPattern.test(sWord)) { let sEntry = sWord + "\t" + this.funcStemming(sWord, this.lArcVal[nVal]); for (let [nMorphVal, _] of this._getArcs1(jAddr)) { if (!zTagsPattern || zTagsPattern.test(this.lArcVal[nMorphVal])) { yield sEntry + "\t" + this.lArcVal[nMorphVal]; } } } } } } _morph1 (sWord) { |
︙ | ︙ |
Modified graphspell-js/spellchecker.js from [02db3a2be4] to [a81aa20368].
︙ | ︙ | |||
228 229 230 231 232 233 234 | yield this.oCommunityDic.suggest(sWord, nSuggLimit); } if (this.bPersonalDic) { yield this.oPersonalDic.suggest(sWord, nSuggLimit); } } | | | | | | | | 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 | yield this.oCommunityDic.suggest(sWord, nSuggLimit); } if (this.bPersonalDic) { yield this.oPersonalDic.suggest(sWord, nSuggLimit); } } * select (sFlexPattern="", sTagsPattern="") { // generator: returns all entries which flexion fits <sFlexPattern> and morphology fits <sTagsPattern> yield* this.oMainDic.select(sFlexPattern, sTagsPattern) if (this.bExtendedDic) { yield* this.oExtendedDic.select(sFlexPattern, sTagsPattern); } if (this.bCommunityDic) { yield* this.oCommunityDic.select(sFlexPattern, sTagsPattern); } if (this.bPersonalDic) { yield* this.oPersonalDic.select(sFlexPattern, sTagsPattern); } } } if (typeof(exports) !== 'undefined') { exports.SpellChecker = SpellChecker; } |
Modified graphspell/ibdawg.py from [145a26a0d0] to [7fe99d0e79].
︙ | ︙ | |||
405 406 407 408 409 410 411 | n += 1 if not sWord: return if iPos >= 0: print("\n "+ " " * iPos + "|") self.drawPath(sWord[1:], iNextNodeAddr) | | | | | | > | > > | | | | | | > | | | | | 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 | n += 1 if not sWord: return if iPos >= 0: print("\n "+ " " * iPos + "|") self.drawPath(sWord[1:], iNextNodeAddr) def select (self, sFlexPattern="", sTagsPattern=""): "generator: returns all entries which flexion fits <sFlexPattern> and morphology fits <sTagsPattern>" zFlexPattern = None zTagsPattern = None try: if sFlexPattern: zFlexPattern = re.compile(sFlexPattern) if sTagsPattern: zTagsPattern = re.compile(sTagsPattern) except: print("# Error in regex pattern") traceback.print_exc() yield from self._select1(zFlexPattern, zTagsPattern, 0, "") # def morph (self, sWord): # is defined in __init__ # VERSION 1 def _select1 (self, zFlexPattern, zTagsPattern, iAddr, sWord): # recursive generator for nVal, jAddr in self._getArcs1(iAddr): if nVal <= self.nChar: # simple character yield from self._select1(zFlexPattern, zTagsPattern, jAddr, sWord + self.lArcVal[nVal]) else: if not zFlexPattern or zFlexPattern.search(sWord): sEntry = sWord + "\t" + self.funcStemming(sWord, self.lArcVal[nVal]) for nMorphVal, _ in self._getArcs1(jAddr): if not zTagsPattern or zTagsPattern.search(self.lArcVal[nMorphVal]): yield sEntry + "\t" + self.lArcVal[nMorphVal] def _morph1 (self, sWord): "returns morphologies of <sWord>" iAddr = 0 for c in sWord: if c not in self.dChar: return [] |
︙ | ︙ |
Modified graphspell/spellchecker.py from [eb6fcccb55] to [1230d0d8a8].
︙ | ︙ | |||
189 190 191 192 193 194 195 | 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) | | | | | | | | 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 | 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) def select (self, sFlexPattern="", sTagsPattern=""): "generator: returns all entries which flexion fits <sFlexPattern> and morphology fits <sTagsPattern>" yield from self.oMainDic.select(sFlexPattern, sTagsPattern) if self.bExtendedDic: yield from self.oExtendedDic.select(sFlexPattern, sTagsPattern) if self.bCommunityDic: yield from self.oCommunityDic.select(sFlexPattern, sTagsPattern) if self.bPersonalDic: yield from self.oPersonalDic.select(sFlexPattern, sTagsPattern) def drawPath (self, sWord): self.oMainDic.drawPath(sWord) if self.bExtendedDic: print("-----") self.oExtendedDic.drawPath(sWord) if self.bCommunityDic: |
︙ | ︙ |