在nltk下载所有语料库有什么不利之处吗?

时间:2017-01-02 14:19:29

标签: python nltk

假设服务器空间不是约束,是否仍建议下载选择性语料库而不是全部?

我知道,它会增加某些操作的时间。例如virtualenv的创建。

但如果下载选择性语料库,或者全部下载了,那么nltk会有一些性能差异吗?

2 个答案:

答案 0 :(得分:4)

简单的答案是no

NLTK使用名为LazyCorpusLoader的类作为语料库,直到需要时才加载。因此,即使您导入语料库,它也不会立即加载到内存中。

例如,棕色语料库:

>>> from nltk import corpus
>>> type(corpus.brown)
<class 'nltk.corpus.util.LazyCorpusLoader'>

内存使用

至于内存使用情况,在阅读之前不会加载语料库。我们可以使用resource模块来查看。以下是棕色语料库的一个例子:

>>> import resource
>>> from nltk import corpus
>>>
>>> # show memory used after importing corpus
...
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
77780
>>> # show memory usage after import ALL corpuses
...
>>> from nltk.corpus import *
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
77780

正如您所看到的,内存使用情况没有变化。将语料库数据加载到内存后,只会通过调用tagged_sents()

来增加
>>> sents = corpus.brown.tagged_sents()
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
78276

空间使用

NLTK默认情况下将unix类系统上的语料库数据下载到~/nltk_data/corpora。写完这个回复后,我应该拥有所有语料库的最新下载。

快速检查尺寸显示:

 $ du -sh ~/nltk_data/corpora/
 8.5G   ~/nltk_data/corpora/

我知道您提到服务器空间不是约束,但由于LazyCorpusLoader,您可能有兴趣将其考虑在内。

答案 1 :(得分:0)

我认为它没有任何区别,因为语料库是独立的,你必须分别加载每个语料库才能使用它。如果您愿意,可以下载所有这些内容。

当然,假设您不打算为所有这些通配符导入