Nltk: Gagal mengunduh data NLTK: HTTP ERROR 405/403

Dibuat pada 26 Jul 2017  ·  47Komentar  ·  Sumber: nltk/nltk

>>> nltk.download("all")
[nltk_data] Error loading all: HTTP Error 405: Not allowed.

>>> nltk.version_info
sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)

Selain itu, saya mencoba mengunjungi https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/cmudict.zip . Punya HTTP 405 ERROR yang sama.

Temukan masalah yang sama di stackoverflow: https://stackoverflow.com/questions/45318066/getting-405- While-trying-to-

Setiap komentar akan dihargai.

admin bug corpus inactive

Komentar yang paling membantu

@plaihonen Anda seharusnya dapat menggunakan indeks alternatif ini dengan melakukan sesuatu seperti python -m nltk.downloader -u https://pastebin.com/raw/D3TBY4Mj punkt

Semua 47 komentar

Sepertinya Github sedang down / memblokir akses ke konten mentah di repo.

Sedangkan solusi sementara adalah seperti ini:

PATH_TO_NLTK_DATA=/home/username/nltk_data/
wget https://github.com/nltk/nltk_data/archive/gh-pages.zip
unzip gh-pages.zip
mv nltk_data-gh-pages/ $PATH_TO_NLTK_DATA

Saat ini mengunduh gh-pages.zip dan mengganti direktori nltk_data adalah solusi yang berfungsi untuk saat ini.

Sebelum kami menemukan saluran lain untuk mendistribusikan nltk_data , gunakan solusi di atas.


~ Anehnya, tampaknya hanya memengaruhi akun pengguna nltk . Ini berfungsi dengan baik di garpu: https://raw.githubusercontent.com/alvations/nltk_data/gh-pages/index.xml~

~ Melakukan ini akan berhasil juga: ~

@alvations Terima kasih banyak!

Apakah ada alternatif untuk unduhan baris perintah seperti ini?
python -m nltk.downloader -d ./nltk_data punkt

@plaihonen Anda seharusnya dapat menggunakan indeks alternatif ini dengan melakukan sesuatu seperti python -m nltk.downloader -u https://pastebin.com/raw/D3TBY4Mj punkt

@rvause Bekerja dengan sempurna. Terima kasih!

+1. ini adalah kejutan beberapa jam pagi ini. Pergi dengan sepenuhnya melewati unduhan nltk untuk saat ini

GitHub saat ini memblokir akses karena "pengguna menggunakan banyak sekali bandwidth yang meminta file". Mereka juga menyarankan agar kita melihat cara berbeda dalam mendistribusikan paket data, misalnya S3.

Bahkan dengan indeks alternatif, ada yang menemukan bahwa beberapa paket masih tidak berfungsi?

Secara khusus, bagi saya, paket stopwords memberi saya 405, yang lainnya (coklat, wordnet, punkt, dll) tidak.

ya, saya juga tidak dapat mengunduh stopwords nltk. Saya mendapatkan kesalahan 405 ketika saya melakukannya> python -m nltk.downloader -u http://nltk.github.com/nltk_data/

Hei, saya mencoba menjalankan python -m nltk.downloader stopwords , tetapi mendapatkan kesalahan 405. Adakah yang bisa mengarahkan saya ke arah yang benar?

@ dfridman1 @ prakruthi-karuna baca masalah di atas. Bekerja di sekitar adalah:

python -m nltk.downloader -u https://pastebin.com/raw/D3TBY4Mj all

Kami memiliki beberapa proyek yang menggunakan ini di sistem ci kami. Daripada harus memperbarui semuanya dengan parameter -u apakah ada cara lain kita dapat menentukan data itu. Mungkin variabel lingkungan atau file konfigurasi?

@alvations tampaknya solusi Anda tidak lagi berfungsi karena versi bercabang juga sekarang dilarang. Apakah ada orang yang saat ini menghubungi dukungan github tentang ini?

