§
    *�’j,  ã                  ó„  — d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZ  e¦   «         rKd dlmZmZmZmZ 	 d d	lmZ n# e$ r dZY nw xY w	 d d
lmZ n# e$ r dZY nw xY w	 d dlmZ n# e$ r dZY nw xY w ej        e¦  «        Ze	rd dlm Z   G d„ de¦  «        Z!e G d„ de¦  «        ¦   «         Z"dS )é    )ÚannotationsN)Ú	dataclassÚfield)ÚPath)ÚTYPE_CHECKINGÚAny)ÚBaseModelCardCallbackÚBaseModelCardData)Úis_datasets_available)ÚDatasetÚDatasetDictÚIterableDatasetÚIterableDatasetDict)ÚImage)ÚAudio)ÚVideo)ÚCrossEncoderc                  ó   — e Zd ZdS )ÚCrossEncoderModelCardCallbackN)Ú__name__Ú
__module__Ú__qualname__© ó    ú\C:\Projects\DSCons\.venv\Lib\site-packages\sentence_transformers\cross_encoder\model_card.pyr   r   !   s   € € € € € Ø€Dr   r   c                  óX  ‡ — e Zd ZU dZdZded<    ed„ ¬¦  «        Zded<    edd	¬
¦  «        Zded<    edd	d	¬¦  «        Z	ded<    edd	¬
¦  «        Z
ded<    e ee¦  «        j        dz  d	d	¬¦  «        Zded<    edd	d	¬¦  «        Zded<   d"d„Zd#ˆ fd„Zd#d„Zd$d„Zd%ˆ fd!„Zˆ xZS )&ÚCrossEncoderModelCardDataa¶  A dataclass storing data used in the model card.

    Args:
        language (`Optional[Union[str, List[str]]]`): The model language, either a string or a list,
            e.g. "en" or ["en", "de", "nl"]
        license (`Optional[str]`): The license of the model, e.g. "apache-2.0", "mit",
            or "cc-by-nc-sa-4.0"
        model_name (`Optional[str]`): The pretty name of the model, e.g. "CrossEncoder based on answerdotai/ModernBERT-base".
        model_id (`Optional[str]`): The model ID when pushing the model to the Hub,
            e.g. "tomaarsen/ce-mpnet-base-ms-marco".
        train_datasets (`List[Dict[str, str]]`): A list of the names and/or Hugging Face dataset IDs of the training datasets.
            e.g. [{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}, {"name": "STSB"}]
        eval_datasets (`List[Dict[str, str]]`): A list of the names and/or Hugging Face dataset IDs of the evaluation datasets.
            e.g. [{"name": "SNLI", "id": "stanfordnlp/snli"}, {"id": "mteb/stsbenchmark-sts"}]
        task_name (`str`): The human-readable task the model is trained on,
            e.g. "semantic search and paraphrase mining".
        tags (`Optional[List[str]]`): A list of tags for the model,
            e.g. ["sentence-transformers", "cross-encoder"].
        local_files_only (`bool`): If True, don't attempt to find dataset or base model information on the Hub.
            Defaults to False.

    .. tip::

        Install `codecarbon <https://github.com/mlco2/codecarbon>`_ to automatically track carbon emission usage and
        include it in your model cards.

    Example::

        >>> model = CrossEncoder(
        ...     "microsoft/mpnet-base",
        ...     model_card_data=CrossEncoderModelCardData(
        ...         model_id="tomaarsen/ce-mpnet-base-allnli",
        ...         train_datasets=[{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}],
        ...         eval_datasets=[{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}],
        ...         license="apache-2.0",
        ...         language="en",
        ...     ),
        ... )
    Nz
str | NoneÚ	task_namec                 ó
   — g d¢S )N)zsentence-transformerszcross-encoderÚrerankerr   r   r   r   ú<lambda>z"CrossEncoderModelCardData.<lambda>R   s   € ð !
