
    si                     `    d dl mZmZ d dlmZmZmZmZ d dlZe G d d                      Z	dS )    )	dataclassfield)AnyCallableDictListNc                       e Zd ZU dZeed<    ed           Zee	         ed<   dee
e	ef                  de
e	ej        f         fdZd	S )
SentenceTransformerDataCollatora!  Collator for a SentenceTransformers model.
    This encodes the text columns to {column}_input_ids and {column}_attention_mask columns.
    This works with the two text dataset that is used as the example in the training overview:
    https://www.sbert.net/docs/training/overview.html
    tokenize_fnc                  
    ddgS )Nlabelscore r       V/var/www/icac/venv/lib/python3.11/site-packages/sentence_transformers/data_collator.py<lambda>z(SentenceTransformerDataCollator.<lambda>   s    GWCU r   )default_factoryvalid_label_columnsfeaturesreturnc                    t          |d                                                   }i }d|v r&|                    d           |d         d         |d<   | j        D ]@|v r:t	          j        fd|D                       |d<   |                                nA|D ]G|                     fd|D                       }|                                D ]\  }}|| d| <   H|S )Nr   dataset_namec                      g | ]
}|         S r   r   ).0rowlabel_columns     r   
<listcomp>z<SentenceTransformerDataCollator.__call__.<locals>.<listcomp>   s    .U.U.USs</@.U.U.Ur   r   c                      g | ]
}|         S r   r   )r   r   columns     r   r   z<SentenceTransformerDataCollator.__call__.<locals>.<listcomp>%   s    )J)J)J##f+)J)J)Jr   _)listkeysremover   torchtensorr   items)	selfr   columnsbatch	tokenizedkeyvaluer   r   s	          @@r   __call__z(SentenceTransformerDataCollator.__call__   s6   x{''))** W$$NN>***$,QK$?E.! !4 	 	Lw&&!&.U.U.U.UH.U.U.U!V!Vg|,,, '  	1 	1F(()J)J)J)J)J)J)JKKI'oo// 1 1
U+0''#''((1r   N)__name__
__module____qualname____doc__r   __annotations__r   r   r   strr   r   r$   Tensorr-   r   r   r   r
   r
      s           %*U;U;U%V%V%VcVVVd38n!5 $sEL?P:Q      r   r
   )
dataclassesr   r   typingr   r   r   r   r$   r
   r   r   r   <module>r7      s    ( ( ( ( ( ( ( ( , , , , , , , , , , , ,                     r   