我相信我的问题很简单,但是我对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/