ð !
ð !
€ r   )Údefault_factoryz	list[str]ÚtagsF)ÚdefaultÚinitzlist[list] | NoneÚusage_examplesT)r$   r%   Úreprzbool | NoneÚir_modelÚstrÚpipeline_tagzmodel_card_template.mdr   Útemplate_pathzCrossEncoder | NoneÚmodelÚdatasetúDataset | DatasetDictÚreturnÚNonec                ót  — t          |t          ¦  «        r-|t          |                     ¦   «         ¦  «        d                  }t          |t          t
          f¦  «        rdS t          |¦  «        dk    rdS |d         }g }|                     ¦   «         D �]\  }}|dv rŒt          |t          ¦  «        p1t          |t          ¦  «        o|ot          |d         t          ¦  «        }d}t          |d¦  «        rp|j
                             |¦  «        }t          rt          |t          ¦  «        s8t          rt          |t          ¦  «        st          rt          |t          ¦  «        rd}|s|r|                     |¦  «         t          |¦  «        dk    r n�Œt          |¦  «        dk     rdS |\  }	}
t!          ||
         ¦  «        }|dd…         |	         }|dd…         |
         }|t          u r)|d         dd…         }|d         gt          |¦  «        z  }d	„ t#          ||¦  «        D ¦   «         | _        dS )
a  
        We don't set widget examples, but only load the prediction example.
        This is because the Hugging Face Hub doesn't currently have a Sentence Ranking
        or Text Classification widget that accepts pairs, which is what CrossEncoder
        models require.
        r   N)Údataset_nameÚlabelFÚfeaturesTé   é   c                ó   — g | ]	\  }}||g‘Œ
S r   r   )Ú.0ÚqueryÚanswers      r   ú
<listcomp>zACrossEncoderModelCardData.set_widget_examples.<locals>.<listcomp>˜   s    € ÐZÐZÐZ±=°5¸&  v˜ÐZÐZÐZr   )Ú
isinstancer   ÚlistÚkeysr   r   ÚlenÚitemsr)   Úhasattrr4   ÚgetÚImageFeatureÚAudioFeatureÚVideoFeatureÚappendÚtypeÚzipr&   )Úselfr-   Úfirst_sampleÚpair_columnsÚcolumnÚvalueÚis_textÚis_non_textÚfeatureÚquery_columnÚanswer_columnÚanswer_typeÚqueriesÚanswerss                 r   Úset_widget_examplesz-CrossEncoderModelCardData.set_widget_examplesd   s\  € õ �g�{Ñ+Ô+ð 	7Ø�d 7§<¢<¡>¤>Ñ2Ô2°1Ô5Ô6ˆGå�g¥Õ1DÐEÑFÔFð 	ØˆFåˆw‰<Œ<˜1ÒÐØˆFà˜q”zˆð ˆØ)×/Ò/Ñ1Ô1ð 	ñ 	‰MˆF�EØÐ2Ð2Ð2ØÝ  ­Ñ,Ô,Ðqµ¸EÅ4Ñ1HÔ1HÐ1pÈUÐ1pÕWaÐbgÐhiÔbjÕloÑWpÔWpˆGØˆKÝ�w 
Ñ+Ô+ð 'Ø!Ô*×.Ò.¨vÑ6Ô6�å!ð'Ý&0°½,Ñ&GÔ&Gð'å$ð'å)3°G½\Ñ)JÔ)Jð'õ %ð'õ *4°G½\Ñ)JÔ)Jð'ð
 #'�KØð ,˜+ð ,Ø×#Ò# FÑ+Ô+Ð+Ý�<Ñ Ô  AÒ%Ð%Ø�ñ &õ ˆ|ÑÔ˜qÒ Ð ØˆFà&2Ñ#ˆ�mÝ˜<¨Ô6Ñ7Ô7ˆà˜"˜1˜"”+˜lÔ+ˆØ˜"˜1˜"”+˜mÔ,ˆð �$ÐÐØ˜a”j  ! ”nˆGØ˜q”z�l¥S¨¡\¤\Ñ1ˆGàZÐZÅCÈÐQXÑDYÔDYÐZÑZÔZˆÔÐÐr   c                óº   •— t          ¦   «                              |¦  «         | j        €|j        dk    rdnd| _        | j        €|j        dk    rdnd| _        d S d S )Né   z"text reranking and semantic searchztext pair classificationztext-rankingztext-classification)ÚsuperÚregister_modelr   Ú
