|
@@ -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')
|