Gensim WikiCorpus的问题 - 别名分块化为chunkize_serial;(__mp_main__而不是



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

我正在尝试运行此代码(归功于马修·梅奥,整个事情可以在这里找到(:

# 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:UsersnameAnaconda3libsite-packagesgensimutils.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

(此外,"3"已添加到else分支中:(

else:
logging.debug('3 ')

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

其他要检查和尝试的事情:

  • 是否创建了wiki_en.txt文件或接收了任何输出?

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

  • 如果你测试了一些根本不尝试使用WikiCorpus的代码,通过尝试读取原始 wiki 转储,使用BZ2File解压缩它,风格与 Gensim 的wikicorpus.py源代码相同,这是否有效,或者也显示出类似的问题?(如果存在类似的问题,那么这是一个有用的较小的触发案例,将注意力集中在 Windows 上的BZ2File操作上。

  • 您是否偶然使用了维基百科的"多流"BZ2文件,如果是这样,您能否尝试非多流替代方案,看看相同的问题是否仍然存在(如果这是Windows上的BZ2File和多流问题(?

最新更新