
    Ng6
                    b    d dl mZ d dlmZ d dlmZ d dlmZ erd dlm	Z	  G d de          Z
dS )	    )annotations)Iterable)TYPE_CHECKING)SentenceEvaluator)SentenceTransformerc                  6     e Zd ZdZd fd fdZ	 dddZ xZS )SequentialEvaluatorz
    This evaluator allows that multiple sub-evaluators are passed. When the model is evaluated,
    the data is passed sequentially to all sub-evaluators.

    All scores are passed to 'main_score_function', which derives one final score value
    c                    | d         S )N )scoress    p/var/www/html/ai-engine/env/lib/python3.11/site-packages/sentence_transformers/evaluation/SequentialEvaluator.py<lambda>zSequentialEvaluator.<lambda>   s    cijlcm     
evaluatorsIterable[SentenceEvaluator]c                d    t                                                       || _        || _        dS )a  
        Initializes a SequentialEvaluator object.

        Args:
            evaluators (Iterable[SentenceEvaluator]): A collection of SentenceEvaluator objects.
            main_score_function (function, optional): A function that takes a list of scores and returns the main score.
                Defaults to selecting the last score in the list.

        Example:
            ::

                evaluator1 = BinaryClassificationEvaluator(...)
                evaluator2 = InformationRetrievalEvaluator(...)
                evaluator3 = MSEEvaluator(...)
                seq_evaluator = SequentialEvaluator([evaluator1, evaluator2, evaluator3])
        N)super__init__r   main_score_function)selfr   r   	__class__s      r   r   zSequentialEvaluator.__init__   s0    " 	$#6   r   Nr   modelr   output_pathstrepochintstepsreturndict[str, float]c                (   g }g }t          | j                  D ]\  }} |||||          }	t          |	t                    s|                    |	           d| |	i}	nqt          |d          r!|                    |	|j                            n@|                    |	t          |	                                          d                             |                    |	           d| _        | 	                    |          }
d |D             }|
|d<   |S )N
evaluator_primary_metricr   sequential_scorec                H    i | ]}|                                 D ]\  }}||	 S r   )items).0
evaluationkeyvalues       r   
<dictcomp>z0SequentialEvaluator.__call__.<locals>.<dictcomp>>   s7    aaa*jN^N^N`N`aa
U3aaaar   )
	enumerater   
isinstancedictappendhasattrr#   listkeysr   )r   r   r   r   r   evaluationsr   evaluator_idx	evaluatorr(   
main_scoreresultss               r   __call__zSequentialEvaluator.__call__)   s.    (1$/(B(B 	+ 	+$M9"5+ueDDJj$// Jj))):=::JG

9&677 JMM*Y-E"FGGGGMM*T*//2C2C-D-DQ-G"HIIIz****0--f55
aaaaa&0"#r   )r   r   )Nr   r   )
r   r   r   r   r   r   r   r   r   r    )__name__
__module____qualname____doc__r   r8   __classcell__)r   s   @r   r	   r	      sv          UnTm 7 7 7 7 7 7 7, bd        r   r	   N)
__future__r   collections.abcr   typingr   2sentence_transformers.evaluation.SentenceEvaluatorr   )sentence_transformers.SentenceTransformerr   r	   r   r   r   <module>rC      s    " " " " " " $ $ $ $ $ $             P P P P P P NMMMMMM4 4 4 4 4+ 4 4 4 4 4r   