Làm thế nào để cấu hình thư mục dữ liệu nltk từ mã?
Làm thế nào để cấu hình thư mục dữ liệu nltk từ mã?
Câu trả lời:
Chỉ cần thay đổi các mục của nltk.data.path
, đó là một danh sách đơn giản.
'/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?
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")
nltk/nltk/data
magically_find_nltk_data()
từ stackoverflow.com/questions/36382937/…
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
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
Đố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.
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.