我对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环境中),但没有任何改变。另外,main和多处理程序有什么区别?
-规格: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's wikicorpus.py
source code解压缩它,这项工作,还是显示出类似的问题? (如果存在类似的问题,则它是一个较小的触发案例,将注意力集中在Windows上的wikicorpus.py
操作上。)
您是否偶然使用BZ2File
,如果可以,您可以尝试使用非多流替代方法并查看是否仍然存在相同的问题(如果这是Windows上Wikipedia's "multistream" BZ2 file和多流的问题)?