num_labelsr*   )rI   r,   Ú	__class__s     €r   rZ   z(CrossEncoderModelCardData.register_modelš   st   ø€ Ý‰Œ×Ò˜uÑ%Ô%Ð%àŒ>Ð!à8=Ô8HÈAÒ8MÐ8MÐ4Ð4ÐSmð ŒNð ÔÐ$Ø27Ô2BÀaÒ2GÐ2G  ÐMbˆDÔÐÐð %Ð$r   c                ó”  ‡ — ‰ j         €ddgddgddgg‰ _         ‰ j        sd S dd l}ˆ fd„‰ j         D ¦   «         }‰ j                             |dd¬	¦  «        }|                     d
¬¦  «        5  d                     d„ t          |¦  «                             ¦   «         D ¦   «         ¦  «        ‰ _	        d d d ¦  «         d S # 1 swxY w Y   d S )NúHow many calories in an eggúPThere are on average between 55 and 80 calories in an egg depending on its size.ú^Egg whites are very low in calories, have no fat, no cholesterol, and are loaded with protein.úGMost of the calories in an egg come from the yellow yolk in the center.r   c                ó,   •— g | ]}ˆfd „|D ¦   «         ‘ŒS )c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )Ú_prepare_for_inference)r8   ÚelemrI   s     €r   r;   zJCrossEncoderModelCardData.run_usage_snippet.<locals>.<listcomp>.<listcomp>»   s'   ø€ ÐQÐQÐQÀD˜d×9Ò9¸$Ñ?Ô?ÐQÐQÐQr   r   )r8   ÚpairrI   s     €r   r;   z?CrossEncoderModelCardData.run_usage_snippet.<locals>.<listcomp>»   s/   ø€ ÐrÐrÐrÐVZÐQÐQÐQÐQÈDÐQÑQÔQÐrÐrÐrr   TF)Úconvert_to_numpyÚshow_progress_baré   )Ú	precisionú
c              3  ó    K  — | ]	}d |› �V — Œ
dS )ú# Nr   )r8   Úlines     r   ú	<genexpr>z>CrossEncoderModelCardData.run_usage_snippet.<locals>.<genexpr>¾   s(   è è € Ð)[Ð)[¸$¨+¨t¨+¨+Ð)[Ð)[Ð)[Ð)[Ð)[Ð)[r   )
r&   Úgenerate_widget_examplesÚnumpyr,   ÚpredictÚprintoptionsÚjoinr)   Ú
splitlinesÚsimilarities)rI   ÚnpÚprepared_examplesÚscoress   `   r   Úrun_usage_snippetz+CrossEncoderModelCardData.run_usage_snippet¤   s[  ø€ ØÔÐ&ð 2Øfðð
 2Øtðð
 2Ø]ðð#ˆDÔð Ô,ð 	ØˆFàÐÐÐð sÐrÐrÐrÐ^bÔ^qÐrÑrÔrÐØ”×#Ò#Ð$5ÈÐ`eÐ#ÑfÔfˆØ�_Š_ qˆ_Ñ)Ô)ð 	\ð 	\Ø $§	¢	Ð)[Ð)[Å#ÀfÁ+Ä+×BXÒBXÑBZÔBZÐ)[Ñ)[Ô)[Ñ [Ô [ˆDÔð	\ð 	\ð 	\ñ 	\ô 	\ð 	\ð 	\ð 	\ð 	\ð 	\ð 	\ð 	\øøøð 	\ð 	\ð 	\ð 	\ð 	\ð 	\s   Á,AB=Â=CÃCc                ó�  — | j         p| j        }|p
