o
    W+ i                     @   s|   d dl mZ d dlmZ d dlZd dlmZ d dlmZ ddl	m
Z
 ddlmZmZ d	Zejeejd
G dd de
ZdS )    )zip_longest)DictN)Metrics)default_group   )Metric)METRICS
MetricKeys   )Z	group_keymodule_namec                       sT   e Zd ZdZ fddZdedefddZdd	 ZdddZdd Z	dd Z
  ZS )
BleuMetriczThe metric computation bleu for text generation classes.

    This metric class calculates accuracy for the whole input batches.
    c                    sP   t  j|i | |dd| _|dd| _|dd| _t | _t | _d S )Neval_tokenized_bleuFhyp_nameZhypref_nameref)	super__init__getr   r   r   listrefshyps)selfargskwargs	__class__ j/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/modelscope/metrics/bleu_metric.pyr      s   zBleuMetric.__init__outputsinputsc                 C   s(   | j || j  | j|| j  d S N)r   extendr   r   r   )r   r   r   r   r   r   add   s   zBleuMetric.addc                 C   sH   | j rtj| jtt| j dd}nt| jtt| j }tj|j	iS )Nnone)tokenize)
r   	sacrebleuZcorpus_bleur   r   r   r   r	   ZBLEU_4Zscore)r   Zbleur   r   r   evaluate!   s   zBleuMetric.evaluateotherc                 C   s    | j |j  | j|j d S r    )r   r!   r   )r   r'   r   r   r   merge,   s   zBleuMetric.mergec                 C   s   | j | j| j| j| jfS r    r   r   r   r   r   )r   r   r   r   __getstate__0   s   zBleuMetric.__getstate__c                 C   s   |\| _ | _| _| _| _d S r    r)   )r   stater   r   r   __setstate__3   s   zBleuMetric.__setstate__)r'   r   )__name__
__module____qualname____doc__r   r   r"   r&   r(   r*   r,   __classcell__r   r   r   r   r      s    
r   )	itertoolsr   typingr   r%   Zmodelscope.metainfor   Zmodelscope.utils.registryr   baser   Zbuilderr   r	   ZEVAL_BLEU_ORDERZregister_moduleZBLEUr   r   r   r   r   <module>   s    