diff --git a/readTrace.py b/readTrace.py index b978fda4dffefc49c8c387aa772384108d9f353d..e3ae03ffdecce5de4457c0d64f803715b8bfa888 100755 --- a/readTrace.py +++ b/readTrace.py @@ -97,6 +97,8 @@ class Block() : "nbErr" : 0, "avgDist" : 0.0, "avgIndex" : 0.0, + "maxIndex" : 0.0, + "maxDist" : 0.0, }) #------------------------------------------------------------------------------- @@ -189,6 +191,16 @@ class History() : "backPrecision" : 0.0, "backRecall" : 0.0, "backFScore" : 0.0, + "nbRedone" : 0, + "nbRedoneDiminishErr" : 0, + "nbRedoneAugmentErr" : 0, + "redoneAvgErrChange" : 0, + "nbRedoneErrErr" : 0, + "nbRedoneErrCorrect" : 0, + "nbRedoneCorrectErr" : 0, + "nbRedoneCorrectCorrect" : 0, + "redoneErrErrAvgDistChange" : 0.0, + "redoneErrErrAvgIndexChange" : 0.0, } for sentence in self.sentences : globalStats["nbWords"] += len(sentence[0]) @@ -212,11 +224,33 @@ class History() : stats["nbErr"] += 1 stats["avgDist"] += step.distance stats["avgIndex"] += step.oracleIndex + stats["maxDist"] = max(stats["maxDist"], step.distance) + stats["maxIndex"] = max(stats["maxIndex"], step.oracleIndex) if i == 0 : globalStats["nbActions"] += len(version) globalStats["nbErr"] += stats["nbErr"] if len(block.versions) > 1 : globalStats["nbErrFound"] += stats["nbErr"] + if i == 1 : + prevStats = block.stats[i-1] + globalStats["nbRedone"] += 1 + distChange = prevStats["maxDist"] - stats["maxDist"] + indexChange = prevStats["maxIndex"] - stats["maxIndex"] + if prevStats["nbErr"] > 0 and stats["nbErr"] > 0 : + globalStats["nbRedoneErrErr"] += 1 + globalStats["redoneErrErrAvgDistChange"] += distChange + globalStats["redoneErrErrAvgIndexChange"] += indexChange + if prevStats["nbErr"] == 0 and stats["nbErr"] > 0 : + globalStats["nbRedoneCorrectErr"] += 1 + if prevStats["nbErr"] == 0 and stats["nbErr"] == 0 : + globalStats["nbRedoneCorrectCorrect"] += 1 + if prevStats["nbErr"] > 0 and stats["nbErr"] == 0 : + globalStats["nbRedoneErrCorrect"] += 1 + if prevStats["nbErr"] > stats["nbErr"] : + globalStats["nbRedoneDiminishErr"] += 1 + if prevStats["nbErr"] < stats["nbErr"] : + globalStats["nbRedoneAugmentErr"] += 1 + globalStats["redoneAvgErrChange"] += stats["nbErr"] - prevStats["nbErr"] if stats["nbErr"] > 0 : stats["avgDist"] /= stats["nbErr"] stats["avgIndex"] /= stats["nbErr"] @@ -243,21 +277,32 @@ class History() : if backOnErr : globalStats["backOnErr"] += 1 if globalStats["nbActions"] > 0 : - globalStats["actionAccuracy"] = (globalStats["nbActions"]-globalStats["nbErr"])/globalStats["nbActions"] + globalStats["actionAccuracy"] = 100.0*(globalStats["nbActions"]-globalStats["nbErr"])/globalStats["nbActions"] if globalStats["nbActionsParser"] > 0 : - globalStats["actionAccuracyParser"] = (globalStats["nbActionsParser"]-globalStats["nbErrParser"])/globalStats["nbActionsParser"] + globalStats["actionAccuracyParser"] = 100.0*(globalStats["nbActionsParser"]-globalStats["nbErrParser"])/globalStats["nbActionsParser"] if globalStats["nbArcs"] > 0 : - globalStats["arcsAccuracy"] = (globalStats["nbArcs"]-globalStats["nbMissedArcs"])/globalStats["nbArcs"] + globalStats["arcsAccuracy"] = 100.0*(globalStats["nbArcs"]-globalStats["nbMissedArcs"])/globalStats["nbArcs"] if globalStats["nbErr"] > 0 : globalStats["avgErrCost"] /= globalStats["nbErr"] if globalStats["nbErr"] > 0 : globalStats["avgErrCostParser"] /= globalStats["nbErrParser"] if globalStats["nbErr"] > 0 : - globalStats["backRecall"] = globalStats["nbErrFound"] / globalStats["nbErr"] + globalStats["backRecall"] = 100.0*globalStats["nbErrFound"] / globalStats["nbErr"] if globalStats["nbBack"] > 0 : - globalStats["backPrecision"] = globalStats["backOnErr"] / globalStats["nbBack"] + globalStats["backPrecision"] = 100.0*globalStats["backOnErr"] / globalStats["nbBack"] if globalStats["backPrecision"] + globalStats["backRecall"] > 0.0 : globalStats["backFScore"] = 2*(globalStats["backPrecision"] * globalStats["backRecall"])/(globalStats["backPrecision"] + globalStats["backRecall"]) + if globalStats["nbRedone"] : + globalStats["redoneAvgErrChange"] /= globalStats["nbRedone"] + globalStats["nbRedoneDiminishErr"] /= globalStats["nbRedone"] * (1/100) + globalStats["nbRedoneAugmentErr"] /= globalStats["nbRedone"] * (1/100) + globalStats["nbRedoneCorrectCorrect"] /= globalStats["nbRedone"] * (1/100) + globalStats["nbRedoneErrErr"] /= globalStats["nbRedone"] * (1/100) + globalStats["nbRedoneCorrectErr"] /= globalStats["nbRedone"] * (1/100) + globalStats["nbRedoneErrCorrect"] /= globalStats["nbRedone"] * (1/100) + if globalStats["nbRedoneErrErr"] : + globalStats["redoneErrErrAvgDistChange"] /= globalStats["nbRedoneErrErr"] + globalStats["redoneErrErrAvgIndexChange"] /= globalStats["nbRedoneErrErr"] return globalStats #------------------------------------------------------------------------------- @@ -334,6 +379,11 @@ class History() : #------------------------------------------------------------------------------- ################################################################################ +################################################################################ +def prettyNumber(num) : + return ("%.2f"%num).rstrip(".0") +################################################################################ + ################################################################################ if __name__ == "__main__" : parser = argparse.ArgumentParser() @@ -356,6 +406,9 @@ if __name__ == "__main__" : history.printHumanReadable(sys.stdout) if args.stats : - print(stats) + asList = [list(stats.keys()), list(stats.values())] + maxLen = max(map(len, asList[0])) + for i in range(len(asList[0])) : + print("%s %s"%(asList[0][i]+"."*(1+maxLen-len(asList[0][i])), prettyNumber(asList[1][i]))) ################################################################################