Ë
    †\;jw  ã                   óþ   — d Z ddlZddlZddlZddlmZ g ZdZdZ	 G d„ d«      Z
dd„Zdd	„Zd
„ Z edddd¬«      e
j                  fd„«       Z edddd¬«      e
j                  fd„«       Z edddd¬«      d„ «       Zy)z®
imikolov's simple dataset.

This module will download dataset from
http://www.fit.vutbr.cz/~imikolov/rnnlm/ and parse training set and test set
into paddle reader creators.
é    N)Ú
deprecatedz<https://dataset.bj.bcebos.com/imikolov%2Fsimple-examples.tgzÚ 30177ea32e27c525793142b6bf2c8e2dc                   ó   — e Zd ZdZdZy)ÚDataTypeé   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNGRAMÚSEQ© ó    ú`G:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/dataset/imikolov.pyr   r   #   s   „ Ø€EØ
�Cr   r   c                 óÞ   — |€t        j                  t        «      }| D ]L  }|j                  «       j	                  «       D ]  }||xx   dz  cc<   Œ |dxx   dz  cc<   |dxx   dz  cc<   ŒN |S )Nr   ú<s>ú<e>)ÚcollectionsÚdefaultdictÚintÚstripÚsplit)ÚfÚ	word_freqÚlÚws       r   Ú
word_countr   (   so   € ØÐÜ×+Ñ+¬CÓ0ˆ	ãˆØ—‘“—‘Ö"ˆAØ�a‹L˜AÑŒLð #à�%Ó˜AÑÓØ�%Ó˜AÑÔð	 ð Ðr   c                 óÐ  — d}d}t        j                  t        j                  j                  j                  t        j                  j                  j                  dt        j                  j                  j                  «      «      5 }|j                  |«      }|j                  |«      }t        |t        |«      «      }d|v r|d= |j                  «       D �cg c]  }|d   | kD  sŒ|‘Œ }}t        |d„ ¬«      }t        t        |Ž «      \  }	}
t        t        t        |	t!        t#        |	«      «      «      «      «      }t#        |	«      |d<   ddd«       |S c c}w # 1 sw Y   S xY w)	z‡
    Build a word dictionary from the corpus,  Keys of the dictionary are words,
    and values are zero-based IDs of these words.
    ú$./simple-examples/data/ptb.train.txtú$./simple-examples/data/ptb.valid.txtÚimikolovú<unk>r   c                 ó   — | d    | d   fS )Nr   r   r   )Úxs    r   Ú<lambda>zbuild_dict.<locals>.<lambda>J   s   € ¸Q¸q¹T¸EÀ1ÀQÁ4¹=r   )ÚkeyN)ÚtarfileÚopenÚpaddleÚdatasetÚcommonÚdownloadr!   ÚURLÚMD5Úextractfiler   ÚitemsÚsortedÚlistÚzipÚdictÚrangeÚlen)Úmin_word_freqÚtrain_filenameÚtest_filenameÚtfÚtrainfÚtestfr   r$   Úword_freq_sortedÚwordsÚ_Úword_idxs               r   Ú
build_dictrA   5   s1  € ð
 <€NØ:€MÜ	�‰Ü�‰×Ñ×&Ñ&Ü�N‰N×#Ñ#×'Ñ'¨´V·^±^×5LÑ5L×5PÑ5Pó	
ô
ð 
Ø—‘ Ó/ˆØ—‘˜}Ó-ˆÜ˜u¤j°Ó&8Ó9ˆ	Ø�iÑà˜'Ð"à )§¡Ô 1ÓJÑ 1˜1°Q°q±T¸MÓ5I’QÐ 1ˆ	ÐJä! )Ñ1HÔIÐÜœÐ-Ð.Ó/‰ˆˆqÜœœS ¬¬c°%«jÓ(9Ó:Ó;Ó<ˆÜ ›Jˆ�Ñ÷#
ð& €Oùò K÷
ð& €Oús&   ÂAEÃEÃ&EÃ*A"EÅEÅE%c                 ó   ‡ ‡‡‡— ˆˆ ˆˆfd„}|S )Nc            	   3   óè  •K  — t        j                  t        j                  j                  j                  t        j                  j                  j                  dt        j                  j                  j                  «      «      5 } | j                  ‰	«      }‰d   }|D �]/  }t        j                  ‰k(  r‘‰
dkD  sJ d«       ‚dg|j                  «       j                  «       z   dgz   }t        |«      ‰
k\  sŒX|D �cg c]  }‰j                  ||«      ‘Œ }}t!        ‰
t        |«      dz   «      D ]  }t#        ||‰
z
  | «      –— Œ Œ¨t        j$                  ‰k(  rl|j                  «       j                  «       }|D �cg c]  }‰j                  ||«      ‘Œ }}‰d   g|z   }|‰d   gz   }‰
