o
    h!                     @   sx   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 e	dZ
dd Zd	d
 Zdd Zdd Zedkr:e  dS dS )z"
Trains or scores a charlm model.
    N)charlm)common)Modestanzac                 C   sB   | j ddddgdd | j ddddd	d
 | j dddddd
 dS )z5
    Extra args for the charlm: forward/backward
    z--directionforwardbackwardz"Forward or backward language model)defaultchoiceshelpz	--forwardstore_const	directionzTrain a forward language model)actiondestconstr
   z
--backwardzTrain a backward language modelN)add_argument)parser r   [/var/www/html/env_mimamsha/lib/python3.10/site-packages/stanza/utils/training/run_charlm.pyadd_charlm_args   s   r   c                 C   s  | dd\}}tj|d ||d}	tj|d ||d}
tj|
s0tj|
d r0|
d }
tj|d ||d}tj|sMtj|d rM|d }|j}d| d	|g}| tjkrd
dg}d|vrj|d|	g7 }d|vrt|d|
g7 }|| | }t	d| t
| | tjkrd
dg}d|vr|d|
g7 }|| | }t	d| t
| | tjkrd
dg}d|vr|d|g7 }|| | }t	d| t
| d S d S )N_   CHARLM_DATA_DIRtrainzdev.txtz.xzztest.txtz--%sz--shorthandz--modez--train_dirz--eval_filez Running train step with args: %spredictzRunning dev step with args: %szRunning test step with args: %s)splitospathjoinexistsr   r   TRAINloggerinfor   main	SCORE_DEV
SCORE_TEST)modepathstreebank
short_nametemp_output_filecommand_args
extra_argsshort_languagedataset_name	train_dirdev_file	test_filer   default_args
train_argsdev_args	test_argsr   r   r   run_treebank   sH   	




r5   c                 C   s
   d| j  S )ze
    The charlm saves forward and backward charlms to the same dir, but with different filenames
    z	%s_charlm)r   )argsr   r   r   get_model_nameK   s   
r7   c                   C   s   t tdttt  d S )Nr   )r   r"   r5   r7   r   r   build_argparser   r   r   r   r"   Q   s   r"   __main__)__doc__loggingr   stanza.modelsr   stanza.utils.trainingr   stanza.utils.training.commonr   	getLoggerr    r   r5   r7   r"   __name__r   r   r   r   <module>   s    
	3
