o
    h                     @   sX   d Z ddlZddlZddlZddlmZ edZdd Z	dd Ze
d	kr*e  dS dS )
z8
Utils to evaluate many models of the same type at once
    N)mainzstanza.lemmaclassifierc                 C   s,  ddddd}t | }t|}|D ]=}t j| |}||_t|d\}}}	}
|D ]}||d dd }||  |7  < q)|d  |	7  < |d  |
7  < q|d  |  < |d	  |  < |d  |  < |d  |  < t	d
|  dd|d   d|d  d|d	  dd|d   d| d |S )Ng        )behaveaccuracyweighted_f1)predefined_argsf1d   r   r   r   r   z
Models in z had average weighted f1 of z.
Lemma 'be' had f1: z
Lemma 'have' had f1: z.
Accuracy: z.
 (z models evaluated).)
oslistdirlenpathjoin	save_nameevaluate_maingetloggerinfo)path_to_models_dirargstotal_resultspaths
num_models
model_path	full_pathmcc_results	confusionaccr   lemmalemma_f1 r    g/var/www/html/env_mimamsha/lib/python3.10/site-packages/stanza/models/lemma_classifier/evaluate_many.pyevaluate_n_models   s,   
Hr"   c                  C   sD  t  } | jdtddd | jdtddd | jdtd	d
d | jdtd dd | jddddd | jdtd dd | jdttjtjt	dddd | jdttjtjt	dddd | jdttjtjt	dddd | jdtd d!d | jd"td d#d | jd$td%d& | jd'td d(d | 
 }t|j| d S ))Nz--vocab_sizei'  zNumber of tokens in vocab)typedefaulthelpz--embedding_dimr	   z?Number of dimensions in word embeddings (currently using GloVe)z--hidden_dim   zSize of hidden layerz--wordvec_pretrain_filez'Exact name of the pretrain file to readz--charlm
store_trueFz(Whether not to use the charlm embeddings)actionr$   r%   z--charlm_shorthandz=Shorthand for character-level language model training corpus.z--charlm_forward_filecharlm_filesz1billion_forward.ptzPath to forward charlm filez--charlm_backward_filez1billion_backwards.ptzPath to backward charlm filez--save_namesaved_modelszlemma_classifier_model.ptzPath to model save filez--model_typerobertaz8Which transformer to use ('bert' or 'roberta' or 'lstm')z--bert_modelz>Use a specific transformer instead of the default bert/robertaz--eval_filezpath to evaluation file)r#   r%   z--base_pathzpath to dir for eval)argparseArgumentParseradd_argumentintstrr
   r   r   dirname__file__
parse_argsr"   	base_path)parserr   r    r    r!   r   -   s    &&&r   __main__)__doc__r,   r
   logging.stanza.models.lemma_classifier.evaluate_modelsr   r   	getLoggerr   r"   __name__r    r    r    r!   <module>   s    
 