ddgddgddgg}| j        pd}| j        r| j        j        nd}| j        p|}t          d„ |D ¦   «         ¦  «        }dd	d
d|› d�ddg}|D ].}|                     d|                      |¦  «        › d�¦  «         Œ/|                     ddg¦  «         | j	        r0|                     d¦  «         |                     | j	        ¦  «         nI|dk    rdt          |¦  «        › d|› d�ndt          |¦  «        › d�}	|                     dd|	› �g¦  «         |dk    rw|su|r|d         d         nd}
|rd„ |D ¦   «         ng }|                     d	ddd|
›d�dg¦  «         |D ]}|                     d|›d�¦  «         Œ|                     g d ¢¦  «         d!d"                     |¦  «        z   d#z   S )$Nr^   r_   r`   ra   Úcross_encoder_model_idrX   c              3  ór   K  — | ]2}t          |t          ¦  «        ot          d „ |D ¦   «         ¦  «        V — Œ3dS )c              3  óB   K  — | ]}t          |t          ¦  «         V — Œd S )N)r<   r)   )r8   re   s     r   ro   zMCrossEncoderModelCardData.generate_usage_snippet.<locals>.<genexpr>.<genexpr>Ö   s/   è è € Ð*VÐ*VÈ­z¸$ÅÑ/DÔ/DÐ+DÐ*VÐ*VÐ*VÐ*VÐ*VÐ*Vr   N)r<   r=   Úany©r8   rf   s     r   ro   zCCrossEncoderModelCardData.generate_usage_snippet.<locals>.<genexpr>Õ   sZ   è è € ð 
ð 
Ø[_�J�t�TÑ"Ô"ÐV¥sÐ*VÐ*VÐQUÐ*VÑ*VÔ*VÑ'VÔ'Vð
ð 
ð 
ð 
ð 
ð 
r   z.from sentence_transformers import CrossEncoderÚ u   # Download from the ðŸ¤— Hubzmodel = CrossEncoder("z")z # Get scores for pairs of inputsz	pairs = [z    ú,ú]zscores = model.predict(pairs)zprint(scores)ú(z, ú)z,)zprint(scores.shape)rm   r   c                ó   — g | ]
}|d          ‘ŒS )rX   r   r€   s     r   r;   zDCrossEncoderModelCardData.generate_usage_snippet.<locals>.<listcomp>÷   s   € Ð6Ð6Ð6 T˜˜aœÐ6Ð6Ð6r   z># Or rank different texts based on similarity to a single textzranks = model.rank(z    [z        )z    ]r…   zK# [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...]z
```python
rk   z
```)Úusage_examples_displayr&   Úmodel_idr,   r[   r   rF   Ú_format_snippet_valueÚextendrv   r?   rt   )rI   ÚdisplayÚexamplesrˆ   r[   ÚsourceÚis_multimodalÚlinesrf   Ú	shape_strr9   Ú	documentsÚdocs                r   Úgenerate_usage_snippetz0CrossEncoderModelCardData.generate_usage_snippetÀ   s¾  € ØÔ-ÐD°Ô1DˆØð 
à-Øbðð
 .Øpðð
 .ØYðð
ˆð ”=Ð<Ð$<ˆØ.2¬jÐ?�T”ZÔ*Ð*¸aˆ
ð Ô$Ð0¨ˆÝð 
ð 
Øcið
ñ 
ô 
ñ 
ô 
ˆð
 =ØØ0Ø1 XÐ1Ð1Ð1Ø.Øð
ˆð ð 	Eð 	EˆDØ�LŠLÐC × :Ò :¸4Ñ @Ô @ÐCÐCÐCÑDÔDÐDÐDØ�ŠàØ/ðñ	
ô 	
ð 	
ð Ôð 
	Ø�LŠL˜Ñ)Ô)Ð)Ø�LŠL˜Ô*Ñ+Ô+Ð+Ð+à>HÈ1ºn¸nÐ:�C ™MœMÐ:Ð:¨ZÐ:Ð:Ð:Ð:ÐRgÕVYÐZbÑVcÔVcÐRgÐRgÐRgˆIØ�LŠLà)Ø$˜Ð$Ð$ðñô ð ð ˜Š?ˆ? =ˆ?Ø&.ÐQ�H˜Q”K ”N�NÐ4QˆEØ:BÐJÐ6Ð6¨XÐ6Ñ6Ô6Ð6ÈˆIØ�LŠLàØTØ)Ø%˜5Ð%Ð%Ð%Øðñô ð ð !ð 2ð 2�Ø—’Ð0¨Ð0Ð0Ð0Ñ1Ô1Ð1Ð1Ø�LŠLðð ð ñô ð ð ˜tŸyšy¨Ñ/Ô/Ñ/°'Ñ9Ð9r   údict[str, Any]c                óŠ   •— t          ¦   «                              ¦   «         }|                     d| j        j        i¦  «         |S )NÚmodel_num_labels)rY   Úget_model_specific_metadataÚupdater,   r[   )rI   Úmetadatar\   s     €r   r—   z5CrossEncoderModelCardData.get_model_specific_metadata  sD   ø€ Ý‘7”7×6Ò6Ñ8Ô8ˆØ�Šà" D¤JÔ$9ðñ	
