o
    Si                     @   s`   d Z ddlmZ ddlZddlZddlZddlmZ ddl	Z	dd Z
dd Zdd	 Zd
d ZdS )z
util tools
    )print_functionNc                 C   s   |   dv S )z;
    argparse does not support True or False in python
    )truet1)lower)v r   I/home/ubuntu/.local/lib/python3.10/site-packages/jieba/lac_small/utils.pystr2bool   s   r
   c                    sv  |  d }t| } t|}t|d }t|D ]}|| ||d  }}g }| || D ]}	 jt|	d  dkrB|d q/| jt|	d   q/ fdd||| D }
g }g }d}t|
D ]B\}}|dkr}|| }||	dd  qf|
d	s|d
kr|
|d  d
kr|| ||	dd  || }qf||| 7 }qft|t|k r|| q||fS )z parse result r      OOV c                    s   g | ]} j t|d   qS )r   id2label_dictstr.0iddatasetr   r	   
<listcomp>0   s    z parse_result.<locals>.<listcomp> --BO)lodnparraylenrangeid2word_dictr   append	enumeratesplitendswith)words
crf_decoder   offset_list
batch_size
sent_indexbeginendsentr   tagssent_outtags_outparital_wordindtagr   r   r	   parse_result!   s@   



"

r3   c                    s`  t | } t|}g }t|D ]}g }| tt D ]} jt|d  dkr,|d q| jt|d   q fdd|| d|| d  D }	g }
g }d}t	|	D ]B\}}|dkrm|| }||
dd  qV|d	s~|d
kr|	|d  d
kr|
| ||
dd  || }qV||| 7 }qVt|
t|k r|
| ||
|g q|S )z parse padding result r   r   r   c                    s   g | ]	} j t| qS r   r   r   r   r   r	   r   Z   s    z(parse_padding_result.<locals>.<listcomp>r   r   r   r   r   )r   squeezer   r   r*   r+   r    r   r!   r"   r#   r$   )r%   r&   seq_lensr   r(   	batch_outr)   r,   r   r-   r.   r/   r0   r1   r2   r   r   r	   parse_padding_resultL   s<   

"

r7   c                    s<   t j sJ d   fdd}tjj|  ||d dS )z
    Init CheckPoint
    z[%s] cann't be found.c                    s(   t j| sdS tjtj | jS )z(
        If existed presitabels
        F)fluidiois_persistableospathexistsjoinname)varinit_checkpoint_pathr   r	   existed_persitables   s   z,init_checkpoint.<locals>.existed_persitables)main_program	predicateN)r;   r<   r=   r8   r9   	load_vars)exerB   rD   rC   r   rA   r	   init_checkpointz   s   
rH   )__doc__
__future__r   r;   sysnumpyr   paddle.fluidr8   r9   r
   r3   r7   rH   r   r   r   r	   <module>   s   +.