3 `9Yã@s4ddlmZddlmZmZmZGdd„deƒZdS)é)Ú CharSetProber)ÚCharacterCategoryÚ ProbingStateÚSequenceLikelihoodcsbeZdZdZdZdZdZd‡fdd„ Z‡fd d „Ze d d „ƒZ e d d„ƒZ dd„Z dd„Z ‡ZS)ÚSingleByteCharSetProberé@igffffffî?gš™™™™™©?FNcsJtt|ƒjƒ||_||_||_d|_d|_d|_d|_ d|_ |j ƒdS)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 'sz SingleByteCharSetProber.__init__cs:tt|ƒjƒd|_dgtjƒ|_d|_d|_d|_ dS)Néÿé) rrrr rZget_num_categoriesrrrr)r)rrrr5s zSingleByteCharSetProber.resetcCs|jr|jjS|jdSdS)NÚ charset_name)r rr )rrrrr?sz$SingleByteCharSetProber.charset_namecCs|jr|jjS|jjdƒSdS)NÚlanguage)r rr Úget)rrrrrFsz SingleByteCharSetProber.languagec Csn|jds|j|ƒ}|s|jS|jd}xÂt|ƒD]¶\}}||}|tjkrZ|jd7_||jkrâ|jd7_|j |jkrâ|j d7_ |j s²|j |j|}|jd|}n||j|j }|jd|}|j |d7<||_ q2W|jd}|jt jk�rh|j |jk�rh|jƒ}||jk�r@|jjd||ƒt j|_n(||jk�rh|jjd|||jƒt j|_|jS)NZkeep_english_letterÚchar_to_order_maprZprecedence_matrixrz$%s confidence = %s, we have a winnerz9%s confidence = %s, below negative shortcut threshhold %s)r Zfilter_international_wordsÚstateÚ enumeraterZCONTROLrÚ SAMPLE_SIZErr rr rrZ DETECTINGÚSB_ENOUGH_REL_THRESHOLDÚget_confidenceÚPOSITIVE_SHORTCUT_THRESHOLDZloggerÚdebugZFOUND_ITZ_stateÚNEGATIVE_SHORTCUT_THRESHOLDZNOT_ME) rZbyte_strrÚiÚcÚorderrrZ confidencerrrÚfeedMsF           zSingleByteCharSetProber.feedcCsNd}|jdkrJd|jtj|j|jd}||j|j}|dkrJd}|S)Ng{®Gáz„?rgð?Ztypical_positive_ratiog®Gáz®ï?)rrrZPOSITIVEr rr)rÚrrrrr#|s  z&SingleByteCharSetProber.get_confidence)FN)Ú__name__Ú __module__Ú __qualname__r!r"r$r&r rÚpropertyrrr*r#Ú __classcell__rr)rrr!s  /rN)Z charsetproberrZenumsrrrrrrrrÚs