o
    SiJ                     @   sD   d dl Z d dlZdZedZe jd  dkreZd
ddZdd	 Z	dS )    NgeGH\;z-inf      c                 C   s   t | | jddd | S )NT)keyreverse)sorted__getitem__)	t_state_vK r
   H/home/ubuntu/.local/lib/python3.10/site-packages/jieba/posseg/viterbi.pyget_top_states
   s   r   c              	      s  i g i g}  }|d |D ]|  d t  d < d|d < qtdtD ]] i  |i  fdd|d    D }tfdd|D }t| ||@ }	|	sn|rl|n|}	|	D ] t fdd|D \}
}|
  < || < qpq4 fd	d|d
   D }t|\}
}d gt }td }|dkr|||< || | }|d8 }|dks|
|fS )Nr       c                    s    g | ]}t  | d kr|qS )r   )len).0xtrans_pr
   r   
<listcomp>   s    zviterbi.<locals>.<listcomp>c                 3   s&    | ]} |   D ]}|V  q
qd S )N)keys)r   r   yr   r
   r   	<genexpr>   s   $ zviterbi.<locals>.<genexpr>c                 3   sH    | ]} d   | |  t    t |fV  qdS )r   N)getMIN_INF	MIN_FLOAT)r   y0Vemit_pobstr   r   r
   r   r   %   s    c                    s   g | ]
} d  | |fqS )r
   )r   r   )r   r
   r   r   *   s    r!   )r   r   r   xranger   appendsetmax)r   statesstart_pr   r   mem_path
all_statesprev_statesprev_states_expect_next
obs_statesprobstatelastrouteir
   r   r   viterbi   sN   $


r2   )r   )
sysoperatorr   floatr   version_inforanger"   r   r2   r
   r
   r
   r   <module>   s    
