
    9i(                         S SK Jr  S SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr  SS	KJr  SS
KJrJr  \R*                  " \\R,                  S9 " S S\5      5       rg)    )DictN)accuracy_scoref1_score)Metrics)
OutputKeys)default_group)torch_nested_detachtorch_nested_numpify   )Metric)METRICS
MetricKeys)	group_keymodule_namec                      ^  \ rS rSrSr\R                  \R                  4U 4S jjrS\	S\	4S jr
S rSS jrS	 rS
 rSrU =r$ )SequenceClassificationMetric   a  The metric computation class for sequence classification tasks.

This metric class calculates accuracy/F1 of all the input batches.

Args:
    label_name: The key of label column in the 'inputs' arg.
    logit_name: The key of logits column in the 'inputs' arg.
c                 Z   > [         TU ]  " U0 UD6  / U l        / U l        Xl        X l        g N)super__init__predslabels
label_name
logit_name)selfr   r   argskwargs	__class__s        q/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/metrics/sequence_classification_metric.pyr   %SequenceClassificationMetric.__init__   s/    
 	$)&)
$$    outputsinputsc                     X R                      nXR                     nU R                  R                  [	        [        U5      5      5        U R                  R                  [	        [        U5      5      5        g r   )r   r   r   appendr
   r	   r   )r   r#   r$   ground_truthseval_resultss        r    add SequenceClassificationMetric.add(   s\    //

 !4\!BC	E !4]!CD	Fr"   c                    [         R                  " U R                  SS9n[         R                  " U R                  SS9n[	        UR
                  5      S:X  d   S5       e[         R                  " USS9nUR
                  S   S:  aq  [        R                  [        X#5      [        R                  [        X#SS9[        R                  [        X#SS90nU[        R                     U[        R                  '   U$ [        R                  [        X#5      [        R                  [        X#S	S90nU[        R                     U[        R                  '   U$ )
Nr   )axis   zOnly support predictions with shape: (batch_size, num_labels),multi-label classification is not supported in this metric class.r   micro)averagemacrobinary)npconcatenater   r   lenshapeargmaxr   ACCURACYr   Micro_F1r   Macro_F1F1	Binary_F1)r   r   r   	preds_maxmetricss        r    evaluate%SequenceClassificationMetric.evaluate0   s   tzz2!45;;1$ 	j 'j 	j$IIe!,	;;q>A##^F%F##G<##G<G &-Z-@-@%AGJMM"N ##v1$$H=	G &-Z-A-A%BGJMM"Nr"   c                     U R                   R                  UR                   5        U R                  R                  UR                  5        g r   )r   extendr   )r   others     r    merge"SequenceClassificationMetric.mergeK   s.    

%++&5<<(r"   c                 ^    U R                   U R                  U R                  U R                  4$ r   )r   r   r   r   )r   s    r    __getstate__)SequenceClassificationMetric.__getstate__O   s!    zz4;;HHr"   c                 Z    U R                  5         Uu  U l        U l        U l        U l        g r   )r   r   r   r   r   )r   states     r    __setstate__)SequenceClassificationMetric.__setstate__R   s!    DIA
DK$/r"   )r   r   r   r   )rB   r   )__name__
__module____qualname____firstlineno____doc__r   LABELSLOGITSr   r   r)   r>   rC   rF   rJ   __static_attributes____classcell__)r   s   @r    r   r      sS     '--&--	%F4 F F6)IJ Jr"   r   )typingr   numpyr2   sklearn.metricsr   r   modelscope.metainfor   modelscope.outputsr   modelscope.utils.registryr   modelscope.utils.tensor_utilsr	   r
   baser   builderr   r   register_moduleseq_cls_metricr    r"   r    <module>ra      s^      4 ' ) 3A  ( 	)?)?AAJ6 AJAAJr"   