
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ÝPf  ã               @   s4   d dl mZ d dlmZmZmZ G dd„ deƒZdS )é   )ÚCharSetProber)ÚCharacterCategoryÚProbingStateÚSequenceLikelihoodc                   sb   e Zd ZdZdZdZdZd‡ fdd„	Z‡ fd	d
„Ze	dd„ ƒZ
e	dd„ ƒZdd„ Zdd„ Z‡  ZS )ÚSingleByteCharSetProberé@   i   gffffffî?gš™™™™™©?FNc                sJ   t t| ƒjƒ  || _|| _|| _d | _d | _d | _d | _	d | _
| jƒ  d S )N)Úsuperr   Ú__init__Ú_modelÚ	_reversedÚ_name_proberÚ_last_orderÚ_seq_countersÚ_total_seqsÚ_total_charÚ
_freq_charÚreset)ÚselfÚmodelÚreversedZname_prober)Ú	__class__© ú%/usr/lib/python3.6/sbcharsetprober.pyr	   '   s    z SingleByteCharSetProber.__init__c                s:   t t| ƒjƒ  d| _dgtjƒ  | _d| _d| _d| _	d S )Néÿ   é    )
r   r   r   r   r   Zget_num_categoriesr   r   r   r   )r   )r   r   r   r   5   s    zSingleByteCharSetProber.resetc             C   s   | j r| j jS | jd S d S )NÚcharset_name)r   r   r
   )r   r   r   r   r   ?   s    z$SingleByteCharSetProber.charset_namec             C   s   | j r| j jS | jjdƒS d S )NÚlanguage)r   r   r
   Úget)r   r   r   r   r   F   s    z SingleByteCharSetProber.languagec       	      C   sn  | j d s| j|ƒ}|s| jS | j d }xÂt|ƒD ]¶\}}|| }|tjk rZ|  jd7  _|| jk râ|  jd7  _| j	| jk râ|  j
d7  _
| js²| j	| j | }| j d | }n|| j | j	 }| j d | }| j|  d7  < || _	q2W | j d }| jtjk�rh| j
| jk�rh| jƒ }|| jk�r@| jjd||ƒ tj| _n(|| jk �rh| jjd||| jƒ tj| _| jS )NZkeep_english_letterÚchar_to_order_mapr   Zprecedence_matrixr   z$%s confidence = %s, we have a winnerz9%s confidence = %s, below negative shortcut threshhold %s)r
   Zfilter_international_wordsÚstateÚ	enumerater   ZCONTROLr   ÚSAMPLE_SIZEr   r   r   r   r   r   Z	DETECTINGÚSB_ENOUGH_REL_THRESHOLDÚget_confidenceÚPOSITIVE_SHORTCUT_THRESHOLDZloggerÚdebugZFOUND_ITZ_stateÚNEGATIVE_SHORTCUT_THRESHOLDZNOT_ME)	r   Zbyte_strr   ÚiÚcÚorderr   r   Z
confidencer   r   r   ÚfeedM   sF    







zSingleByteCharSetProber.feedc             C   sN   d}| j dkrJd| jtj  | j  | jd  }|| j | j }|dkrJd}|S )Ng{®Gáz„?r   g      ð?Ztypical_positive_ratiog®Gáz®ï?)r   r   r   ZPOSITIVEr
   r   r   )r   Úrr   r   r   r#   |   s    
 z&SingleByteCharSetProber.get_confidence)FN)Ú__name__Ú
__module__Ú__qualname__r!   r"   r$   r&   r	   r   Úpropertyr   r   r*   r#   Ú__classcell__r   r   )r   r   r   !   s   
/r   N)Zcharsetproberr   Zenumsr   r   r   r   r   r   r   r   Ú<module>   s   