@@ -25,6 +25,8 @@ def __init__(self, parameters, dependent_criteria, name=''):
2525 dependent_criteria = dependent_criteria ,
2626 )
2727 self .evaluator = SlidesSimilarityEvaluator ()
28+ if 'slide_speech_threshold' not in self .parameters :
29+ self .parameters ['slide_speech_threshold' ] = 0.125
2830
2931 @property
3032 def description (self ):
@@ -33,8 +35,8 @@ def description(self):
3335 "Описание" : t (
3436 "Проверяет, что текст слайда соответствует словам, которые произносит студент во время демонстрации "
3537 "этого слайда" ),
36- "Оценка" : t ("1, если среднее значение соответствия речи содержимому слайдов равно или превосходит 0.125 , "
37- "иначе 8 * r , где r - среднее значение соответствия речи демонстрируемым слайдам" )
38+ "Оценка" : t ("1, если среднее значение соответствия речи содержимому слайдов равно или превосходит заданного порога (от 0 до 1) , "
39+ "иначе r / значение порога , где r - среднее значение соответствия речи демонстрируемым слайдам" )
3840 }
3941
4042 def skip_slide (self , current_slide_text : str ) -> bool :
@@ -81,8 +83,8 @@ def apply(self, audio: Audio, presentation: Presentation, training_id: ObjectId,
8183
8284 results = dict (sorted (results .items ()))
8385
84- score = 8 * (sum (list (results .values ())) / len (list (results .values ())))
86+ score = (sum (list (results .values ())) / len (list (results .values ()))) / self . parameters [ 'slide_speech_threshold' ]
8587
8688 return CriterionResult (1 if score >= 1 else score , "Отлично" if score >= 1 else "Следует уделить внимание "
8789 "соотвествию речи на слайдах "
88- "{}" .format (",\n " .join ([f"№{ n } - { results [n ]} " for n in dict (filter (lambda item : item [1 ] < 0.125 , results .items ()))])))
90+ "{}" .format (",\n " .join ([f"№{ n } - { results [n ]} " for n in dict (filter (lambda item : item [1 ] < self . parameters [ 'slide_speech_threshold' ] , results .items ()))])))
0 commit comments