gensim维基语料库混淆chunkize到chunkize_serial的问题;(uuu mp_umain_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

2024-06-28 20:08:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python和一般的编码都很陌生,所以我似乎遇到了一个问题

我正在尝试运行这段代码(归功于Matthew Mayo,整个代码都可以找到here):

# import warnings
# warnings.filterwarnings(action = 'ignore', category = UserWarning, module = 'gensim')
import sys
from gensim.corpora import WikiCorpus

def make_corpus (in_f, out_f):
    print(0)
    output = open(out_f, 'w', encoding = 'utf-8')
    print(1)
    wiki = WikiCorpus(in_f)
    print(2)
    i = 0
    for text in wiki.get_texts():
        output.write(bytes(' '.join(text), 'utf-8').decode('utf-8') + '/n')
        i += 1
        if i % 10000 == 0:
            print('Processed {} articles!'.format(i))
    print(3)
    output.close()
    print('Process complete!')



print('start')
if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('Usage: python make_wiki_corpus.py <wikipedia_dump_file> <processed_text_file>')
        sys.exit(1)
    in_f = sys.argv[1]
    out_f = sys.argv[2]
    make_corpus(in_f, out_f)
else:
    print(__name__)

但是,函数分支似乎部分运行,在wiki = WikiCorpus(in_f)处停止-它从未到达print(2)-然后退出并重复代码的开头,没有产生任何结果。实际上没有出现错误,只有警告(UserWarning: detected Windows; aliasing chunkize to chunkize_serial warnings.warn("detected Windows; aliasing chunkize to chunkize_serial")

输出如下:

start
0
1
C:\Users\name\Anaconda3\lib\site-packages\gensim\utils.py:1254: UserWarning: detected Windows; aliasing chunkize to chunkize_serial warnings.warn("detected Windows; aliasing chunkize to chunkize_serial")
start
__mp_main__
start
__mp_main__
start
__mp_main__

我尝试过卸载所有必需的软件包(numpy、smart_open)以及gensim本身(在活动的conda环境中),但没有任何改变。 另外,和多处理之间有什么区别

--规格:win64,py 3.7.3

编辑:在调试级别运行日志记录后,记录文件

2020-02-16 22:49:00,061:start: :13396 
2020-02-16 22:49:00,061:0 :13396 
2020-02-16 22:49:00,061:1 :13396 
2020-02-16 22:49:01,493:start: :22356 
2020-02-16 22:49:01,493:3 :22356 
2020-02-16 22:49:01,496:start: :25332 
2020-02-16 22:49:01,497:3 :25332 
2020-02-16 22:49:01,530:start: :7120 
2020-02-16 22:49:01,530:3 :7120 
2020-02-16 22:49:01,541:adding document #0 to Dictionary(0 unique tokens: []):13396

(另外,在else分支中添加了“3”:

else:
    logging.debug('3 ')

Tags: toinmainwindowssyswikiserialout
1条回答
网友
1楼 · 发布于 2024-06-28 20:08:00

Windows操作系统可能是一个促成因素;许多与多处理相关的事情在那里的工作方式不同,而gensim得到了更多的使用&;在别处测试。因此,如果您可以选择在另一个操作系统下测试代码,或者完全使用另一个操作系统,那么这个问题&;其他潜在的未来问题可能变得无关紧要

其他需要检查的事项&;尝试:

  • wiki_en.txt文件是否被创建,或者是否收到任何输出

  • 如果您提供processes=1作为WikiCorpus的参数,以便只使用一个工作进程,是否有帮助

  • 如果您测试了一些根本不尝试使用WikiCorpus的代码,通过尝试读取原始wiki转储,使用BZ2File以与gensim's ^{} source code相同的样式对其进行解压缩,这是否有效,或者也显示出类似的问题?(如果有类似的问题,那么它是一个有用的较小的触发案例,将注意力集中在BZ2File在Windows上的操作上。)

  • 您是否碰巧使用了Wikipedia's "multistream" BZ2 file,如果是,您是否可以尝试非多流替代方案&;查看相同的问题是否仍然存在(如果这是Windows上的BZ2File&multistream的问题)

相关问题 更多 >