코드에서 nltk 데이터 디렉토리를 구성하는 방법은 무엇입니까?


답변:


71

의 항목 만 변경 nltk.data.path하면 간단한 목록입니다.


29
또는 NLTK_DATA 환경 변수를 설정하십시오.
schemacs

내 nltk.data.path는 '/home/aankney/nltk_data'목록의 첫 번째 요소이지만 서버에 있으며 서버를 nltk_data사용하는 다른 사람들 과 공유 하고 싶습니다 . nltk가 이것을 다운로드 경로 중 하나로 사용하지 못하게하려면 어떻게해야합니까?
Austin A

41

코드에서 http://www.nltk.org/_modules/nltk/data.html :

``nltk:path``: Specifies the file stored in the NLTK data
 package at *path*.  NLTK will search for these files in the
 directories specified by ``nltk.data.path``.

그런 다음 코드 내에서 :

######################################################################
# Search Path
######################################################################

path = []
"""A list of directories where the NLTK data package might reside.
   These directories will be checked in order when looking for a
   resource in the data package.  Note that this allows users to
   substitute in their own versions of resources, if they have them
   (e.g., in their home directory under ~/nltk_data)."""

# User-specified locations:
path += [d for d in os.environ.get('NLTK_DATA', str('')).split(os.pathsep) if d]
if os.path.expanduser('~/') != '~/':
    path.append(os.path.expanduser(str('~/nltk_data')))

if sys.platform.startswith('win'):
    # Common locations on Windows:
    path += [
        str(r'C:\nltk_data'), str(r'D:\nltk_data'), str(r'E:\nltk_data'),
        os.path.join(sys.prefix, str('nltk_data')),
        os.path.join(sys.prefix, str('lib'), str('nltk_data')),
        os.path.join(os.environ.get(str('APPDATA'), str('C:\\')), str('nltk_data'))
    ]
else:
    # Common locations on UNIX & OS X:
    path += [
        str('/usr/share/nltk_data'),
        str('/usr/local/share/nltk_data'),
        str('/usr/lib/nltk_data'),
        str('/usr/local/lib/nltk_data')
    ]

경로를 수정하려면 가능한 경로 목록에 추가하면됩니다.

import nltk
nltk.data.path.append("/home/yourusername/whateverpath/")

또는 창에서 :

import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")

이 파일을 포함 할 디렉토리는 무엇입니까?
hlin117 2014-08-10

NLTK의 원본 소스 코드에 있습니다. 소스 코드를 저장 한 디렉토리로 이동 한 다음 다음으로 이동하십시오.nltk/nltk/data
alvas

에서 살펴 magically_find_nltk_data()에서 stackoverflow.com/questions/36382937/...
alvas

28

나는 추가를 사용한다.

nltk.data.path.append('/libs/nltk_data/')

14

nltk.data.path.append('your/path/to/nltk_data')모든 스크립트 에 추가 하는 대신 NLTK는 NLTK_DATA 환경 변수를 허용합니다. ( 코드 링크 )

열기 ~/.bashrc(또는 ~/.profile텍스트 편집기) (예를 들면 nano, vim, gedit), 그리고 다음 줄을 추가합니다 :

export NLTK_DATA="your/path/to/nltk_data"

source환경 변수를로드하기 위해 실행

source ~/.bashrc


테스트

파이썬을 열고 다음 줄을 실행하십시오.

import nltk
nltk.data.path

이미 nltk 데이터 경로를 볼 수 있습니다.

참조 : nltk / nltk # 1997 에 대한 @alvations의 답변


1

uwsgi를 사용하는 경우 :

이전에 다운로드 한 nltk 데이터에 액세스 할 수있는 uwsgi 앱 (나와 다른 사용자로 실행)을 원했기 때문에 문제가 발생했습니다. 나를 위해 일한 것은 다음 줄을 추가하는 것입니다 myapp_uwsgi.ini.

env = NLTK_DATA=/home/myuser/nltk_data/

이것은 NLTK_DATA@schemacs가 제안한대로 환경 변수를 설정합니다 .
이 변경 후 uwsgi 프로세스를 다시 시작해야 할 수 있습니다.


0

또 다른 해결책은 앞서 나가는 것입니다.

import nltk nltk.download () 시도

말뭉치를 다운로드할지 묻는 창 상자가 나타나면 다운로드 할 디렉토리를 지정할 수 있습니다.


0

위의 fnjn의 조언을 사용하여 경로를 인쇄하십시오.

print(nltk.data.path)

Windows에서 이러한 형식의 경로 문자열을 보았습니다.

C:\\Users\\my_user_name\\AppData\\Roaming\\SPB_Data

그래서 path.append를 사용할 때 파이썬 유형 슬래시 '/'에서 이중 백 슬래시 '\\'로 경로를 전환했습니다.

nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")

예외가 사라졌습니다.

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