Team Ai
Apppublic

David310/Detect_AI-generated_Image

sourceHugging Faceupdated 2y agoView on Hugging Face
4likes
simple_tokenizer.cpython-38.pyc65 linesDownload Raw Back to __pycache__
1U

2��^f�@s|ddlZddlZddlZddlmZddlZddlZe�dd��Ze�dd��Z	dd�Z3d	d4�Zdd�ZGd
d�de
�ZdS)�N)�	lru_cachecCstj�tj�tj�t��d�S)Nzbpe_simple_vocab_16e6.txt.gz)�os�path�join�dirname�abspath�__file__�r	r	�D/root/autodl-tmp/UniversalFakeDetect/models/clip/simple_tokenizer.py�default_bpe5srcCs�tttd�td�d��tttd�td�d��tttd�td�d��}|dd�}d	}td6�D],}||krf|�|�|�d7|�|d7}qfdd�|D�}tt||��S)
a98    Returns list of utf-8 byte and a corresponding list of unicode strings.9    The reversible bpe codes work on unicode strings.10    This means you need a large # of unicode characters in your vocab if you want to avoid UNKs.11    When you're at something like a 10B token dataset you end up needing around 5K for decent coverage.12    This is a signficant percentage of your normal, say, 32K bpe vocab.13    To avoid that, we want lookup tables between utf-8 bytes and unicode strings.14    And avoids mapping to whitespace/control characters the bpe code barfs on.15    �!�~��¡�¬�®�ÿNr�cSsg|]}t|��qSr	)�chr)�.0�nr	r	r16�17<listcomp>"sz$bytes_to_unicode.<locals>.<listcomp>)�list�range�ord�append�dict�zip)�bs�csr�br	r	r18�bytes_to_unicodesN1920r!cCs6t�}|d}|dd�D]}|�||f�|}q|S)zReturn set of symbol pairs in a word.21    Word is represented as tuple of symbols (symbols being variable-length strings).22    rrN)�set�add)�word�pairsZ	prev_char�charr	r	r23�	get_pairs&sr'cCs"t�|�}t�t�|��}|��S�N)�ftfyZfix_text�html�unescape�strip��textr	r	r24�basic_clean2s25r/cCst�dd|�}|��}|S)Nz\s+� )�re�subr,r-r	r	r26�whitespace_clean8sr3c@s8eZdZe�fed�dd�Zdd�Zdd�Zdd	�Zd27S)�SimpleTokenizer)�bpe_pathcCst�|_dd�|j��D�|_t�|����d��d�}|dd�}dd�|D�}t	t��28��}|d	d�|D�}|D]}|�d29�|��qv|�
ddg�tt|tt|����|_d
d�|j��D�|_tt|tt|����|_ddd�|_t�dtj�|_dS)NcSsi|]\}}||�qSr	r	�r�k�vr	r	r30�31<dictcomp>Asz,SimpleTokenizer.__init__.<locals>.<dictcomp>�utf-8�32ri��cSsg|]}t|����qSr	)�tuple�split)r�merger	r	r33rDsz,SimpleTokenizer.__init__.<locals>.<listcomp>cSsg|]}|d�qS)�</w>r	)rr8r	r	r34rFs��<|startoftext|>�
<|endoftext|>cSsi|]\}}||�qSr	r	r6r	r	r35r9Ks)rArBz[<\|startoftext\|>|<\|endoftext\|>|'s|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+)r!�byte_encoder�items�byte_decoder�gzip�open�read�decoder=r�valuesrr�extendrrr�len�encoder�decoder�	bpe_ranks�cacher1�compile�36IGNORECASE�pat)�selfr5ZmergesZvocabr>r	r	r37�__init__?szSimpleTokenizer.__init__c38sv|�jkr�j|St|dd��|ddf}t|�}|sF|dSt|�fdd�d�}|�jkrh�q^|\}}g}d}|t|�k�r4z&|�||�}	|�|||	��|	}Wn$|�||d��Y�q4YnX|||k�r|t|�dk�r||d|k�r|�||�|d7}qx|�||�|d7}qxt|�}|}t|�dk�rT�q^qFt|�}qFd	�	|�}|�j|<|S)39N�����r?cs�j�|td��S)N�inf)rO�get�float)�pair�rTr	r40�<lambda>Z�z%SimpleTokenizer.bpe.<locals>.<lambda>)�keyrr�r0)41rPr<r'�minrOrL�indexrKrr)42rT�tokenr$r%Zbigram�first�secondZnew_word�i�jr	r[r43�bpePsB44454624748495051zSimpleTokenizer.bpecsng}tt|����}t��j|�D]F}d��fdd�|�d�D��}|��fdd���	|��52d�D��q"|S)Nr@c3s|]}�j|VqdSr()rC)rr r[r	r53�	<genexpr>}sz)SimpleTokenizer.encode.<locals>.<genexpr>r:c3s|]}�j|VqdSr()rM)rZ	bpe_tokenr[r	r54rh~sr0)r3r/�lowerr1�findallrSr�encoderKrgr=)rTr.Z55bpe_tokensrbr	r[r56rkys&zSimpleTokenizer.encodecsDd��fdd�|D��}t�fdd�|D��jddd��dd	�}|S)57Nr@csg|]}�j|�qSr	)rN)rrbr[r	r58r�sz*SimpleTokenizer.decode.<locals>.<listcomp>csg|]}�j|�qSr	)rE)r�cr[r	r59r�sr:�replace)�errorsr?r0)r�	bytearrayrIrm)rT�tokensr.r	r[r60rI�s(zSimpleTokenizer.decodeN)	�__name__�61__module__�__qualname__r�strrUrgrkrIr	r	r	r62r4>s)r4)rFr*r�	functoolsrr)�regexr1rr!r'r/r3�objectr4r	r	r	r63�<module>s6465