Libraryless. Click here for Pure Java version (11798L/84K).
scope ai_parseTree_makeWeights. sbool #verbose; static int #maxLevelSeen; svoid ai_parseTree_makeWeights(AI_BottomUpParser1 parser, L<WeightedProduction> productions, final PTElement e) { ai_parseTree_makeWeights(parser, productions, e, 1); } svoid ai_parseTree_makeWeights(AI_BottomUpParser1 parser, L<WeightedProduction> productions, final PTElement e, int level) { ping(); if (level >= parser.maxDepth) { if (!parser.maxDepthReached) { parser.maxDepthReached = true; print("Max parse tree level reached: " + parser.maxDepth); print("Path from root:"); pnl(ptElement_pathFromRoot(e)); } e.children = ll(); ret; } if (verbose && level > maxLevelSeen) print("ai_parseTree_makeWeights new max level seen: " + (maxLevelSeen = level)); // Descend first for (PTElement child : ai_parseTree_getChildren(parser, productions, e)) ai_parseTree_makeWeights(parser, productions, child, level+1); // Then calculate this node's weight // check for explicit anti-examples if (e instanceof HaveCategory && contains(ai_antiWordCategoriesWithElements().get(e/HaveCategory.category), e.text())) ret with e.weight = 0.1; if (e instanceof ChoosePart) e.weight = avg(first(e.children).weight, second(e.children).weight); else if (e instanceof HaveCategory && empty(e.children)) e.weight = or(ai_getWordToCategoryWeight(e.text(), e/HaveCategory.category), 1.0); else e.weight = collectMaxDouble(e.children, 'weight); ai_Reconstructed r = e instanceof ChoosePart ? e/ChoosePart.reconstruction : e instanceof HaveCategory ? e/HaveCategory.reconstruction : null; if (r != null) e.weight *= r.production.weight; } end scope
Began life as a copy of #1017396
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1017398 |
Snippet name: | ai_parseTree_makeWeights |
Eternal ID of this version: | #1017398/29 |
Text MD5: | 697b3c88217535421ec6cca58d1fa486 |
Transpilation MD5: | a621d30fb6d5614a02bdfc94ce0a4478 |
Author: | stefan |
Category: | javax / a.i. |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2019-07-10 20:20:26 |
Source code size: | 1787 bytes / 51 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 413 / 537 |
Version history: | 28 change(s) |
Referenced in: | #1006654 - Standard functions list 2 (LIVE, continuation of #761) #1017400 - ai_parseTree_makeTotalWeights - also sorts children |