diff --git a/UD_any/print_results.py b/UD_any/print_results.py
index e1eeb6803b0aa02ee4a5bba3d5b75c65a8756234..21a4d9469319f756064274d0d6f36e5274515b88 100755
--- a/UD_any/print_results.py
+++ b/UD_any/print_results.py
@@ -1,12 +1,25 @@
 #! /usr/bin/env python3
 
+import argparse
 import glob
 import sys
 import math
+import copy
 
 ################################################################################
 if __name__ == "__main__" :
 
+  parser = argparse.ArgumentParser()
+  parser.add_argument("dir", type=str, default="",
+    help="Directory containing the .stdout (scores) files.")
+  parser.add_argument("--score", "-s", type=str, default="F1",
+    help="Name of the score to report (F1,L1,L2,R2).")
+  parser.add_argument("--metrics", type=str, default="Sentences,LAS,UAS,Lemmas,UFeats,UPOS,Words,Tokens",
+    help="Comma separated list of metrics.")
+  parser.add_argument("--mean", "-m", default=False, action="store_true",
+    help="compute the mean of metrics.")
+  args = parser.parse_args()
+
   scoreTypes = {
     "F1" : ["F1.score","%",-1,"%.2f"],
     "R2" : ["R²","",-3,"%.4f"],
@@ -14,15 +27,17 @@ if __name__ == "__main__" :
     "L2" : ["L2","",-2,"%.2f"],
   }
 
-  scoreType = scoreTypes["F1"] if len(sys.argv) < 3 else scoreTypes[sys.argv[2].upper()]
+  scoreType = scoreTypes[args.score.upper()]
 
-  metrics = ["Sentences","LAS","UAS","Lemmas","UFeats","UPOS","Words","Tokens"]
+  metrics = args.metrics.split(',')
+  usedMetrics = []
+  mean = args.mean
 
   output = []
   outputByModelScore = dict()
 
-  filenamesErr = glob.iglob((sys.argv[1]+"/"if len(sys.argv) > 1 else "") + '*stderr')
-  filenamesOut = glob.iglob((sys.argv[1]+"/"if len(sys.argv) > 1 else "") + '*stdout')
+  filenamesErr = glob.iglob((args.dir+"/"if len(args.dir) > 1 else "") + '*stderr')
+  filenamesOut = glob.iglob((args.dir+"/"if len(args.dir) > 1 else "") + '*stdout')
 
   for pathToFile in filenamesErr :
     for line in open(pathToFile, "r") :
@@ -46,10 +61,31 @@ if __name__ == "__main__" :
 
           if model not in outputByModelScore[corpus] :
             outputByModelScore[corpus][model] = dict()
-          if splited[0] not in outputByModelScore[corpus][model] :
-            outputByModelScore[corpus][model][splited[0]] = []
-
-          outputByModelScore[corpus][model][splited[0]].append([corpus, splited[0], splited[scoreType[2]], model])
+          if metric not in outputByModelScore[corpus][model] :
+            outputByModelScore[corpus][model][metric] = []
+          if metric not in usedMetrics :
+            usedMetrics.append(metric)
+
+          outputByModelScore[corpus][model][metric].append([corpus, metric, splited[scoreType[2]], model])
+
+  for metric in metrics :
+    if metric not in usedMetrics :
+      print("WARNING : Unused metric '%s'"%metric, file=sys.stderr)
+
+  if mean :
+    metricName = ",".join(metrics)
+    for corpus in outputByModelScore :
+      for model in outputByModelScore[corpus] :
+        nbRedo = len((list(outputByModelScore[corpus][model].values())[0]))
+        newMetrics = copy.deepcopy(list(outputByModelScore[corpus][model].values())[0])
+        for elem in newMetrics :
+          elem[2] = 0
+          elem[1] = metricName
+        for redo in range(nbRedo) :
+          for metric in outputByModelScore[corpus][model] :
+            newMetrics[redo][2] += float(outputByModelScore[corpus][model][metric][redo][2])
+          newMetrics[redo][2] /= len(metrics)
+        outputByModelScore[corpus][model] = {metricName : newMetrics}
 
   for corpus in outputByModelScore :
     for model in outputByModelScore[corpus] :
@@ -73,7 +109,7 @@ if __name__ == "__main__" :
           score = score.replace('-','')
         output.append(outputByModelScore[corpus][model][metric][0])
         output[-1][2] = score
-        output[-1] = [output[-1][0]] + [metrics.index(output[-1][1])] + [output[-1][1]] + [baseScore] + output[-1][2:]
+        output[-1] = [output[-1][0]] + ([0] if mean else [metrics.index(output[-1][1])]) + [output[-1][1]] + [baseScore] + output[-1][2:]
 
   if len(output) == 0 :
     print("ERROR : Output length is 0", file=sys.stderr)