>>> import nltk
>>> dler = nltk.downloader.Downloader('https://pastebin.com/raw/D3TBY4Mj')
>>> dler.download('punkt')
[nltk_data] Downloading package punkt to /home/zeryx/nltk_data...
[nltk_data] Error downloading u'punkt' from
[nltk_data]     <https://raw.githubusercontent.com/alvations/nltk_data
[nltk_data]     /gh-pages/packages/tokenizers/punkt.zip>:   HTTP Error
[nltk_data]     403: Forbidden.
False

Saya baru saja membuka tiket dengan mereka melalui halaman kontak.

Sepertinya GitHub sadar dan sedang menangani masalah ini. Inilah yang mereka katakan kepada saya:

Maaf atas masalah ini. Kami harus memblokir permintaan ke URL raw.githubusercontent.com untuk repo nltk / nltk_data dan forknya karena penggunaan yang berlebihan menyebabkan masalah dengan layanan GitHub. Kami sedang berupaya untuk menyelesaikan masalah, tetapi sayangnya kami tidak dapat mengizinkan permintaan tersebut untuk saat ini.

Ya, saya baru saja menerima ini juga:

Hai Liling,
Saya bekerja di tim Dukungan di GitHub, dan saya ingin memberi tahu Anda bahwa kami harus memblokir akses sementara ke file yang sedang disajikan dari raw.githubusercontent.comURLs untuk repo alvations / nltk_data. Saat ini, pengguna menggunakan bandwidth yang sangat besar untuk meminta file dari repo itu, dan satu-satunya pilihan kami saat ini adalah memblokir semua permintaan. Kami telah bekerja secara aktif mencari cara untuk mengurangi masalah, dan kami akan menindaklanjuti dengan Anda ketika kami memiliki pembaruan. Harap beri tahu kami jika Anda memiliki pertanyaan.
Bersulang, Shawna

@ ewan-klein @stevenbird Saya rasa kita membutuhkan cara baru untuk mendistribusikan data tetapi itu akan membutuhkan beberapa pengerjaan ulang nltk.downloader.py .

Beberapa saran:

Tampaknya, kami tidak punya pilihan selain mengubah saluran distribusi data:

Hai Liling,
Ingin menindaklanjuti ini dengan beberapa informasi tambahan. Kami telah membahas masalah ini secara internal, dan kemungkinan besar kami tidak akan memulihkan akses mentah ke repo di jaringan fork nltk / nltk_data di masa mendatang. Masalahnya adalah ada sejumlah mesin yang memanggil nltk.download () pada frekuensi yang sangat tinggi. Kami tidak dapat memulihkan akses mentah hingga aktivitas itu berhenti. Jangan ragu untuk membagikan pesan ini dengan komunitas nltk. Kami berharap siapa pun yang melakukan ini akan mengetahui masalahnya, dan menghentikan proses apa pun yang melakukannya.
Cheers, Jamie

Orang akan berpikir mereka bisa memblokir IP tersebut secara khusus. Tapi mungkin ada lebih dari itu.

Saya memang memiliki image buruh pelabuhan yang mendownload nltk_data, tapi saya tidak sering membangunnya kembali. Saya harap saya bukan salah satu dari pengguna dengan lalu lintas tinggi itu ...

Apakah ada proses instalasi yang tidak mengandalkan github?

Mungkin seseorang salah mengonfigurasi skrip mereka di AWS. @everyone tolong bantu untuk memeriksa contoh Anda sementara kami menemukan alternatif untuk pendistribusian data

Hai Liling,
Kami tidak dapat membagikan nomor tertentu, namun permintaan datang dari sejumlah besar instans AWS. Kami menduga itu bisa jadi skrip atau proses pembuatan yang salah. Kami tidak tahu banyak di luar itu.
Cheers, Jamie

Nah itu melegakan, saya tidak menggunakan AWS.

:lega:

Dari segi kode, mungkin kita telah mengubah seberapa sering paket yang sama diperbarui dari nltk downloader.py juga. Jika tidak, tidak peduli ke saluran distribusi mana kita bermigrasi, gangguan layanan yang sama akan terjadi.

