从 Gensim 维基语料库打印维基百科文章标题

Print Wikipedia Article Title from Gensim WikiCorpus

我相信我的问题很简单,但我对 python 还是个新手,我觉得这让我有点不知所措。

我已经按照 "Preparing the Corpus" 中的说明下载了 Wikipedia 转储:https://radimrehurek.com/gensim/wiki.html。然后我运行下面几行代码:

import gensim

# these next two lines take around 16 hours
wikiDocs = gensim.corpora.wikicorpus.WikiCorpus('enwiki-latest-pages-articles.xml.bz2')
gensim.corpora.MmCorpus.serialize('wiki_en_vocab200k', wikiDocs)

这几行代码取自上面的link。现在,我在一个单独的脚本中做了一些文本分析。该文本分析的结果是一个数字,代表维基文档语料库中特定文章的索引。问题是,我不知道如何打印出那篇文章的正文。显而易见的尝试是:

wikiDocs[index_of_article]

但是那个returns错误

TypeError: 'WikiCorpus' object does not support indexing

我已经尝试了一些其他的东西,但我被卡住了。感谢您的帮助。

这实际上不是一个简单的问题,它不起作用的原因是 WikiCorpus 不是迭代器,它只是一个 class 带有一些用于保存和加载的函数.您可以看到购买输入 WikiCorpus. 并按 TAB 进入 IPython 的功能(这显示了 TAB 完成的选项:

In [8]: wikiDocs = gensim.corpora.wikicorpus.WikiCorpus.
gensim.corpora.wikicorpus.WikiCorpus.get_texts    gensim.corpora.wikicorpus.WikiCorpus.load         gensim.corpora.wikicorpus.WikiCorpus.save_corpus
gensim.corpora.wikicorpus.WikiCorpus.getstream    gensim.corpora.wikicorpus.WikiCorpus.save

看起来我们想要 get_texts,这可能 return 一个迭代器而不是一个列表,(迭代器也不直接支持索引)所以你必须使用

list(wikidocs.get_texts())[i]

from itertools import islice
next(islice(wikidocs.get_texts(),i,i+1))