o
    h                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZmZ edZdd	 Zd
ddZdd Zdd Zdd Zdd ZedkrQe  dS dS )a  
Trains or tests a sentiment model using the classifier package

The prep script has separate entries for the root-only version of SST,
which is what people typically use to test.  When training a model for
SST which uses all the data, the root-only version is used for
dev and test
    N)
classifier)common)Modebuild_charlm_argschoose_charlmfind_wordvec_pretrain)default_charlmsdefault_pretrainsstanzac                 C   s<   | j ddtdd | j dddd dd	 | j d
dddd d S )Nz--charlmdefaultzWhich charlm to run on.  Will use the default charlm for this language/model if not set.  Set to None to turn off charlm for languages with a default charlm)r   typehelpz--no_charlmcharlmstore_constzCDon't use a charlm, even if one is used by default for this package)destactionconstr   z
--use_bertF
store_truez-Use the default transformer for this language)r   r   r   )add_argumentstr)parser r   ^/var/www/html/env_mimamsha/lib/python3.10/site-packages/stanza/utils/training/run_sentiment.pyadd_sentiment_args   s   r   en_sst2rootsen_sst3roots)en_sst2
en_sstplusc                 C   s^   d|vrt |t}d|g}ng }t|||jti }t||dd}t|||}	|| |	 }
|
S )Nz--wordvec_pretrain_fileF)	base_args)r   r	   r   r   r   r   r   choose_transformer)pathsshort_languagedatasetcommand_args
extra_argswordvec_pretrainwordvec_argsr   charlm_args	bert_argsdefault_argsr   r   r   build_default_args!   s   

r*   c           
      C   s   | dd\}}t| ||||}d|g}|| }|jd ur%|d|jg |jd ur2|d|jg t|| }t|}	|	S )N_   --shorthandz--save_namez
--save_dir)splitr*   	save_nameextendsave_dirr   
parse_argsbuild_model_filename)
r    
short_namer#   r$   r!   r"   r)   
train_argsargsr/   r   r   r   r3   1   s   


r3   c                 C   s  |d }| dd\}}	tj|| d}
t||}tj|| d}tj|| d}|
||fD ]}tj|sCtd| q5t|||	||}| t	j
krrd|
d	|d
|d|ddddg}|| | }td| t| | t	jks|| t	j
krdd
|d|ddg}|| | }td| t| | t	jks| t	j
krdd
|d|ddg}|| | }td| t| d S d S )NSENTIMENT_DATA_DIRr+   r,   z.train.jsonz	.dev.jsonz
.test.jsonzCannot find %sz--train_filez
--dev_filez--test_filer-   z--wordvec_typeword2vecz--extra_wordvec_methodSUMz Running train step with args: {}z
--no_trainzRunning dev step with args: {}zRunning test step with args: {})r.   ospathjoinALTERNATE_DATASETgetexistsFileNotFoundErrorr*   r   TRAINloggerinfoformatr   main	SCORE_DEV
SCORE_TEST)moder    treebankr4   temp_output_filer#   r$   sentiment_dirr!   r"   
train_file
other_namedev_file	test_filefilenamer)   r5   dev_args	test_argsr   r   r   run_datasetA   sR   


rS   c                   C   s   t jtddtt td d S )Nr   )r3   )r   rE   rS   r   r   build_argparser3   r   r   r   r   rE   q   s   rE   __main__)__doc__loggingr:   stanza.modelsr   stanza.utils.trainingr   stanza.utils.training.commonr   r   r   r   !stanza.resources.default_packagesr   r	   	getLoggerrB   r   r=   r*   r3   rS   rE   __name__r   r   r   r   <module>   s&    	
0
