o
    sh                     @   s"   d dl Z d dlZG dd dZdS )    Nc                   @   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
   s/var/www/html/alpaca_bot/venv/lib/python3.10/site-packages/sentence_transformers/datasets/NoDuplicatesDataLoader.py__init__   s
   zNoDuplicatesDataLoader.__init__c                 c   s    t |  D ]j}g }t }t|| jk rd| j| j }d}|jD ]}| 	 |v r.d} nq |rE|
| |jD ]}|| 	  q9|  jd7  _| jt| jkr]d| _t| j t|| jk s| jd urn| |n|V  qd S )NTF   r   )range__len__setlenr   r   r   textsstriplowerappendaddr   r   r   )r	   _batchtexts_in_batchexamplevalid_exampletextr
   r
   r   __iter__   s.   


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   )r   r   r   r
   r
   r
   r   <module>   s    