dkD  rt        |«      ‰
kD  r�Œ||f–— �Œ't'        d	«      ‚ 	 d d d «       y c c}w c c}w # 1 sw Y   y xY w­w)
Nr!   r"   éÿÿÿÿzInvalid gram lengthr   r   r   r   zUnknown data type)r'   r(   r)   r*   r+   r,   r!   r-   r.   r/   r   r   r   r   r6   Úgetr5   Útupler   ÚAssertionError)r:   r   ÚUNKr   r   ÚiÚsrc_seqÚtrg_seqÚ	data_typeÚfilenameÚnr@   s           €€€€r   Úreaderzreader_creator.<locals>.readerS   sº  øè ø€ Ü�\‰\Ü�N‰N×!Ñ!×*Ñ*Ü—‘×'Ñ'×+Ñ+ØÜ—‘×'Ñ'×+Ñ+óô
ð Ø—‘˜xÓ(ˆAà˜7Ñ#ˆCÜ�Ü—>‘> YÒ.Ø˜rš6Ð8Ð#8Ó8˜6Ø˜ !§'¡'£)§/¡/Ó"3Ñ3°u°gÑ=�AÜ˜1“v “{Ù;<Ó=¹1°a˜XŸ\™\¨!¨SÕ1¸1˜Ð=Ü!& q¬#¨a«&°1©*Ö!5˜AÜ"'¨¨!¨a©%°!¨Ó"5Ó5ñ "6ä—\‘\ YÒ.ØŸ™›	Ÿ™Ó)�AÙ78Ó9±q°!˜Ÿ™ a¨Õ-°q�AÐ9Ø'¨™Ð/°!Ñ3�GØ 8¨E¡?Ð"3Ñ3�GØ˜1’u¤ W£°Ò!1Ù Ø! 7Ð*Ô*ä(Ð)<Ó=Ð=ñ# ÷
ð 
ùò >ùò
 :÷)
ð 
üsD   ƒBG2ÂA0G&Ã7G&Ã;GÄA(G&Å<G!Æ=G&Ç	G2Ç
G&Ç&G/Ç+G2r   )rM   r@   rN   rL   rO   s   ```` r   Úreader_creatorrP   R   s   û€ ÷>ð< €Mr   z2.0.0zpaddle.text.datasets.Imikolovr   z>Please use new dataset API which supports paddle.io.DataLoader)ÚsinceÚ	update_toÚlevelÚreasonc                 ó   — t        d| ||«      S )aÏ  
    imikolov training set creator.

    It returns a reader creator, each sample in the reader is a word ID
    tuple.

    :param word_idx: word dictionary
    :type word_idx: dict
    :param n: sliding window size if type is ngram, otherwise max length of sequence
    :type n: int
    :param data_type: data type (ngram or sequence)
    :type data_type: member variable of DataType (NGRAM or SEQ)
    :return: Training reader creator
    :rtype: callable
    r   ©rP   ©r@   rN   rL   s      r   ÚtrainrX   t   ó   € ô, Ø.°¸!¸Yóð r   c                 ó   — t        d| ||«      S )aÇ  
    imikolov test set creator.

    It returns a reader creator, each sample in the reader is a word ID
    tuple.

    :param word_idx: word dictionary
    :type word_idx: dict
    :param n: sliding window size if type is ngram, otherwise max length of sequence
    :type n: int
    :param data_type: data type (ngram or sequence)
    :type data_type: member variable of DataType (NGRAM or SEQ)
    :return: Test reader creator
    :rtype: callable
    r    rV   rW   s      r   Útestr[   �   rY   r   c                  ój   — t         j                  j                  j                  t        dt
        «       y )Nr!   )r)   r*   r+   r,   r-   r.   r   r   r   Úfetchr]   ª   s    € ô ‡N�N×Ñ×"Ñ"¤3¨
´CÕ8r   )N)é2   )Ú__doc__r   r'   Úpaddle.dataset.commonr)   Úpaddle.utilsr   Ú__all__r-   r.   r   r   rA   rP   r   rX   r[   r]   r   r   r   Ú<module>rc      sÅ   ðñó Û ã Ý #à
€ð E€Ø(€÷ñ ó

óò:ñD Ø
Ø-Ø
ØKô	ð "*§¡ò óðñ* Ø
Ø-Ø
ØKô	ð !)§¡ò óðñ* Ø
Ø-Ø
ØKô	ñ9óñ9r   