วิธีกำหนดค่าไดเรกทอรีข้อมูล nltk จากรหัส
วิธีกำหนดค่าไดเรกทอรีข้อมูล nltk จากรหัส
คำตอบ:
เพียงแค่เปลี่ยนรายการnltk.data.path
เป็นรายการง่ายๆ
'/home/aankney/nltk_data'
เป็นองค์ประกอบแรกของรายการ แต่ฉันอยู่บนเซิร์ฟเวอร์และต้องการnltk_data
ให้คนอื่นใช้เซิร์ฟเวอร์ร่วมกัน ฉันจะป้องกันไม่ให้ nltk ใช้สิ่งนี้เป็นหนึ่งในเส้นทางการดาวน์โหลดได้อย่างไร
จากรหัส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/")
หรือใน windows:
import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")
nltk/nltk/data
magically_find_nltk_data()
จากstackoverflow.com/questions/36382937/…
ฉันใช้ผนวกตัวอย่าง
nltk.data.path.append('/libs/nltk_data/')
แทนที่จะเพิ่ม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
เปิด python และดำเนินการตามบรรทัดต่อไปนี้
import nltk
nltk.data.path
คุณสามารถเห็นเส้นทางข้อมูล nltk ของคุณอยู่แล้ว
อ้างอิง: คำตอบของ @ alvations บน nltk / nltk # 1997
สำหรับผู้ที่ใช้ uwsgi:
ฉันประสบปัญหาเพราะต้องการให้แอป uwsgi (ทำงานเป็นผู้ใช้อื่นที่ไม่ใช่ตัวฉันเอง) เพื่อเข้าถึงข้อมูล nltk ที่ฉันดาวน์โหลดมาก่อนหน้านี้ สิ่งที่ได้ผลสำหรับฉันคือการเพิ่มบรรทัดต่อไปนี้ในmyapp_uwsgi.ini
:
env = NLTK_DATA=/home/myuser/nltk_data/
สิ่งนี้ตั้งค่าตัวแปรสภาพแวดล้อมNLTK_DATA
ตามที่แนะนำโดย @schemacs
คุณอาจต้องเริ่มกระบวนการ uwsgi ของคุณใหม่หลังจากทำการเปลี่ยนแปลงนี้
อีกวิธีหนึ่งคือการก้าวไปข้างหน้า
ลองนำเข้า nltk nltk.download ()
เมื่อกล่องหน้าต่างปรากฏขึ้นถามว่าคุณต้องการดาวน์โหลดคลังข้อมูลหรือไม่คุณสามารถระบุไดเร็กทอรีที่จะดาวน์โหลดได้
ใช้คำแนะนำของ fnjn ด้านบนในการพิมพ์เส้นทาง:
print(nltk.data.path)
ฉันเห็นสตริงเส้นทางในรูปแบบประเภทนี้บน windows:
C:\\Users\\my_user_name\\AppData\\Roaming\\SPB_Data
ดังนั้นฉันจึงเปลี่ยนเส้นทางของฉันจาก python ประเภท forward slash '/' เป็นแบ็กสแลชคู่ '\\' เมื่อฉันใช้ path.append:
nltk.data.path.append("C:\\workspace\\my_project\\data\\nltk_books")
ข้อยกเว้นหายไป