假设服务器空间不是限制,是否仍然建议下载选择性语料库而不是全部?
我知道,它会增加某些操作的时间,例如创建 virtualenv。
但是,如果下载选择性语料库,或者全部下载语料库,nltk 的性能是否会有一些差异?
简单的答案是no
NLTK 使用一个名为LazyCorpusLoader语料库的类,该类在需要时才会加载。因此,即使您导入语料库,它也不会立即加载到内存中。
例如,对于棕色语料库:
>>> from nltk import corpus
>>> type(corpus.brown)
<class 'nltk.corpus.util.LazyCorpusLoader'>
Run Code Online (Sandbox Code Playgroud)
至于内存使用情况,语料库在读取之前不会被加载。我们可以通过使用该模块来查看这一点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
Run Code Online (Sandbox Code Playgroud)
如您所见,内存使用情况没有变化。只有在将语料库数据加载到内存中后,它才会增加,在本例中通过调用tagged_sents()
>>> sents = corpus.brown.tagged_sents()
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
78276
Run Code Online (Sandbox Code Playgroud)
默认情况下,NLTK 将类 Unix 系统上的语料库数据下载到~/nltk_data/corpora. 在写完这个回复后,我应该拥有所有语料库的最新下载。
快速检查尺寸显示:
$ du -sh ~/nltk_data/corpora/
8.5G ~/nltk_data/corpora/
Run Code Online (Sandbox Code Playgroud)
我知道您提到服务器空间不是一个限制,但由于LazyCorpusLoader,您可能有兴趣考虑它。
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |