
    uj                         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        
           G d de
                      ZdS )    )zip_longest)DictN)Metrics)default_group   )Metric)METRICS
MetricKeys   )	group_keymodule_namec                   L     e Zd ZdZ fdZdedefdZd ZddZd	 Z	d
 Z
 xZS )
BleuMetriczThe metric computation bleu for text generation classes.

    This metric class calculates accuracy for the whole input batches.
    c                 (    t                      j        |i | |                    dd          | _        |                    dd          | _        |                    dd          | _        t                      | _        t                      | _        d S )Neval_tokenized_bleuFhyp_namehypref_nameref)	super__init__getr   r   r   listrefshyps)selfargskwargs	__class__s      n/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/modelscope/metrics/bleu_metric.pyr   zBleuMetric.__init__   sz    $)&)))#)::.CU#K#K 

:u55

:u55FF	FF			    outputsinputsc                     | j                             || j                            | j                            || j                            d S N)r   extendr   r   r   )r   r"   r#   s      r    addzBleuMetric.add   sB    	.///	/00000r!   c                    | j         r6t          j        | j        t	          t          | j                   d          }n3t          j        | j        t	          t          | j                             }t          j        |j	        iS )Nnone)tokenize)
r   	sacrebleucorpus_bleur   r   r   r   r
   BLEU_4score)r   bleus     r    evaluatezBleuMetric.evaluate!   s    # 	H(	4TY 7886K K KDD ()-k49.E)F)FH HD tz
 	
r!   otherc                     | j                             |j                    | j                            |j                   d S r%   )r   r&   r   )r   r1   s     r    mergezBleuMetric.merge,   s8    	$$$	$$$$$r!   c                 B    | j         | j        | j        | j        | j        fS r%   r   r   r   r   r   )r   s    r    __getstate__zBleuMetric.__getstate__0   s     'tyRVR[[[r!   c                 H    |\  | _         | _        | _        | _        | _        d S r%   r5   )r   states     r    __setstate__zBleuMetric.__setstate__3   s!    W\T $-	4999r!   )r1   r   )__name__
__module____qualname____doc__r   r   r'   r0   r3   r6   r9   __classcell__)r   s   @r    r   r      s         
    14 1 1 1 1 1	
 	
 	
% % % %\ \ \] ] ] ] ] ] ]r!   r   )	itertoolsr   typingr   r+   modelscope.metainfor   modelscope.utils.registryr   baser   builderr	   r
   EVAL_BLEU_ORDERregister_moduleBLEUr    r!   r    <module>rI      s    ! ! ! ! ! !           ' ' ' ' ' ' 3 3 3 3 3 3       ( ( ( ( ( ( ( ( =glKKK%] %] %] %] %] %] %] LK%] %] %]r!   