nltk.data.load로 english.pickle을 (를) 불러 오지 못했습니다.


144

punkt토크 나이저 를로드하려고 할 때 ...

import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')

... LookupError가 제기되었습니다.

> LookupError: 
>     *********************************************************************   
> Resource 'tokenizers/punkt/english.pickle' not found.  Please use the NLTK Downloader to obtain the resource: nltk.download().   Searched in:
>         - 'C:\\Users\\Martinos/nltk_data'
>         - 'C:\\nltk_data'
>         - 'D:\\nltk_data'
>         - 'E:\\nltk_data'
>         - 'E:\\Python26\\nltk_data'
>         - 'E:\\Python26\\lib\\nltk_data'
>         - 'C:\\Users\\Martinos\\AppData\\Roaming\\nltk_data'
>     **********************************************************************

2
다음을 사용하여 피클 모델을 다운로드 할 수 있습니다.>>> nltk.download()
alvas

답변:


261

나는이 같은 문제가 있었다. 파이썬 쉘로 이동하여 다음을 입력하십시오.

>>> import nltk
>>> nltk.download()

그런 다음 설치 창이 나타납니다. '모델'탭으로 이동하여 '식별자'열에서 '펑크'를 선택하십시오. 그런 다음 다운로드를 클릭하면 필요한 파일이 설치됩니다. 그런 다음 작동합니다!


4
일부 버전에는 모델 탭이 없으며 '다운로드'로 이동하여 패키지 'punkt'을 가져 오거나 '목록'옵션을 사용하여 사용 가능한 패키지를 나열 할 수 있습니다.
ely

2
nltk_data 디렉토리의 내 홈 폴더에 설치됩니다. 이 punkt 디렉토리를 nltk 라이브러리 폴더에 복사해야합니다. pls 도움말
sumanth232

무슨 말인지 잘 모르겠습니다. tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')그런 다음 작동하고 다음과 같이 토크 나이저를 사용할 수 있습니다 tokenizer.tokenize('The cat. The mat. It Sat.'). 여기서 nltk는 tokenizers/punkt/english.pickle여러 위치에 대한 상대 경로를 해결하려고 시도합니다 . 예를 들어 Windows에서는 (D : 및 E :와 동일) %APPDATA%\nltk_data\tokenizers\punkt\english.pickle또는 보입니다 C:\nltk_data\tokenizers\punkt\english.pickle. 따라서 해당 위치 중 하나가 존재하는 방식으로 punkt.zip 파일을 압축 해제하면 파일을 찾을 수 있어야합니다.
richardr

또는 NLTK_DATA환경 변수가 %NLTK_DATA%\tokenizers\punkt\english.pickle존재 하도록 nltk_data 폴더를 가리 키도록 설정하십시오 .
richardr

X-Window 이외의 시스템에서 실행하는 경우 (예 : ssh연결 등) GUI 창이없고 'Models'탭이 없습니다.
mknaf

95

이렇게 할 수 있습니다.

import nltk
nltk.download('punkt')

from nltk import word_tokenize,sent_tokenize

함수에 punkt인수로 전달하여 토크 나이저를 다운로드 할 수 있습니다 download. 그런 다음 단어 및 문장 토큰 화 도구를에서 사용할 수 있습니다 nltk.

당신이 다운로드 모든 즉, 원하는 경우 chunkers, grammars, misc, sentiment, taggers, corpora, help, models, stemmers, tokenizers,이 같은 인수를 전달하지 않습니다.

nltk.download()

더 많은 통찰력을 위해 이것을 참조하십시오. https://www.nltk.org/data.html


1
코드 만 답이 찌그러집니다. 답변에 더 많은 설명을 추가하십시오. 어떻게 작동합니까? 유용한가요?
RubberDuck December

그것이하는 일은 nltk가 토큰 화 작업을 수행 할 수 있도록 필요한 라이브러리를 다운로드하는 것입니다.
Itzik Gili

토크 나이저를 사용하는 방법?
luckyhandler

python -c "import nltk; nltk.download('punkt')" [nltk_data] Downloading package punkt to /home/my_user/nltk_data... [nltk_data] Error downloading 'punkt' from [nltk_data] <https://raw.githubusercontent.com/nltk/nltk_data/gh- [nltk_data] pages/packages/tokenizers/punkt.zip>: HTTP Error [nltk_data] 503: first byte timeout
mrgloom

27

이것이 바로 지금 저에게 효과적이었습니다.

# Do this in a separate python interpreter session, since you only have to do it once
import nltk
nltk.download('punkt')

# Do this in your ipython notebook or analysis script
from nltk.tokenize import word_tokenize

