서버 공간이 제약 조건이 아니라고 가정 할 때, 전체 선택이 아니라 선택형 자료를 다운로드하는 것이 좋습니다.nltk에서 모든 자료를 다운로드 할 때 단점이 있습니까?
나는 virtualenv의 특정 작업 .e.g 생성시 추가 될 것이라고 알고 있습니다.
그러나 선택 카탈로그를 다운로드했거나 모두 다운로드 한 경우 성능 차이가 있습니까?
서버 공간이 제약 조건이 아니라고 가정 할 때, 전체 선택이 아니라 선택형 자료를 다운로드하는 것이 좋습니다.nltk에서 모든 자료를 다운로드 할 때 단점이 있습니까?
나는 virtualenv의 특정 작업 .e.g 생성시 추가 될 것이라고 알고 있습니다.
그러나 선택 카탈로그를 다운로드했거나 모두 다운로드 한 경우 성능 차이가 있습니까?
간단한 대답은 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
여기서 알 수 있듯이 메모리 사용에는 변화가 없습니다. 당신이 메모리에 코퍼스 데이터를로드 한 후 그것은 단지 기본 다운로드 ~/nltk_data/corpora
에 시스템과 같은 유닉스에 말뭉치 데이터에 의해 tagged_sents()
>>> sents = corpus.brown.tagged_sents()
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
78276
NLTK를 호출하여이 예에서 증가 할 것이다. 이 답변을 작성하면 모든 자료를 최신으로 다운로드해야합니다.
크기에 대한 빠른 검사는 보여줍니다
$ du -sh ~/nltk_data/corpora/
8.5G ~/nltk_data/corpora/
난 당신이 해당 서버 공간 제약이 아니라 인해 LazyCorpusLoader
에, 당신은 계정에 복용에 관심이있을 수 있습니다 언급 알고있다.
코퍼스가 독립적이고 각기 별도로로드해야하기 때문에 차이가 있다고 생각하지 않습니다. 원하면 모두 다운로드 할 수 있습니다.
물론 모든 항목에 대해 와일드 카드 가져 오기을 만들지 않을 것이라는 가정이 있습니다.
개인적인 취향으로 끝나는 것 같습니다. '배터리 포함'과'풀 세트 콜렉션'을 좋아 하느냐'따로 따로 팔고 싶니?'더 좋아하니? – alvas
@ Nathan의 대답은 전적으로 정확합니다 :'nltk_data'에서 사용되지 않은 리소스를 갖는 것에 대한 런타임이나 메모리 패널티가 없습니다. 새로운 무언가를 시도하거나 virtualenv에 대한 무언가를 간과 할 위험이있을 때마다 반복적으로 다운로더를 반복적으로 실행해야한다는 것을 싫어하는 경우, 일반적으로 "책"컬렉션을 다운로드하는 것만으로 충분합니다 (대화식으로 또는 'nltk.download ("book")'). **''all "'다운로드는 과도하다 (무해하지만). – alexis