
    c                        d Z ddlZddlZddlZddlZddlZddlmZ  ej        e          Z	ddZ
edk    r ej        dej                    ej        ej        e dd	         
          Ze                    dddd           e                    dddd           e                    dddddd           e                                Ze	                    dd                    ej                              e
ej        ej        ej                   e	                    dej                            ej        d                              dS dS )a)  This script allows converting word-vectors from word2vec format into Tensorflow 2D tensor and metadata format.
This script used for word-vector visualization on `Embedding Visualization <http://projector.tensorflow.org/>`_.


How to use
----------
#. Convert your word-vector with this script (for example, we'll use model from
   `gensim-data <https://rare-technologies.com/new-download-api-for-pretrained-nlp-models-and-datasets-in-gensim/>`_) ::

    python -m gensim.downloader -d glove-wiki-gigaword-50  # download model in word2vec format
    python -m gensim.scripts.word2vec2tensor -i ~/gensim-data/glove-wiki-gigaword-50/glove-wiki-gigaword-50.gz                                              -o /tmp/my_model_prefix

#. Open http://projector.tensorflow.org/
#. Click "Load Data" button from the left menu.
#. Select "Choose file" in "Load a TSV file of vectors." and choose "/tmp/my_model_prefix_tensor.tsv" file.
#. Select "Choose file" in "Load a TSV file of metadata." and choose "/tmp/my_model_prefix_metadata.tsv" file.
#. ???
#. PROFIT!

For more information about TensorBoard TSV format please visit:
https://www.tensorflow.org/versions/master/how_tos/embedding_viz/


Command line arguments
----------------------

.. program-output:: python -m gensim.scripts.word2vec2tensor --help
   :ellipsis: 0, -7

    N)utilsFc           	      .   t           j        j                            | |          }|dz   }|dz   }t	          j        |d          5 }t	          j        |d          5 }|j        D ]}|                    t           j                            |          t           j                            d          z              d	                    d ||         D                       }	|                    t           j                            |	          t           j                            d          z              	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t                              d	|           t                              d
|           dS )a  Convert file in Word2Vec format and writes two files 2D tensor TSV file.

    File "tensor_filename"_tensor.tsv contains word-vectors, "tensor_filename"_metadata.tsv contains words.

    Parameters
    ----------
    word2vec_model_path : str
        Path to file in Word2Vec format.
    tensor_filename : str
        Prefix for output files.
    binary : bool, optional
        True if input file in binary format.

    )binaryz_tensor.tsvz_metadata.tsvwb
	c              3   4   K   | ]}t          |          V  d S )N)str).0xs     >lib/python3.11/site-packages/gensim/scripts/word2vec2tensor.py	<genexpr>z"word2vec2tensor.<locals>.<genexpr>K   s(      "?"?a3q66"?"?"?"?"?"?    Nz2D tensor file saved to %sz Tensor metadata file saved to %s)gensimmodelsKeyedVectorsload_word2vec_formatr   openindex_to_keywriteto_utf8joinloggerinfo)
word2vec_model_pathtensor_filenamer   model
outfiletsvoutfiletsvmetafile_vectorfile_metadataword
vector_rows
             r   word2vec2tensorr$   5   s    M&;;<OX^;__E =0J$6N	J	%	% ]ejQU6V6V ]Zg& 	] 	]D 4 4T : :V\=Q=QRV=W=W WXXX"?"?5;"?"?"???Jfl22:>>AUAUVZA[A[[\\\\	]] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] KK,j999
KK2NCCCCCs7   ECD=1E=E	EE	EEE__main__z6%(asctime)s - %(module)s - %(levelname)s - %(message)s)formatleveliv)formatter_classdescriptionz-iz--inputTz%Path to input file in word2vec format)requiredhelpz-oz--outputzPrefix path for output filesz-bz--binarystore_constzGSet this flag if word2vec model in binary format (default: %(default)s))actionconstdefaultr+   z
running %s zfinished running %s)F)__doc__ossysloggingargparser   r   	getLogger__name__r   r$   basicConfigINFOArgumentParserRawDescriptionHelpFormatterparseradd_argument
parse_argsargsr   r   argvinputoutputr   pathbasename r   r   <module>rF      s   @ 
			 



         		8	$	$D D D D: z FGW_f_kllll$X$X5YgnotptotguvvvF
i$=deee
j4>\]]]
jdEV     D
KKchhsx00111ODJT[999
KK%rw'7'7'D'DEEEEEF Fr   