Bläddra i källkod

modified compare.py to measure for each speaker, added outputs

Martin Frébourg 2 år sedan
förälder
incheckning
11db57d611

+ 43 - 40
code/compare.py

@@ -1,4 +1,4 @@
-import os
+import pandas as pd
 from ChildProject.projects import ChildProject
 from ChildProject.annotations import AnnotationManager
 from ChildProject.metrics import segments_to_grid, conf_matrix, segments_to_annotation
@@ -13,42 +13,45 @@ def compare_vandam(set1: str, set2: str) :
 
     #get segments that intercept between two annotations
     intersection = AnnotationManager.intersection(am.annotations, [set1, set2])
-
-    #retrieve contents
-    segments = am.get_collapsed_segments(intersection)
-    segments = segments[segments['speaker_type'].isin(speakers)]
-
-    set1_segm = segments_to_grid(segments[segments['set'] == set1], 0, segments['segment_offset'].max(), 100, 'speaker_type', speakers)
-    set2_segm = segments_to_grid(segments[segments['set'] == set2], 0, segments['segment_offset'].max(), 100, 'speaker_type', speakers)
-
-    print(set1_segm.shape)
-    print(set2_segm)
-
-    ref = segments_to_annotation(segments[segments['set'] == set1], 'speaker_type')
-    hyp = segments_to_annotation(segments[segments['set'] == set2], 'speaker_type')
-
-    if __name__ == '__main__':
-        from pyannote.metrics.detection import DetectionPrecisionRecallFMeasure
-        metric = DetectionPrecisionRecallFMeasure()
-
-        detail = metric.compute_components(ref, hyp)
-        precision, recall, f = metric.compute_metrics(detail)
-        
-        dirName = "outputs/compare/" + set1.replace("/","") + "-" + set2.replace("/","")
-
-        try:
-            # Create target Directory
-            Path(dirName).mkdir(parents= True)
-            print("Directory " , dirName ,  " Created ") 
-        except FileExistsError:
-            print("Directory " , dirName ,  " already exists")
-
-        file= open("{0}/{1}-{2}.txt".format(dirName, set1.replace("/",""), set2.replace("/","")),"w+")
-       # metric_output = str(f'{precision:.2f}/{recall:.2f}/{f:.2f}')
-        metric_output = "precision: {0}/recall : {1}/ f: {2}".format(precision, recall, f)
-        file.write(metric_output)
-        file.close
-        print("Metrics [precision & recall & f] saved!")
-
-compare_vandam('cha','eaf')
-compare_vandam('cha', 'cha/aligned')
+    
+    dirName = "outputs/compare/" + set1.replace("/","") + "-" + set2.replace("/","")
+    try:
+        # Create target Directory
+        Path(dirName).mkdir(parents= True)
+        print("Directory " , dirName ,  " Created ") 
+    except FileExistsError:
+        print("Directory " , dirName ,  " already exists")
+    
+    file= open("{0}/{1}-{2}.txt".format(dirName, set1.replace("/",""), set2.replace("/","")),"a")
+    
+    for speaker in speakers: 
+
+        #retrieve contents
+        segments = am.get_collapsed_segments(intersection)
+        segments = segments[segments['speaker_type'].isin(pd.Series(speaker))]
+
+       # set1_segm = segments_to_grid(segments[segments['set'] == set1], 0, segments['segment_offset'].max(), 100, 'speaker_type', speakers)
+       # set2_segm = segments_to_grid(segments[segments['set'] == set2], 0, segments['segment_offset'].max(), 100, 'speaker_type', speakers)
+
+
+        ref = segments_to_annotation(segments[segments['set'] == set1], 'speaker_type')
+        hyp = segments_to_annotation(segments[segments['set'] == set2], 'speaker_type')
+
+        if __name__ == '__main__':
+            from pyannote.metrics.detection import DetectionPrecisionRecallFMeasure
+            metric = DetectionPrecisionRecallFMeasure()
+
+            detail = metric.compute_components(ref, hyp)
+            precision, recall, f = metric.compute_metrics(detail)
+            
+                       
+            # metric_output = str(f'{precision:.2f}/{recall:.2f}/{f:.2f}')
+            metric_output = "precision: {0} / recall : {1} / f: {2}\n".format(precision, recall, f)
+            file.write(speaker + ": " + metric_output)
+            print("Metrics [precision & recall & f] saved! for {0}".format(speaker))
+    file.close
+    
+
+
+compare_vandam('eaf', 'cha')
+compare_vandam('eaf', 'cha/aligned')

+ 1 - 1
outputs/compare/eaf-cha/eaf-cha.txt

@@ -1 +1 @@
-../../../.git/annex/objects/vx/2v/MD5E-s79--cb947e26a9d3b3bbbbfd8315ce6440ac.txt/MD5E-s79--cb947e26a9d3b3bbbbfd8315ce6440ac.txt
+../../../.git/annex/objects/JF/GJ/MD5E-s360--cbc8f931771df7ad161db9c6f82b3520.txt/MD5E-s360--cbc8f931771df7ad161db9c6f82b3520.txt

+ 1 - 1
outputs/compare/eaf-chaaligned/eaf-chaaligned.txt

@@ -1 +1 @@
-../../../.git/annex/objects/1j/JW/MD5E-s80--ba2cd379ead8d6cc8b9f35c816eba9f2.txt/MD5E-s80--ba2cd379ead8d6cc8b9f35c816eba9f2.txt
+../../../.git/annex/objects/7P/kV/MD5E-s358--335ad1305df050e9e94b3e922edcf960.txt/MD5E-s358--335ad1305df050e9e94b3e922edcf960.txt