§
    ÑìNg?  ã                  ó<   — d dl mZ d dlZd dlZ G d„ d¦  «        ZdS )é    )ÚannotationsNc                  ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚNoDuplicatesDataLoaderc                óp   — || _         d| _        d| _        || _        t	          j        | j        ¦  «         dS )z±
        A special data loader to be used with MultipleNegativesRankingLoss.
        The data loader ensures that there are no duplicate sentences within the same batch
        r   N)Ú
batch_sizeÚdata_pointerÚ
collate_fnÚtrain_examplesÚrandomÚshuffle)Úselfr
   r   s      úq/var/www/html/ai-engine/env/lib/python3.11/site-packages/sentence_transformers/datasets/NoDuplicatesDataLoader.pyÚ__init__zNoDuplicatesDataLoader.__init__   s;   € ð
 %ˆŒØˆÔØˆŒØ,ˆÔÝŒtÔ*Ñ+Ô+Ð+Ð+Ð+ó    c              #  óü  K  — t          |                      ¦   «         ¦  «        D ]V}g }t          ¦   «         }t          |¦  «        | j        k     r
| j        | j                 }d}|j        D ].}|                     ¦   «          	                    ¦   «         |v rd} nŒ/|rX| 
                    |¦  «         |j        D ];}|                     |                     ¦   «          	                    ¦   «         ¦  «         Œ<| xj        dz  c_        | j        t          | j        ¦  «        k    r d| _        t          j        | j        ¦  «         t          |¦  «        | j        k     °
| j        |                      |¦  «        n|V — ŒXd S )NTFé   r   )ÚrangeÚ__len__ÚsetÚlenr   r
   r   ÚtextsÚstripÚlowerÚappendÚaddr   r   r	   )r   Ú_ÚbatchÚtexts_in_batchÚexampleÚvalid_exampleÚtexts          r   Ú__iter__zNoDuplicatesDataLoader.__iter__   s‰  è è € Ýt—|’|‘~”~Ñ&Ô&ð 	Sñ 	SˆAØˆEÝ ™UœUˆNåe‘*”*˜tœÒ.Ñ.ØÔ-¨dÔ.?Ô@à $Ø#œMð ð DØ—z’z‘|”|×)Ò)Ñ+Ô+¨~Ð=Ð=Ø(-˜Ø˜ð >ð !ð AØ—L’L Ñ)Ô)Ð)Ø '¤ð Að A˜Ø&×*Ò*¨4¯:ª:©<¬<×+=Ò+=Ñ+?Ô+?Ñ@Ô@Ð@Ð@àÐ!Ô! QÑ&Ð!Ô!ØÔ$­¨DÔ,?Ñ(@Ô(@Ò@Ð@Ø()DÔ%Ý”N 4Ô#6Ñ7Ô7Ð7õ# e‘*”*˜tœÒ.Ñ.ð& -1¬OÐ,G$—/’/ %Ñ(Ô(Ð(ÈUÐRÐRÐRÑRð/	Sð 	Sr   c                ó^   — t          j        t          | j        ¦  «        | j        z  ¦  «        S )N)ÚmathÚfloorr   r
   r   )r   s    r   r   zNoDuplicatesDataLoader.__len__-   s$   € ÝŒz#˜dÔ1Ñ2Ô2°T´_ÑDÑEÔEÐEr   N)Ú__name__Ú
__module__Ú__qualname__r   r"   r   © r   r   r   r      sI   € € € € € ð	,ð 	,ð 	,ðSð Sð Sð4Fð Fð Fð Fð Fr   r   )Ú
__future__r   r$   r   r   r)   r   r   ú<module>r+      se   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€ð'Fð 'Fð 'Fð 'Fð 'Fñ 'Fô 'Fð 'Fð 'Fð 'Fr   