Nltk veri dizini koddan nasıl yapılandırılır?


Yanıtlar:


73

Sadece öğelerini değiştirin nltk.data.path, bu basit bir liste.


30
veya NLTK_DATA ortam değişkenini ayarlayın.
schemacs

Listenin '/home/aankney/nltk_data'ilk öğesi nltk.data.path'im var AMA bir sunucudayım ve nltk_datasunucuyu kullanan diğer kişiler tarafından paylaşılmak istiyorum . Nltk'nin bunu indirme yollarından biri olarak kullanmasını nasıl önleyebilirim?
Austin A

43

Http://www.nltk.org/_modules/nltk/data.html kodundan :

``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``.

Sonra kodun içinde:

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

Yolu değiştirmek için, olası yollar listesine eklemeniz yeterlidir:

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

Veya pencerelerde:

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

Bu dosyayı hangi dizin içerecektir?
hlin117

NLTK'nın orijinal kaynak kodundadır. Kaynak kodunu kaydettiğiniz dizine gidin ve şu adrese gidin:nltk/nltk/data
alvas

bakmak magically_find_nltk_data()gelen stackoverflow.com/questions/36382937/...
alvas

28

Ek kullanıyorum, örnek

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

15

nltk.data.path.append('your/path/to/nltk_data')Her betiğe ekleme yapmak yerine NLTK, NLTK_DATA ortam değişkenini kabul eder. ( kod bağlantısı )

Açık ~/.bashrc(veya ~/.profilemetin editörü ile) (örn nano, vim, gedit) ve aşağıdaki satırı ekleyin:

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

sourceÇevresel değişkeni yüklemek için yürütün

source ~/.bashrc


Ölçek

Python'u açın ve aşağıdaki satırları yürütün

import nltk
nltk.data.path

Nltk veri yolunuzu zaten orada görebilirsiniz.

Kaynak: @ alvations'ın nltk / nltk # 1997 ile ilgili yanıtı


1

Uwsgi kullananlar için:

Sorun yaşıyordum çünkü (benden farklı bir kullanıcı olarak çalışan) bir uwsgi uygulamasının daha önce indirmiş olduğum nltk verilerine erişmesini istiyordum. Benim için işe yarayan şey şu satırı eklemekti myapp_uwsgi.ini:

env = NLTK_DATA=/home/myuser/nltk_data/

Bu NLTK_DATA, @schemacs tarafından önerildiği gibi ortam değişkenini ayarlar .
Bu değişikliği yaptıktan sonra uwsgi sürecinizi yeniden başlatmanız gerekebilir.


0

Başka bir çözüm de onun önüne geçmek.

nltk nltk.download () almayı dene

Bir pencere kutusu açıldığında, külliyatı indirmek isteyip istemediğinizi sorduğunda, orada hangi dizine indirileceğini belirtebilirsiniz.


0

Yolu yazdırmak için yukarıdaki fnjn tavsiyesini kullanın:

print(nltk.data.path)

Windows'ta bu formattaki yol dizelerini gördüm:

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

Bu yüzden, path.append'i kullandığımda, yolumu python türü eğik çizgi '/' yerine çift ters eğik çizgi '\\' olarak değiştirdim:

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

İstisna ortadan kalktı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.