o
    h                     @   sd   d dl mZmZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
 	 edZG dd deejZdS )    )ABCabstractmethodN)split_into_batchessort_with_indicesunsortstanzac                   @   s*   e Zd Zedd Zdd ZdddZdS )	BaseClassifierc                 C   s   dS )zd
        Extract the sentences or the relevant information in the sentences from a document
        N )selfdocr	   r	   d/var/www/html/env_mimamsha/lib/python3.10/site-packages/stanza/models/classifiers/base_classifier.pyextract_sentences   s    z BaseClassifier.extract_sentencesc                 C   s   |S )z/
        By default, don't do anything
        r	   )r
   	sentencesr	   r	   r   preprocess_sentences   s   z#BaseClassifier.preprocess_sentencesNc                 C   s   |    | |}|du rdt|fg}d}nt|tdd\}}t||}g }|D ]'}|d |d  dkr6q)| ||d |d  }tj|dd}||  q)|r]t	||}t	||}t
d t||D ]\}	}
t
|	|
f qg|S )zU
        Given a list of sentences, return the model's results on that text.
        Nr   T)keyreverse   )dimzFound labels)evalr   lenr   r   torchargmaxextendtolistr   loggerdebugzip)r
   r   
batch_size	intervalsorig_idxlabelsintervaloutput	predictedlabelsentencer	   r	   r   label_sentences"   s*   




zBaseClassifier.label_sentences)N)__name__
__module____qualname__r   r   r   r&   r	   r	   r	   r   r      s
    
r   )abcr   r   loggingr   torch.nnnnstanza.models.common.utilsr   r   r   	getLoggerr   Moduler   r	   r	   r	   r   <module>   s    
	