nltk.data.load로 english.pickle을 로드하지 못했습니다.
때할도드를 할 때punkt
토큰화기...
import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')
...aLookupError
상승됨:
> 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'
> **********************************************************************
저도 같은 문제가 있었습니다.파이썬 셸로 이동하여 다음을 입력합니다.
>>> import nltk
>>> nltk.download()
그러면 설치 창이 나타납니다.'모델' 탭으로 이동하여 '식별자' 열 아래에서 '펑크트'를 선택합니다.그런 다음 다운로드를 클릭하면 필요한 파일이 설치됩니다.그러면 효과가 있을 거예요!
는 could find about about about about about about about about about about about about about .punkt
꾸미크때의 에 의문에.nltk
패키지를 설치할 때 기본적으로 사용 가능한 모든 패키지가 다운로드되지 않습니다.
다운로드할 수 있습니다.punkt
이런 포장입니다.
import nltk
nltk.download('punkt')
from nltk import word_tokenize,sent_tokenize
이는 최신 버전의 오류 메시지에서도 권장됩니다.
LookupError:
**********************************************************************
Resource punkt not found.
Please use the NLTK Downloader to obtain the resource:
>>> import nltk
>>> nltk.download('punkt')
Searched in:
- '/root/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- '/usr/nltk_data'
- '/usr/lib/nltk_data'
- ''
**********************************************************************
이 어떤 인수도 에 .download
즉 패키지를 chunkers
,grammars
,misc
,sentiment
,taggers
,corpora
,help
,models
,stemmers
,tokenizers
.
nltk.download()
위 기능은 패키지를 특정 디렉터리에 저장합니다.해당 디렉터리 위치는 여기에 있는 주석에서 찾을 수 있습니다.https://github.com/nltk/nltk/blob/67ad86524d42a3a86b1f5983868fd2990b59f1ba/nltk/downloader.py#L1051
이것이 바로 방금 저에게 효과가 있었던 것입니다.
# 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))
tences_intermized는 토큰 목록입니다.
[['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', '.']]
이 문장들은 "소셜 웹 마이닝, 2판"이라는 책에 첨부된 예시 ipython 노트에서 발췌했습니다.
bash 명령줄에서 다음을 실행합니다.
$ python -c "import nltk; nltk.download('punkt')"
내게 맞는 일:
>>> import nltk
>>> nltk.download()
윈도우에서 당신은 또한 nltk 다운로더를 얻을 것입니다.
거.nltk.download()
이 문제는 해결되지 않습니다.저는 아래와 같은 방법을 시도해 보았는데 효과가 있었습니다.
에 시대에nltk
tokenizers
을 합니다.punkt
를 에접으로 접습니다.tokenizers
폴더를 누릅니다.
효과가 있을 겁니다!폴더 구조는 그림과 같아야 합니다!1
nltk에는 사전 훈련된 토큰화 모델이 있습니다.모델은 내부적으로 미리 정의된 웹 소스에서 다운로드 중이며 가능한 함수 호출을 실행하는 동안 설치된 nltk 패키지의 경로에 저장됩니다.
예: 1 토큰화기 = nltk.data.load:nltk:tokizer/skt/english.pickle')
예: 2 nltk.download('punkt')
코드에서 위 문장을 호출하는 경우 방화벽 보호 기능이 없는 인터넷에 연결되어 있는지 확인합니다.
저는 위의 문제를 더 잘 이해하고 해결할 수 있는 더 나은 대안적인 방법을 공유하고 싶습니다.
다음 단계를 따르고 nltk를 사용한 영어 단어 토큰화를 즐겨주세요.
1단계: 먼저 웹 경로에 따라 "english.pickle" 모델을 다운로드합니다.
"http://www.nltk.org/nltk_data/ "을 링크하고 "107" 옵션에서 "http://field"를 클릭합니다.Punkt 토큰화기 모델"
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
문제가 생기면 알려주세요.
Jenkins에서 빌드 탭 아래의 Virtualenv Builder에 다음과 같은 코드를 추가하여 이 문제를 해결할 수 있습니다.
python -m nltk.downloader punkt
Spyder에서 활성 셸로 이동하여 아래 2개의 명령을 사용하여 nltk를 다운로드합니다.import nltk.download() 그러면 아래와 같이 NLTK Downloader 창이 열리는 것을 볼 수 있습니다. 이 창에서 'Models' 탭으로 이동하여 'punkt'를 클릭하고 'punkt'를 다운로드하십시오.
여러 다운로드에 할당된 폴더를 사용할 때도 비슷한 문제가 발생하여 데이터 경로를 수동으로 추가해야 했습니다.
단일 다운로드, 다음과 같이 보관할 수 있습니다(작동
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는 다운로드 기능에서 전달된 다운로드 경로를 기억합니다.다른 nads에서 후속 패키지를 다운로드하면 사용자가 설명한 것과 유사한 오류가 발생합니다.
여러 번 다운로드하면 다음 오류가 발생합니다.
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 Downloader를 사용하여 리소스를 가져오십시오.
import nltk knltk. pun('downloadkt')
이제 다운로드 경로에 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: Windows 8.1/python 3.7/nltk 3.5 사용
nltk는 " 새로운 태거에 입니다.내가 그것을 올바르게 이해한 방법은 "taggers"라는 이름의 corpora 디렉토리와 함께 새로운 디렉토리를 만들고 디렉토리 태거에서 max_pos_tagger를 복사하는 것입니다.
당신에게도 효과가 있기를 바랍니다.행운을 빌어요!!!
Python-3.6
트레이스백에서 제안을 볼 수 있습니다.꽤 도움이 되네요.따라서 저는 여러분이 받은 오류에 주목하라고 말할 것입니다. 대부분의 경우 답은 그 문제 안에 있습니다. ;).
▁like▁command와 같은 명령어를 하는 것이 좋습니다.python -c "import nltk; nltk.download('wordnet')"
즉시 설치할 수 있습니다.이 명령을 한 번만 실행하면 데이터가 홈 디렉토리에 로컬로 저장됩니다.
파이썬 콘솔로 가서 입력하면 됩니다->
import nltk
Enter 키를 누르고 다시 입력 ->
nltk.download()
그리고 인터페이스가 올 것입니다.다운로드 버튼을 검색하고 누르면 됩니다.필요한 모든 항목을 설치하고 시간이 걸립니다.시간을 주고 다시 해보세요.당신의 문제는 해결될 것입니다.
모든 NLTK 라이브러리가 있는지 확인합니다.
Punkt 토큰화기 데이터는 35MB 이상으로 매우 크며, 저처럼 리소스가 제한된 람다와 같은 환경에서 nltk를 실행하는 경우에는 큰 문제가 될 수 있습니다.
하나 또는 몇 개의 언어 토큰화기만 필요한 경우 해당 언어만 포함하여 데이터 크기를 크게 줄일 수 있습니다..pickle
파일
영어만 지원하면 되는 경우 nltk 데이터 크기를 407KB(파이썬 3 버전)로 줄일 수 있습니다.
스텝
- nltk punkt 데이터 다운로드: https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
- 환경 내에서 다음 폴더를 생성합니다.
nltk_data/tokenizers/punkt
python 3을 사용하는 경우 다른 폴더를 추가합니다.PY3
새 디렉토리 구조가 다음과 같이 표시되도록 합니다.nltk_data/tokenizers/punkt/PY3
이 경우 프로젝트의 루트에 이러한 폴더를 생성했습니다. - ZIP을 추출하고 이동합니다.
.pickle
지원할 언어에 대한 파일punkt
방금 만든 폴더입니다.참고: Python 3 사용자는 폴더의 피클을 사용해야 합니다.언어 파일이 로드된 상태에서는 다음과 같이 나타납니다. example-folder-structure - 이제 당신은 단지 당신의 것을 추가하기만 하면 됩니다.
nltk_data
데이터가 미리 정의된 검색 경로 중 하나에 있지 않다고 가정할 때 검색 경로에 대한 폴더를 만듭니다.환경 변수를 사용하여 데이터를 추가할 수 있습니다.NLTK_DATA='path/to/your/nltk_data'
다음을 수행하여 python에서 런타임에 사용자 지정 경로를 추가할 수도 있습니다.
from nltk import data
data.path += ['/path/to/your/nltk_data']
를 묶을, 당신의 참: 런: 만드는 것이 가장 좋습니다.nltk_data
nltk가 찾는 기본 제공 위치에 있는 폴더입니다.
nltk.download()
이 문제는 해결되지 않습니다.저는 아래와 같은 방법을 시도해 보았는데 효과가 있었습니다.
에 시대에'...AppData\Roaming\nltk_data\tokenizers'
받은 파일 압축 풀기, 파일 압축 풀기punkt.zip
폴더가 동일한 위치에 있습니다.
아래에 주어진 두 줄만 추가하면 됩니다.
import nltk
nltk.download('punkt')
위의 모든 전략이 작동하지 않는 경우(나의 경우) 다음 코드를 실행하십시오.
import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')
제가 이것 때문에 몇 시간을 낭비했을 것이고, 이 코드가 제 문제를 해결한 것 같습니다.
참조:
https://www.nltk.org/howto/data.html
언급URL : https://stackoverflow.com/questions/4867197/failed-loading-english-pickle-with-nltk-data-load
'source' 카테고리의 다른 글
CLion에서 단일 파일을 생성, 컴파일 및 실행하는 방법 (0) | 2023.06.11 |
---|---|
파이썬에서 병렬 프로그래밍을 수행하는 방법은 무엇입니까? (0) | 2023.06.11 |
오라클 데이터베이스의 URL은 어떻게 알 수 있습니까? (0) | 2023.06.11 |
응용 프로그램은 루트 암호(MariaDB)를 사용해야만 연결할 수 있습니다. (0) | 2023.06.06 |
데이터 프레임의 열 이름 변경 (0) | 2023.06.06 |