(int[] features, int[] featuresForAlign, int tokenIndexInStream, int injectNL_WS, int alignOrIndent, boolean collectAnalysis)
| 424 | } |
| 425 | |
| 426 | public TokenPositionAnalysis getTokenAnalysis(int[] features, int[] featuresForAlign, |
| 427 | int tokenIndexInStream, |
| 428 | int injectNL_WS, int alignOrIndent, |
| 429 | boolean collectAnalysis) |
| 430 | { |
| 431 | CommonToken curToken = (CommonToken)originalDoc.tokens.get(tokenIndexInStream); |
| 432 | TerminalNode nodeWithOriginalToken = originalTokenToNodeMap.get(curToken); |
| 433 | |
| 434 | int actualWS = Trainer.getInjectWSCategory(originalTokens, tokenIndexInStream); |
| 435 | String actualWSNL = getWSCategoryStr(actualWS); |
| 436 | actualWSNL = actualWSNL!=null ? actualWSNL : String.format("%8s","none"); |
| 437 | |
| 438 | String wsDisplay = getWSCategoryStr(injectNL_WS); |
| 439 | if ( wsDisplay==null ) wsDisplay = String.format("%8s","none"); |
| 440 | String alignDisplay = getHPosCategoryStr(alignOrIndent); |
| 441 | if ( alignDisplay==null ) alignDisplay = String.format("%8s","none"); |
| 442 | String newlinePredictionString = |
| 443 | String.format("### line %d: predicted %s actual %s", |
| 444 | curToken.getLine(), wsDisplay, actualWSNL); |
| 445 | |
| 446 | int actualAlignCategory = Trainer.getAlignmentCategory(originalDoc, nodeWithOriginalToken, indentSize); |
| 447 | String actualAlignDisplay = getHPosCategoryStr(actualAlignCategory); |
| 448 | actualAlignDisplay = actualAlignDisplay!=null ? actualAlignDisplay : String.format("%8s","none"); |
| 449 | |
| 450 | String alignPredictionString = |
| 451 | String.format("### line %d: predicted %s actual %s", |
| 452 | curToken.getLine(), |
| 453 | alignDisplay, |
| 454 | actualAlignDisplay); |
| 455 | |
| 456 | String newlineAnalysis = ""; |
| 457 | String alignAnalysis = ""; |
| 458 | if ( collectAnalysis ) { // this can be slow |
| 459 | newlineAnalysis = newlinePredictionString+"\n"+ |
| 460 | wsClassifier.getPredictionAnalysis(testDoc, k, features, corpus.injectWhitespace, |
| 461 | MAX_WS_CONTEXT_DIFF_THRESHOLD); |
| 462 | if ( (injectNL_WS&0xFF)==CAT_INJECT_NL ) { |
| 463 | alignAnalysis = |
| 464 | alignPredictionString+"\n"+ |
| 465 | hposClassifier.getPredictionAnalysis(testDoc, k, featuresForAlign, corpus.hpos, |
| 466 | MAX_ALIGN_CONTEXT_DIFF_THRESHOLD); |
| 467 | } |
| 468 | } |
| 469 | TokenPositionAnalysis a = new TokenPositionAnalysis(curToken, injectNL_WS, newlineAnalysis, alignOrIndent, alignAnalysis); |
| 470 | a.actualWS = Trainer.getInjectWSCategory(originalTokens, tokenIndexInStream); |
| 471 | a.actualAlign = actualAlignCategory; |
| 472 | return a; |
| 473 | } |
| 474 | |
| 475 | public static String getWSCategoryStr(int injectNL_WS) { |
| 476 | int[] elements = Trainer.triple(injectNL_WS); |
no test coverage detected