
    9i                         S SK Jr  S SKJr  S SKrS SKJr  S SKJr  SSK	J
r
  SSKJrJr  S	r\R                  " \\R                   S
9 " S S\
5      5       rg)    )zip_longest)DictN)Metrics)default_group   )Metric)METRICS
MetricKeys   )	group_keymodule_namec                   Z   ^  \ rS rSrSrU 4S jrS\S\4S jrS rSS jr	S	 r
S
 rSrU =r$ )
BleuMetric   z}The metric computation bleu for text generation classes.

This metric class calculates accuracy for the whole input batches.
c                    > [         TU ]  " U0 UD6  UR                  SS5      U l        UR                  SS5      U l        UR                  SS5      U l        [        5       U l        [        5       U l        g )Neval_tokenized_bleuFhyp_namehypref_nameref)	super__init__getr   r   r   listrefshyps)selfargskwargs	__class__s      ^/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/metrics/bleu_metric.pyr   BleuMetric.__init__   s_    $)&)#)::.CU#K 

:u5

:u5F	F	    outputsinputsc                     U R                   R                  X R                     5        U R                  R                  XR                     5        g N)r   extendr   r   r   )r   r$   r%   s      r!   addBleuMetric.add   s4    		./		/0r#   c                 D   U R                   (       a:  [        R                  " U R                  [	        [        U R                  6 5      SS9nO:[        R                  " U R                  [	        [        U R                  6 5      5      n[        R                  UR                  0$ )Nnone)tokenize)
r   	sacrebleucorpus_bleur   r   r   r   r
   BLEU_4score)r   bleus     r!   evaluateBleuMetric.evaluate!   sz    ##((		4TYY 786KD (()-k499.E)FHD tzz
 	
r#   c                     U R                   R                  UR                   5        U R                  R                  UR                  5        g r'   )r   r(   r   )r   others     r!   mergeBleuMetric.merge,   s.    		$		$r#   c                 t    U R                   U R                  U R                  U R                  U R                  4$ r'   r   r   r   r   r   )r   s    r!   __getstate__BleuMetric.__getstate__0   s,    ''tyyRVR[R[[[r#   c                 F    Uu  U l         U l        U l        U l        U l        g r'   r:   )r   states     r!   __setstate__BleuMetric.__setstate__3   s    W\T $-	49r#   )r   r   r   r   r   )r6   r   )__name__
__module____qualname____firstlineno____doc__r   r   r)   r3   r7   r;   r?   __static_attributes____classcell__)r    s   @r!   r   r      s<    
14 1 1	
%\] ]r#   r   )	itertoolsr   typingr   r.   modelscope.metainfor   modelscope.utils.registryr   baser   builderr	   r
   EVAL_BLEU_ORDERregister_moduleBLEUr    r#   r!   <module>rR      sO    !   ' 3  ( 	=gllK%] %] L%]r#   