打印来自Gensim WikiCorpus的维基百科文章标题



我相信我的问题很容易,但我对python很陌生,我认为这让我有点盲目。

我已经下载了一个维基百科转储,如"准备语料库"中所述: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)

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

wikiDocs[index_of_article]

但这会返回错误

TypeError: 'WikiCorpus' object does not support indexing

我已经尝试了其他一些事情,但我被卡住了。 感谢您的任何帮助。

这实际上并不是一个容易的问题,它不起作用的原因是WikiCorpus不是一个迭代器,它只是一个具有一些用于保存和加载的函数的类。您可以看到函数购买键入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,这可能会返回一个迭代器而不是一个列表,(迭代器也不直接支持索引),所以你必须使用

list(wikidocs.get_texts())[i]

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

最新更新