sentences = [
    "Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.",
    "Professor Plum has a green plant in his study.",
    "Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]

sentences_tokenized = []
for s in sentences:
    sentences_tokenized.append(word_tokenize(s))

votes_tokenized는 토큰 목록의 목록입니다.

[['Mr.', 'Green', 'killed', 'Colonel', 'Mustard', 'in', 'the', 'study', 'with', 'the', 'candlestick', '.', 'Mr.', 'Green', 'is', 'not', 'a', 'very', 'nice', 'fellow', '.'],
['Professor', 'Plum', 'has', 'a', 'green', 'plant', 'in', 'his', 'study', '.'],
['Miss', 'Scarlett', 'watered', 'Professor', 'Plum', "'s", 'green', 'plant', 'while', 'he', 'was', 'away', 'from', 'his', 'office', 'last', 'week', '.']]

"Mining the Social Web, 2nd Edition"책과 함께 제공되는 예제 ipython 노트북 에서 문장을 가져 왔습니다.


16

bash 명령 행에서 다음을 실행하십시오.

$ python -c "import nltk; nltk.download('punkt')"

[nltk_data]가 나타납니다. punkt 불러 오기 오류 : HTTP 오류 405 : 허용되지 않습니다.
user2478236

1
@ user2478236 GitHub는 때때로 볼륨이 너무 커서 HTTP 405로 다운로더를 차단했습니다. github.com/nltk/nltk/issues/1787
John Vandenberg

1
나를 위해 일한 것은 nltk_data내 집 디렉토리에 폴더 를 만들고 펑크를 저장합니다. Fedora 27, Py3.6이 있습니다.
MaNKuR

13

이것은 나를 위해 작동합니다 :

>>> import nltk
>>> nltk.download()

Windows에서는 NLTK 다운로더도 얻을 수 있습니다

NLTK 다운로더


9

nltk.download()이 문제는 단순 하지 않습니다. 나는 아래를 시도했고 그것은 나를 위해 일했다 :

nltk폴더 에서 폴더를 만들고 폴더를 폴더에 tokenizers복사하십시오 .punkttokenizers

작동합니다.! 폴더 구조는 그림과 같이되어야합니다! 1


1
이것은 내 경우에는 nltk.download를 통해 다운로드 할 수 없었습니다. 그래서 nltk.org/nltk_data 에서 수동으로 파일을 다운로드하고 c : / nltk_data / tokenizers / punkt 폴더를 만들고 이 위치에있는 파일
Fermin Pitol

6

nltk에는 사전 훈련 된 토크 나이저 모델이 있습니다. 모델은 내부적으로 사전 정의 된 웹 소스에서 다운로드하여 다음 가능한 함수 호출을 실행하면서 설치된 nltk 패키지의 경로에 저장됩니다.

예 : 1 토크 나이저 = nltk.data.load ( 'nltk : 토큰 나이저 /punkt/english.pickle')

예 : 2 nltk.download ( 'punkt')

코드에서 위의 문장을 호출하는 경우 방화벽 보호없이 인터넷에 연결되어 있는지 확인하십시오.

더 나은 깊이있는 이해로 위의 문제를 해결하는 더 나은 대체 방법을 공유하고 싶습니다.

다음 단계를 따르고 nltk를 사용하여 영어 단어 토큰 화를 즐기십시오.

1 단계 : 먼저 웹 경로에 따라 "english.pickle"모델을 다운로드하십시오.

" http://www.nltk.org/nltk_data/ " 링크로 이동 하여 옵션 "107. Punkt Tokenizer Models"에서 "download"를 클릭하십시오.

2 단계 : 다운로드 한 "punkt.zip"파일을 추출하고 "english.pickle"파일을 찾아 C 드라이브에 넣습니다.

3 단계 : 붙여 넣기 다음 코드를 복사하여 실행합니다.

from nltk.data import load
from nltk.tokenize.treebank import TreebankWordTokenizer

sentences = [
    "Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.",
    "Professor Plum has a green plant in his study.",
    "Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]

tokenizer = load('file:C:/english.pickle')
treebank_word_tokenize = TreebankWordTokenizer().tokenize

wordToken = []
for sent in sentences:
    subSentToken = []
    for subSent in tokenizer.tokenize(sent):
        subSentToken.extend([token for token in treebank_word_tokenize(subSent)])

    wordToken.append(subSentToken)

for token in wordToken:
    print token

문제가 발생하면 알려주세요


매우 공격적인 방화벽 뒤에 있다면 정말 좋은 답변입니다.
kariato

5

Jenkins에서는 Virtualenv Builder에 다음과 같은 코드를 추가하여이 문제를 해결할 수 있습니다. 빌드 탭 아래의 에 .

python -m nltk.downloader punkt

여기에 이미지 설명을 입력하십시오


4

nltk에서 pos 태그 지정을 시도 할 때이 문제가 발생했습니다. 내가 올바르게 얻은 방법은 "taggers"라는 corpora 디렉토리와 함께 새 디렉토리를 만들고 디렉토리 taggers에 max_pos_tagger를 복사하는 것입니다.
그것이 당신에게도 효과가 있기를 바랍니다. 그것으로 행운을 빕니다 !!!.


4

Spyder에서 활성 셸로 이동하여 아래 두 가지 명령을 사용하여 nltk를 다운로드하십시오. import nltk nltk.download () 그러면 아래와 같이 NLTK 다운로더 창이 열립니다.이 창의 '모델'탭으로 이동하여 '펑크'를 클릭하고 '펑크'를 다운로드하십시오.

창문



0

punkt tokenizers 데이터는 35MB 이상으로 상당히 크므로 제한된 리소스가있는 람다와 같은 환경에서 nltk를 실행하는 경우 큰 문제가 될 수 있습니다.

하나 또는 몇 개의 언어 토크 나이저 만 필요한 경우 해당 언어 만 포함하여 데이터 크기를 대폭 줄일 수 있습니다 .pickle 파일 있습니다.

모든 경우에 당신은 만 NLTK 데이터의 크기를 줄일 수있다 다음 영어를 지원해야 407킬로바이트 (파이썬 3 버전).

단계

  1. nltk punkt 데이터를 다운로드하십시오 : https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
  2. 환경 어딘가에 폴더를 만듭니다. nltk_data/tokenizers/punkt, python 3을 사용하는 경우 PY3새 디렉토리 구조가 보이도록 다른 폴더를 추가 하십시오 nltk_data/tokenizers/punkt/PY3. 필자의 경우 프로젝트의 루트에 이러한 폴더를 만들었습니다.
  3. 압축을 풀고 .pickle지원하려는 언어 의 파일을 punkt방금 만든 폴더 로 옮깁니다 . 참고 : Python 3 사용자는 PY3폴더 에서 피클을 사용해야 합니다. 언어 파일이로드되면 다음과 같이 보일 것입니다 : example-folder-stucture
  4. 이제 nltk_data데이터가 사전 정의 된 검색 경로 중 하나가 아니라고 가정하면 폴더를 검색 경로에 추가하면 됩니다. 환경 변수를 사용하여 데이터를 추가 할 수 있습니다 NLTK_DATA='path/to/your/nltk_data'. 다음을 수행하여 Python에서 런타임에 사용자 정의 경로를 추가 할 수도 있습니다.
from nltk import data
data.path += ['/path/to/your/nltk_data']

참고 : 런타임에 데이터를로드하거나 코드와 함께 데이터를 번들로 묶을 필요가없는 경우 nltk가 찾는 내장 위치에nltk_data 폴더 를 만드는 것이 가장 좋습니다 .


0

nltk.download()이 문제는 해결되지 않습니다. 나는 아래를 시도했고 그것은 나를 위해 일했다 :

'...AppData\Roaming\nltk_data\tokenizers'폴더를 추출 다운로드 punkt.zip같은 위치에 폴더.


0

에서 Python-3.6나는 역 추적의 제안을 볼 수 있습니다. 매우 도움이됩니다. 따라서 나는 당신이 얻은 오류에주의를 기울여야한다고 말할 것입니다. 대부분의 대답은 그 문제 안에 있습니다.).

여기에 이미지 설명을 입력하십시오

그리고 다른 사람들이 제안한 것처럼 파이썬 터미널을 사용하거나 명령을 사용 python -c "import nltk; nltk.download('wordnet')"하여 즉시 설치할 수 있습니다. 해당 명령을 한 번만 실행하면 홈 디렉토리에 로컬로 데이터가 저장됩니다.


0

여러 다운로드에 할당 된 폴더를 사용할 때 비슷한 문제가 발생하여 데이터 경로를 수동으로 추가해야했습니다.

단일 다운로드, 다음과 같이 달성 가능 (작동)

import os as _os
from nltk.corpus import stopwords
from nltk import download as nltk_download

nltk_download('stopwords', download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

stop_words: list = stopwords.words('english')

이 코드는 작동합니다. 즉, nltk는 다운로드 기능에 전달 된 다운로드 경로를 기억합니다. 다른 패키지에서 후속 패키지를 다운로드하면 사용자가 설명한 것과 비슷한 오류가 발생합니다.

여러 번 다운로드하면 오류가 발생합니다.

import os as _os

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

from nltk import download as nltk_download

nltk_download(['stopwords', 'punkt'], download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

print(stopwords.words('english'))
print(word_tokenize("I am trying to find the download path 99."))

오류:

리소스 펑크를 찾을 수 없습니다. 리소스를 얻으려면 NLTK 다운로더를 사용하십시오.

가져 오기 nltk nltk.download ( 'punkt')

이제 다운로드 경로에 ntlk 데이터 경로를 추가하면 작동합니다.

import os as _os

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

from nltk import download as nltk_download
from nltk.data import path as nltk_path


nltk_path.append( _os.path.join(get_project_root_path(), 'temp'))


nltk_download(['stopwords', 'punkt'], download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

print(stopwords.words('english'))
print(word_tokenize("I am trying to find the download path 99."))

이것은 작동합니다 ... 왜 어떤 경우에는 작동하지만 다른 것은 작동하지 않는지 모르지만 오류 메시지는 두 번째로 다운로드 폴더에 체크인하지 않는다는 것을 암시하는 것 같습니다. NB : windows8.1 / python3.7 / nltk3.5 사용

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.