我相信我的问题很简单,但是我对python还是很陌生,我觉得这让我有些困惑。

我已经下载了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)


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

wikiDocs[index_of_article]


但这会返回错误

TypeError: 'WikiCorpus' object does not support indexing


我尝试了其他一些操作,但遇到了困难。谢谢你的帮助。

最佳答案

这实际上不是一个简单的问题,之所以不起作用,是因为WikiCorpus不是迭代器,它只是一个具有一些用于保存和加载功能的类。您可以看到这些函数,您可以在中键入WikiCorpus.并按TAB键(这显示了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))

关于python - 从Gensim WikiCorpus打印Wikipedia文章标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35591567/

10-12 22:15