Overview
Comment: | [graphspell] spellchecker: select returns an array instead of a string, + getSimilarEntries |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | graphspell | multid |
Files: | files | file ages | folders |
SHA3-256: |
1fb5cf907607aa3ce2c6ffa1811441ed |
User & Date: | olr on 2018-03-23 12:38:49 |
Other Links: | branch diff | manifest | tags |
Context
2018-03-23
| ||
17:39 | [fx] lexicon editor: search page check-in: 412e20b14a user: olr tags: fx, multid | |
12:38 | [graphspell] spellchecker: select returns an array instead of a string, + getSimilarEntries check-in: 1fb5cf9076 user: olr tags: graphspell, multid | |
2018-03-22
| ||
11:08 | [fx] lexicon editor: update > informations check-in: b7574fbc3d user: olr tags: fx, multid | |
Changes
Modified gc_lang/fr/tb/content/lex_editor.js from [c528c957f0] to [09631747a1].
︙ | ︙ | |||
418 419 420 421 422 423 424 | load: async function () { let sJSON = await oFileHandler.loadFile("fr.personal.json"); if (sJSON != "") { let oJSON = JSON.parse(sJSON); this.oIBDAWG = new IBDAWG(oJSON); let lEntry = []; | | | | 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 | load: async function () { let sJSON = await oFileHandler.loadFile("fr.personal.json"); if (sJSON != "") { let oJSON = JSON.parse(sJSON); this.oIBDAWG = new IBDAWG(oJSON); let lEntry = []; for (let aRes of this.oIBDAWG.select()) { lEntry.push(aRes); } oLexiconTable.fill(lEntry); this.setDictData(this.oIBDAWG.nEntry, this.oIBDAWG.sDate); enableElement("export_button"); } else { this.setDictData(0, "[néant]"); disableElement("export_button"); |
︙ | ︙ | |||
488 489 490 491 492 493 494 | document.getElementById("search_regex_button").addEventListener("click", () => { this.searchRegex() }, false); }, searchSimilar: function () { oSearchTable.clear(); let sWord = document.getElementById("search_similar").value; if (sWord !== "") { | < < < < | < < < < < < | | | 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 | document.getElementById("search_regex_button").addEventListener("click", () => { this.searchRegex() }, false); }, searchSimilar: function () { oSearchTable.clear(); let sWord = document.getElementById("search_similar").value; if (sWord !== "") { let lResult = this.oSpellChecker.getSimilarEntries(sWord, 20); oSearchTable.fill(lResult); } }, searchRegex: function () { let sFlexPattern = document.getElementById("search_flexion_pattern").value.trim(); let sTagsPattern = document.getElementById("search_tags_pattern").value.trim(); let lEntry = []; let i = 0; for (let aRes of this.oSpellChecker.select(sFlexPattern, sTagsPattern)) { lEntry.push(aRes); i++; if (i >= 2000) { break; } } oSearchTable.fill(lEntry); } |
︙ | ︙ |
Modified gc_lang/fr/webext/panel/lex_editor.js from [848f24fd10] to [46a64e44e7].
︙ | ︙ | |||
504 505 506 507 508 509 510 | if (!oResult.hasOwnProperty("oPersonalDictionary")) { hideElement("export_button"); return; } let oJSON = oResult.oPersonalDictionary; this.oIBDAWG = new IBDAWG(oJSON); let lEntry = []; | | | | 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 | if (!oResult.hasOwnProperty("oPersonalDictionary")) { hideElement("export_button"); return; } let oJSON = oResult.oPersonalDictionary; this.oIBDAWG = new IBDAWG(oJSON); let lEntry = []; for (let aRes of this.oIBDAWG.select()) { lEntry.push(aRes); } oLexiconTable.fill(lEntry); this.setDictData(this.oIBDAWG.nEntry, this.oIBDAWG.sDate); showElement("export_button"); }, setDictData: function (nEntries, sDate) { |
︙ | ︙ | |||
570 571 572 573 574 575 576 | document.getElementById("search_regex_button").addEventListener("click", () => { this.searchRegex() }, false); }, searchSimilar: function () { oSearchTable.clear(); let sWord = document.getElementById("search_similar").value; if (sWord !== "") { | < < < < | < < < < < < | | | 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 | document.getElementById("search_regex_button").addEventListener("click", () => { this.searchRegex() }, false); }, searchSimilar: function () { oSearchTable.clear(); let sWord = document.getElementById("search_similar").value; if (sWord !== "") { let lResult = this.oSpellChecker.getSimilarEntries(sWord, 20); oSearchTable.fill(lResult); } }, searchRegex: function () { let sFlexPattern = document.getElementById("search_flexion_pattern").value.trim(); let sTagsPattern = document.getElementById("search_tags_pattern").value.trim(); let lEntry = []; let i = 0; for (let aRes of this.oSpellChecker.select(sFlexPattern, sTagsPattern)) { lEntry.push(aRes); i++; if (i >= 2000) { break; } } oSearchTable.fill(lEntry); } |
︙ | ︙ |
Modified grammalecte-cli.py from [3a000dfd52] to [3cad321446].
︙ | ︙ | |||
194 195 196 197 198 199 200 | if "=" in sSearch: nCut = sSearch.find("=") sFlexPattern = sSearch[0:nCut] sTagsPattern = sSearch[nCut+1:] else: sFlexPattern = sSearch sTagsPattern = "" | | | | 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | if "=" in sSearch: nCut = sSearch.find("=") sFlexPattern = sSearch[0:nCut] sTagsPattern = sSearch[nCut+1:] else: sFlexPattern = sSearch sTagsPattern = "" for aRes in oSpellChecker.select(sFlexPattern, sTagsPattern): echo("\t".join(aRes)) 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") elif sText.startswith("/-- "): |
︙ | ︙ |
Modified graphspell-js/ibdawg.js from [494630e09a] to [050f6e0036].
︙ | ︙ | |||
413 414 415 416 417 418 419 | } return aTails; } // morph (sWord) { // is defined in constructor // } | > > > > | > > > > > > > > > > | 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 | } return aTails; } // morph (sWord) { // is defined in constructor // } getSimilarEntries (sWord, nSuggLimit=10) { // return a list of tuples (similar word, stem, morphology) if (sWord == "") { return []; } let lResult = []; for (let sSimilar of this.suggest(sWord, nSuggLimit)) { for (let sMorph of this.getMorph(sSimilar)) { let nCut = sMorph.indexOf(" "); lResult.push( [sSimilar, sMorph.slice(1, nCut), sMorph.slice(nCut+1)] ); } } return lResult; } * 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; |
︙ | ︙ | |||
439 440 441 442 443 444 445 | // 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)) { | | | | 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 | // 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 sStem = this.funcStemming(sWord, this.lArcVal[nVal]); for (let [nMorphVal, _] of this._getArcs1(jAddr)) { if (!zTagsPattern || zTagsPattern.test(this.lArcVal[nMorphVal])) { yield [sWord, sStem, this.lArcVal[nMorphVal]]; } } } } } } |
︙ | ︙ |
Modified graphspell-js/spellchecker.js from [a81aa20368] to [67633fda3c].
︙ | ︙ | |||
241 242 243 244 245 246 247 248 249 250 251 252 | 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; } | > > > > > > > > > > > > > > > | 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | if (this.bCommunityDic) { yield* this.oCommunityDic.select(sFlexPattern, sTagsPattern); } if (this.bPersonalDic) { yield* this.oPersonalDic.select(sFlexPattern, sTagsPattern); } } getSimilarEntries (sWord, nSuggLimit=10) { // return a list of tuples (similar word, stem, morphology) let lResult = this.oMainDic.getSimilarEntries(sWord); if (this.bExtendedDic) { lResult.push(...this.oExtendedDic.getSimilarEntries(sWord)); } if (this.bCommunityDic) { lResult.push(...this.oCommunityDic.getSimilarEntries(sWord)); } if (this.bPersonalDic) { lResult.push(...this.oPersonalDic.getSimilarEntries(sWord)); } return lResult; } } if (typeof(exports) !== 'undefined') { exports.SpellChecker = SpellChecker; } |
Modified graphspell/ibdawg.py from [7fe99d0e79] to [10a4e0fc85].
︙ | ︙ | |||
404 405 406 407 408 409 410 411 412 413 414 415 416 417 | iPos = n 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: | > > > > > > > > > > > | 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | iPos = n n += 1 if not sWord: return if iPos >= 0: print("\n "+ " " * iPos + "|") self.drawPath(sWord[1:], iNextNodeAddr) def getSimilarEntries (self, sWord, nSuggLimit=10): "return a list of tuples (similar word, stem, morphology)" if not sWord: return [] lResult = [] for sSimilar in self.suggest(sWord, nSuggLimit): for sMorph in self.getMorph(sSimilar): nCut = sMorph.find(" ") lResult.append( (sSimilar, sMorph[1:nCut], sMorph[nCut+1:]) ) return lResult def select (self, sFlexPattern="", sTagsPattern=""): "generator: returns all entries which flexion fits <sFlexPattern> and morphology fits <sTagsPattern>" zFlexPattern = None zTagsPattern = None try: if sFlexPattern: |
︙ | ︙ | |||
431 432 433 434 435 436 437 | # 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): | | | | 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 | # 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): sStem = self.funcStemming(sWord, self.lArcVal[nVal]) for nMorphVal, _ in self._getArcs1(jAddr): if not zTagsPattern or zTagsPattern.search(self.lArcVal[nMorphVal]): yield [sWord, sStem, 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 [1230d0d8a8] to [3ef8ba9d14].
︙ | ︙ | |||
210 211 212 213 214 215 216 | self.oExtendedDic.drawPath(sWord) if self.bCommunityDic: print("-----") self.oCommunityDic.drawPath(sWord) if self.bPersonalDic: print("-----") self.oPersonalDic.drawPath(sWord) | > > > > > > > > > > > | 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | self.oExtendedDic.drawPath(sWord) if self.bCommunityDic: print("-----") self.oCommunityDic.drawPath(sWord) if self.bPersonalDic: print("-----") self.oPersonalDic.drawPath(sWord) def getSimilarEntries (self, sWord): "return a list of tuples (similar word, stem, morphology)" lResult = self.oMainDic.getSimilarEntries(sWord) if self.bExtendedDic: lResult.extend(self.oExtendedDic.getSimilarEntries(sWord)) if self.bCommunityDic: lResult.extend(self.oCommunityDic.getSimilarEntries(sWord)) if self.bPersonalDic: lResult.extend(self.oPersonalDic.getSimilarEntries(sWord)) return lResult |