J'ai installé gensim (via pip) en Python. Une fois l'installation terminée, je reçois l'avertissement suivant:

C: \ Python27 \ lib \ site-packages \ gensim \ utils.py: 855: UserWarning: Windows détecté; aliasing chunkize en chunkize_serial warnings.warn ("Windows détecté; alias chunkize en chunkize_serial")

Comment puis-je rectifier cela?

Je ne peux pas importer word2vec depuis gensim.models en raison de cet avertissement.

J'ai les configurations suivantes: Python 2.7, gensim-0.13.4.1, numpy-1.11.3, scipy-0.18.1, pattern-2.6.

15
user7420652 15 janv. 2017 à 09:43

2 réponses

Meilleure réponse

Vous pouvez supprimer le message avec ce code avant d'importer le gensim:

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')

import gensim
33
Roland Pihlakas 31 janv. 2017 à 06:49

Je pense que ce n'est pas un gros problème. Gensim vous permet simplement de savoir qu'il sera alias chunkize à une fonction différente parce que vous utilisez un système d'exploitation spécifique.

Consultez ce code sur gensim.utils

if os.name == 'nt':
    logger.info("detected Windows; aliasing chunkize to chunkize_serial")

    def chunkize(corpus, chunksize, maxsize=0, as_numpy=False):
        for chunk in chunkize_serial(corpus, chunksize, as_numpy=as_numpy):
            yield chunk
else:
    def chunkize(corpus, chunksize, maxsize=0, as_numpy=False):
    """
    Split a stream of values into smaller chunks.
    Each chunk is of length `chunksize`, except the last one which may be smaller.
    A once-only input stream (`corpus` from a generator) is ok, chunking is done
    efficiently via itertools.

    If `maxsize > 1`, don't wait idly in between successive chunk `yields`, but
    rather keep filling a short queue (of size at most `maxsize`) with forthcoming
    chunks in advance. This is realized by starting a separate process, and is
    meant to reduce I/O delays, which can be significant when `corpus` comes
    from a slow medium (like harddisk).

    If `maxsize==0`, don't fool around with parallelism and simply yield the chunksize
    via `chunkize_serial()` (no I/O optimizations).

    >>> for chunk in chunkize(range(10), 4): print(chunk)
    [0, 1, 2, 3]
    [4, 5, 6, 7]
    [8, 9]

    """
    assert chunksize > 0

    if maxsize > 0:
        q = multiprocessing.Queue(maxsize=maxsize)
        worker = InputQueue(q, corpus, chunksize, maxsize=maxsize, as_numpy=as_numpy)
        worker.daemon = True
        worker.start()
        while True:
            chunk = [q.get(block=True)]
            if chunk[0] is None:
                break
            yield chunk.pop()
    else:
        for chunk in chunkize_serial(corpus, chunksize, as_numpy=as_numpy):
            yield chunk
15
Ayush Jain 19 oct. 2018 à 18:01