o
    S"gS	                     @  s2   d Z ddlmZ ddlZddlZG dd dZdS )a@  
This file contains deprecated code that can only be used with the old `model.fit`-style Sentence Transformers v2.X training.
It exists for backwards compatibility with the `model.old_fit` method, but will be removed in a future version.

Nowadays, with Sentence Transformers v3+, it is recommended to use the `SentenceTransformerTrainer` class to train models.
See https://www.sbert.net/docs/sentence_transformer/training_overview.html for more information.

In particular, you can pass "no_duplicates" to `batch_sampler` in the `SentenceTransformerTrainingArguments` class.
    )annotationsNc                   @  s$   e Zd Zdd Zdd Zdd ZdS )NoDuplicatesDataLoaderc                 C  s(   || _ d| _d| _|| _t| 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    r   w/mnt/skqttb/ctump_chatbot/chatbot/lib/python3.10/site-packages/sentence_transformers/datasets/NoDuplicatesDataLoader.py__init__   s
   zNoDuplicatesDataLoader.__init__c                 c  s   t |  D ]|}g }t }t|| jk rv| j| j }d}|jD ]}t|t	s+t	|}|
  |v r7d} nq |rW|| |jD ]}t|t	sMt	|}||
   qB|  jd7  _| jt| jkrod| _t| j t|| jk s| jd ur| |n|V  qd S )NTF   r   )range__len__setlenr   r   r   texts
isinstancestrstriplowerappendaddr   r	   r   )r
   _batchtexts_in_batchexamplevalid_exampletextr   r   r   __iter__   s6   




zNoDuplicatesDataLoader.__iter__c                 C  s   t t| j| j S )N)mathfloorr   r   r   )r
   r   r   r   r   ;   s   zNoDuplicatesDataLoader.__len__N)__name__
__module____qualname__r   r    r   r   r   r   r   r      s    r   )__doc__
__future__r   r!   r   r   r   r   r   r   <module>   s
    
