| 191 | } |
| 192 | |
| 193 | public void buildTokenContextIndex() { |
| 194 | curAndPrevTokenRuleIndexToExemplarIndexes = new MultiMap<>(); |
| 195 | wsFeaturesToExemplarIndexes = new MultiMap<>(); |
| 196 | hposFeaturesToExemplarIndexes = new MultiMap<>(); |
| 197 | for (int i = 0; i<featureVectors.size(); i++) { |
| 198 | int[] features = featureVectors.get(i); |
| 199 | int curTokenRuleIndex = features[Trainer.INDEX_PREV_EARLIEST_RIGHT_ANCESTOR]; |
| 200 | int prevTokenRuleIndex = features[Trainer.INDEX_EARLIEST_LEFT_ANCESTOR]; |
| 201 | int pr = Trainer.unrulealt(prevTokenRuleIndex)[0]; |
| 202 | int cr = Trainer.unrulealt(curTokenRuleIndex)[0]; |
| 203 | curAndPrevTokenRuleIndexToExemplarIndexes.map(new Pair<>(pr, cr), i); |
| 204 | wsFeaturesToExemplarIndexes.map(new FeatureVectorAsObject(features, Trainer.FEATURES_INJECT_WS), i); |
| 205 | hposFeaturesToExemplarIndexes.map(new FeatureVectorAsObject(features, Trainer.FEATURES_HPOS), i); |
| 206 | } |
| 207 | } |
| 208 | } |