Mungkinkah sesuatu yang berbasis torrent akan berhasil?

Tidak yakin seperti apa lisensinya, tetapi Anda dapat membuatnya menjadi publik di s3: https://aws.amazon.com/datasets/

@alvations sepertinya hanya unduhan gzip yang berfungsi untuk saat ini. Dan paket harus dipindahkan ke folder /home/username/nltk_data/ .

export PATH_TO_NLTK_DATA=/home/username/nltk_data/
wget https://github.com/nltk/nltk_data/archive/gh-pages.zip
unzip gh-pages.zip
mv nltk_data-gh-pages $PATH_TO_NLTK_DATA
# add below code
mv $PATH_TO_NLTK_DATA/nltk_data-gh-pages/packages/* $PATH_TO_NLTK_DATA/

Apakah kami memiliki penyelesaian sementara?

@darshanlol @alvations menyebutkan solusi. Jika Anda mencoba membangun buruh pelabuhan, berikut ini berhasil untuk saya:

ENV PATH_TO_NLTK_DATA $HOME/nltk_data/
RUN apt-get -qq update
RUN apt-get -qq -y install wget
RUN wget https://github.com/nltk/nltk_data/archive/gh-pages.zip
RUN apt-get -y install unzip
RUN unzip gh-pages.zip -d $PATH_TO_NLTK_DATA
# add below code
RUN mv $PATH_TO_NLTK_DATA/nltk_data-gh-pages/packages/* $PATH_TO_NLTK_DATA/

Saya mencoba mengubah url default di 'nltk.downloader.py'. Tetapi masalahnya masih ada.

Solusi yang disarankan tidak lagi berfungsi:

python -m nltk.downloader -u https://pastebin.com/raw/D3TBY4Mj semua

Saat ini, ini adalah satu-satunya solusi yang berfungsi:

PATH_TO_NLTK_DATA=/home/username/nltk_data/
wget https://github.com/nltk/nltk_data/archive/gh-pages.zip
unzip gh-pages.zip
mv nltk_data-gh-pages/ $PATH_TO_NLTK_DATA

Seperti yang dikatakan @alvations , ini adalah satu-satunya solusi yang berfungsi.

PATH_TO_NLTK_DATA = / beranda / nama pengguna / nltk_data /wget https://github.com/nltk/nltk_data/archive/gh-pages.zipunzip gh-pages.zipmv nltk_data-gh-pages / $ PATH_TO_NLTK_DATA

Tetapi bahkan setelah mengunduh semua halaman, saya menghadapi masalah karena pengunduh NLTK saya tidak dapat mendeteksi semua paket yang diunduh untuk itu, Anda mungkin harus mengubah nilai direktori unduhan secara manual melalui perintah.

Halaman ini memiliki perintah yang tepat yang saya gunakan untuk mengkonfigurasi paket data NLTK

Klik link di atas untuk mendapatkan jawaban.

Berikut adalah beberapa proposal untuk menyelesaikan masalah ini setelah membaca dan menemukan alternatif.

Jadikan corpora dapat disalurkan

  • Pertama, kita akan mengubahnya sehingga semua nltk_data dapat dipip. (Jadi setiap lingkungan baru akan membutuhkan instalasi pip baru dan kami tidak lagi bergantung pada direktori fisik)
  • Kami juga perlu melacak beberapa jenis indeks agar unduhan dapat diambil dan melacak versi.
  • Kemudian kita juga perlu melakukan perbaikan pada kode, downloader.py dan semua antarmuka pembaca korpus terkait

  • Mungkin pip batasan (dari sisi PyPI) dapat menghentikan pengguna / mesin nakal dengan permintaan frekuensi tinggi

Menghosting data di S3 / Zenodo atau beberapa host pribadi

Ini akan mengharuskan kami untuk menautkan ulang tautan di index.xml ke tautan yang sesuai. Setelah menyiapkan file individual di host web.

Tetapi jika lalu lintas tetap tinggi karena beberapa skrip penginstalan / otomatisasi tidak berfungsi, kami akhirnya akan mengganggu satu penyedia layanan ke penyedia layanan lainnya.


Ada saran lain?
Adakah jiwa pemberani yang ingin melakukan ini?

@ harigovind511 , ya Anda harus meletakkan folder nltk_data telah diunduh di salah satu lokasi standar di mana nltk tahu untuk mencarinya, atau tambahkan ke nltk.data.path untuk memberi tahu di mana mencarinya. Pengunduh otomatis hanya mencari lokasi standar.

Pembatasan / penyelesaian tingkat untuk mesin nakal mungkin diperlukan untuk membuat ini tidak membuat kepalanya jelek lagi. Pilihan saya adalah untuk pip kecuali ada masalah (atau tabu) dengan paket besar di pip?

Menggunakan pip juga akan menyelesaikan manual nltk.download () dan manajemen paket dalam kode.

File sepertinya sudah di-backup? Tampaknya bijaksana meskipun untuk terus mencari mekanisme distribusi alternatif. Di organisasi saya sendiri, kami berencana untuk pindah ke hosting secara internal dan check-in setiap tiga bulan

Saya ingin memahami apa yang dilakukan $ PATH_TO_NLTK_DATA. Apakah itu mengonfigurasi URL unduhan lokal alternatif untuk tempat NLTK mendapatkan datanya?

Saya ingin menyiapkan cache lokal data NLTK jadi saya ingin tahu apakah pengaturan ini memberi tahu NLTK untuk bekerja offline?

Karena akar masalahnya adalah penyalahgunaan bandwidth, tampaknya ide yang buruk untuk merekomendasikan pengambilan manual seluruh pohon nltk_data sebagai penyelesaian. Bagaimana jika Anda menunjukkan kepada kami bagaimana id sumber daya dipetakan ke URL, @alvations , jadi saya dapat wget hanya punkt bundel, misalnya?

Solusi jangka panjang, saya yakin, adalah membuatnya tidak terlalu sepele bagi pengguna pemula untuk mengambil seluruh bundel data (dikompresi 638MB, ketika saya memeriksa). Daripada mengatur (dan membayar) lebih banyak bandwidth untuk disia-siakan pada download yang tidak berguna, berhentilah menyediakan "all" sebagai pilihan download; Dokumentasi seharusnya menunjukkan kepada penulis skenario yang lalai tentang cara mengunduh sumber daya tertentu yang mereka butuhkan. Dan sementara itu, biasakan menulis nltk.download("all") (atau yang setara) sebagai contoh atau penggunaan yang disarankan, di stackoverflow (Saya melihat Anda, @alvations) dan di docstrings pengunduh. (Untuk menjelajahi nltk, nltk.dowload("book") , bukan "all" , sama berguna dan jauh lebih kecil.)

Saat ini sulit untuk mengetahui sumber daya mana yang perlu diunduh; jika saya menginstal nltk dan mencoba nltk.pos_tag(["hello", "friend"]) , tidak ada cara untuk memetakan pesan kesalahan ke ID sumber daya yang dapat saya berikan ke nltk.download(<resource id>) . Mengunduh semuanya adalah penyelesaian yang jelas dalam kasus seperti itu. Jika nltk.data.load() atau nltk.data.find() dapat ditambal untuk mencari id sumber daya dalam kasus seperti itu, saya pikir Anda akan melihat penggunaan Anda pada nltk_data turun secara signifikan dalam jangka panjang.

@zxiiro $PATH_TO_NLTK_DATA tidak ada artinya dengan nltk, ini hanya variabel dalam contoh skrip. Variabel lingkungan $NLTK_DATA memang memiliki arti khusus. Lihat http://www.nltk.org/data.html , semua opsi dijelaskan.

@alexisdimi menyetujui nltk.download('all') . Maaf, itu jawaban lama dari hari-hari awal saya. Saya harus menyarankan agar tidak melakukannya. Saya telah mengubah jawaban SO menjadi nltk.download('popular') sebagai gantinya: https://stackoverflow.com/questions/22211525/how-do-i-download-nltk-data

Salah satu masalah dengan wget langsung ke paket adalah bahwa paket masih bergantung pada konten mentah di github. Selama waktu henti, tautan https://github.com/nltk/nltk_data/blob/gh-pages/packages/tokenizers/punkt.zip juga menyebabkan kesalahan 403/405.

Jadi pekerjaan sekitar adalah mengunduh seluruh pohon git. Dalam retrospeksi, itu mungkin bukan ide yang bagus.

Sepertinya penguncian telah dicabut, itu bagus! Sekarang saya berharap ada beberapa tiket yang akan berfungsi untuk mencegah masalah serupa di masa depan (mungkin seperti yang saya sarankan, mungkin tidak).

(Ngomong-ngomong, masalah _this_ ini harus ditandai "Tutup", karena sekarang unduhan berfungsi lagi?)

@alexisdimi memberikan peringatan yang menyarankan pengguna untuk mengunduh model yang sesuai adalah ide yang bagus.

Untuk mereka yang menjalankan NLTK di lingkungan CI. Saya ingin mengusulkan GH-1795 yang memungkinkan penggunaan untuk menentukan URL alternatif untuk mengunduh. Idenya di sini adalah seseorang dapat mengatur salinan lokal nltk_data di server web (atau bahkan python -m http.server) dan kemudian memiliki variabel global yang dapat menggantikan URL unduhan.

Ini agar kita dapat mengganti tanpa memodifikasi proyek panggilan perintah lokal untuk menyertakan -u dari sistem CI seperti Jenkins.

Pertanyaan ke Github tentang distribusi data pip menggunakan rilis dan instalasi pip:

Terima kasih Jamie atas dukungannya!

Kami mencari alternatif untuk menghosting nltk_data dan salah satunya adalah menghostingnya sebagai rilis repositori seperti cara SpaCy melakukannya https://github.com/explosion/spacy-models/releases

Bisakah kami memeriksa dengan Anda apakah blok yang sama akan dijalankan jika permintaan frekuensi tinggi yang serupa dibuat untuk rilis repositori? Atau apakah rilis repositori diperlakukan berbeda dari konten mentah di Github?

Salam,
Liling

Beberapa pembaruan di sisi Github:

Hai Liling,

Menggunakan Rilis hanya memindahkan permintaan ke bagian lain dari infrastruktur kami. Jika volume bandwidth itu akan dimulai lagi, kami masih harus memblokir permintaan tersebut, meskipun permintaan tersebut akan dirilis.

Kami telah mencoba memikirkan beberapa cara agar paket data dapat tetap ada di GitHub, tetapi sejujurnya tidak ada solusi yang baik. Kami tidak disiapkan untuk menjadi CDN volume tinggi.

Bersulang,
Jamie

@owaaa / @zxiiro +1 tentang hosting internal untuk CI. Kami sedang melakukan ini sekarang, dan keuntungan bagi pengguna EC2 / S3 adalah Anda dapat meletakkan data (atau bagian yang Anda butuhkan) di dekat tempat Anda ingin membangun mesin. Jika Anda berada di seluruh zona ketersediaan, Anda dapat mereplikasi keranjang di tempat yang Anda butuhkan dan lebih kuat terhadap apa yang terjadi di luar AWS.

@alvations Saya sangat menyukai ide _data / model sebagai package_ di spaCy, tetapi salah satu konsekuensinya adalah jika Anda menggunakan virtualenv , direktori lingkungan Anda dapat membengkak karena paket Anda tinggal di sana. Tentu saja, ini memberi Anda versi data / model yang sepenuhnya terisolasi dan dapat diaudit, yang berharga untuk proyek dengan pembaruan model yang sering seperti spaCy, tetapi bukan makan siang gratis 😕

Apakah halaman ini membantu?
0 / 5 - 0 peringkat