web-dev-qa-db-fra.com

Avertissement Chunkize lors de l'installation de Gensim

J'ai installé gensim (via pip) en Python. Une fois l'installation terminée, j'obtiens l'avertissement suivant:

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

Comment puis-je rectifier cela?

Je ne parviens pas à importer Word2vec à partir de 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

Vous pouvez supprimer le message avec ce code avant importation de gensim:

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

import gensim
32
Roland Pihlakas

Je pense que ce n'est pas un gros problème. Gensim vous fait juste savoir qu'il alias se fragmentera en fonction différente car vous utilisez un système d'exploitation spécifique.

Découvrez ce code depuis 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
Dongmin Pete Shin