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