ô 	
ð 	
ð
 ˆr   )r-   r.   r/   r0   )r/   r0   )r/   r)   )r/   r”   )r   r   r   Ú__doc__r   Ú__annotations__r   r#   r&   r(   r*   r   Ú__file__Úparentr+   r,   rV   rZ   rz   r“   r—   Ú__classcell__)r\   s   @r   r   r   %   s¾  ø€ € € € € € ð&ð &ðR !€IÐ Ð Ð Ñ Ø�eð
ð 
ðñ ô €Dð ð ð ñ ð ).¨°dÀÐ(GÑ(GÔ(G€NÐGÐGÐGÑGØ!˜E¨$°UÀÐGÑGÔG€HÐGÐGÐGÑGð ˜ d°Ð7Ñ7Ô7€LÐ7Ð7Ð7Ñ7Ø˜%¨¨¨X©¬Ô(=Ð@XÑ(XÐ_dÐkpÐqÑqÔq€MÐqÐqÐqÑqð "' ¨t¸%ÀeÐ!LÑ!LÔ!L€EÐLÐLÐLÑLð4[ð 4[ð 4[ð 4[ðlcð cð cð cð cð cð\ð \ð \ð \ð8K:ð K:ð K:ð K:ðZð ð ð ð ð ð ð ð ð r   r   )#Ú
__future__r   ÚloggingÚdataclassesr   r   Úpathlibr   Útypingr   r   Ú%sentence_transformers.base.model_cardr	   r
   Úsentence_transformers.utilr   Údatasetsr   r   r   r   r   rC   ÚImportErrorr   rD   r   rE   Ú	getLoggerr   ÚloggerÚ)sentence_transformers.cross_encoder.modelr   r   r   r   r   r   ú<module>r«      s   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ <Ð <Ð <Ð <Ð <Ð <àÐÑÔð ØSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSÐSðØ2Ð2Ð2Ð2Ð2Ð2Ð2øØð ð ð ØˆˆˆðøøøðØ2Ð2Ð2Ð2Ð2Ð2Ð2øØð ð ð ØˆˆˆðøøøðØ2Ð2Ð2Ð2Ð2Ð2Ð2øØð ð ð Øˆˆˆðøøøð 
ˆÔ	˜8Ñ	$Ô	$€àð GØFÐFÐFÐFÐFÐFð	ð 	ð 	ð 	ð 	Ð$9ñ 	ô 	ð 	ð ðnð nð nð nð nÐ 1ñ nô nñ „ðnð nð ns6   ÁA ÁAÁAÁA" Á"A,Á+A,Á0A7 Á7BÂ B