Làm thế nào để cấu hình thư mục dữ liệu nltk từ mã?


Câu trả lời:


71

Chỉ cần thay đổi các mục của nltk.data.path, đó là một danh sách đơn giản.


29
hoặc đặt biến môi trường NLTK_DATA.
schemacs

Nltk.data.path của tôi '/home/aankney/nltk_data'là phần tử đầu tiên của danh sách NHƯNG tôi đang ở trên một máy chủ và muốn nltk_datađược những người khác sử dụng máy chủ chia sẻ. Làm cách nào để ngăn nltk sử dụng nó làm một trong những đường dẫn tải xuống?
Austin A

41

Từ mã, 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``.

Sau đó, trong mã:

######################################################################
# 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')
    ]

Để sửa đổi đường dẫn, chỉ cần thêm vào danh sách các đường dẫn có thể có:

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

Hoặc trong cửa sổ:

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

Thư mục nào sẽ chứa tệp này?
hlin117

nó nằm trong mã nguồn ban đầu của NLTK. Tới thư mục nơi bạn lưu các mã nguồn sau đó đi đếnnltk/nltk/data
alvas

hãy xem magically_find_nltk_data()từ stackoverflow.com/questions/36382937/…
alvas

28

Tôi sử dụng append, ví dụ

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

14

Thay vì thêm nltk.data.path.append('your/path/to/nltk_data')vào mọi tập lệnh, NLTK chấp nhận biến môi trường NLTK_DATA. ( liên kết mã )

Mở ~/.bashrc(hoặc ~/.profile) với soạn thảo văn bản (ví dụ nano, vim, gedit), và thêm dòng sau:

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

Thực thi sourceđể tải biến môi trường

source ~/.bashrc


Kiểm tra

Mở python và thực hiện các dòng sau

import nltk
nltk.data.path

Bạn có thể thấy đường dẫn dữ liệu nltk của bạn đã có trong đó.

Tham khảo: câu trả lời của @ alvations trên nltk / nltk # 1997


1

Đối với những người sử dụng uwsgi:

Tôi đang gặp sự cố vì tôi muốn một ứng dụng uwsgi (chạy với tư cách người dùng khác với chính tôi) có quyền truy cập vào dữ liệu nltk mà tôi đã tải xuống trước đó. Điều làm việc cho tôi là thêm dòng sau vào myapp_uwsgi.ini:

env = NLTK_DATA=/home/myuser/nltk_data/

Điều này đặt biến môi trường NLTK_DATA, như được đề xuất bởi @schemacs.
Bạn có thể phải khởi động lại quá trình uwsgi của mình sau khi thực hiện thay đổi này.


0

Một giải pháp khác là đi trước nó.

thử nhập nltk nltk.download ()

Khi hộp cửa sổ bật lên hỏi bạn có muốn tải xuống kho tài liệu hay không, bạn có thể chỉ định ở đó thư mục sẽ được tải xuống.


0

Sử dụng lời khuyên của fnjn ở trên về việc in ra đường dẫn:

print(nltk.data.path)

Tôi đã thấy các chuỗi đường dẫn ở loại định dạng này trên windows:

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

Vì vậy, tôi đã chuyển đường dẫn của mình từ dấu gạch chéo ngược kiểu python '/' thành dấu gạch chéo ngược kép '\\' khi tôi sử dụng path.append:

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

Ngoại lệ đã biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.