Nltk: فشل تنزيل بيانات NLTK: HTTP ERROR 405/403

تم إنشاؤها على ٢٦ يوليو ٢٠١٧  ·  47تعليقات  ·  مصدر: 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)

أيضًا ، حاولت زيارة https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/cmudict.zip . حصلت على نفس HTTP 405 ERROR.

ابحث عن نفس المشكلة في stackoverflow: https://stackoverflow.com/questions/45318066/getting-405- while-trying-to-download-nltk-

سيكون موضع تقدير أي تعليقات.

admin bug corpus inactive

التعليق الأكثر فائدة

plaihonen ، يجب أن تكون قادرًا على استخدام هذا الفهرس البديل عن طريق القيام بشيء مثل python -m nltk.downloader -u https://pastebin.com/raw/D3TBY4Mj punkt

ال 47 كومينتر

يبدو أن Github معطل / يمنع الوصول إلى المحتوى الخام في الريبو.

في غضون ذلك ، الحل المؤقت هو شيء من هذا القبيل:

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

يعد تنزيل gh-pages.zip واستبدال دليل nltk_data هو الحل العملي حاليًا.

قبل أن نجد على قناة أخرى لتوزيع nltk_data ، يرجى استخدام الحل أعلاه.


~ الغريب ، يبدو أنه يؤثر فقط على حساب المستخدم nltk . يعمل بشكل جيد على الشوكة: https://raw.githubusercontent.com/alvations/nltk_data/gh-pages/index.xml~

~ فعل هذا سيعمل أيضا: ~

alvations شكرا جزيلا لك!

هل هناك أي بديل لتنزيلات سطر الأوامر مثل هذا؟
python -m nltk.downloader -d ./nltk_data punkt

plaihonen ، يجب أن تكون قادرًا على استخدام هذا الفهرس البديل عن طريق القيام بشيء مثل python -m nltk.downloader -u https://pastebin.com/raw/D3TBY4Mj punkt

@ rvause يعمل بشكل مثالي. شكرا جزيلا!

+1. كانت هذه مفاجأة استمرت عدة ساعات هذا الصباح. ذهب مع تجاوز تنزيل nltk تمامًا في الوقت الحالي

يحظر GitHub حاليًا الوصول لأن "المستخدم يستهلك قدرًا كبيرًا جدًا من عرض النطاق الترددي الذي يطلب الملفات". لقد اقترحوا أيضًا أننا يجب أن ننظر إلى طريقة مختلفة لتوزيع حزم البيانات ، مثل S3.

حتى مع الفهرس البديل ، هل يجد أي شخص أن بعض الحزم لا تزال لا تعمل؟

على وجه التحديد ، بالنسبة لي ، تعطيني حزمة Stopwords 405 ، بينما لا يعطيني الآخرون (Brown ، wordnet ، punkt ، إلخ).

نعم ، أنا غير قادر على تنزيل nltk stopwords أيضًا. أحصل على الخطأ 405 عندما أفعل> python -m nltk.downloader -u http://nltk.github.com/nltk_data/

مرحبًا ، أحاول تشغيل python -m nltk.downloader stopwords ، لكني أحصل على خطأ 405. يمكن لأي شخص لي نقطة في الاتجاه الصحيح؟

@ dfridman1 @ prakruthi-karuna اقرأ المشكلة أعلاه. الحل هو:

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

لدينا بعض المشاريع التي تستخدم هذا في نظام ci الخاص بنا. بدلاً من الاضطرار إلى تحديثها جميعًا باستخدام المعلمة -u ، هناك طريقة أخرى يمكننا من خلالها تحديد تلك البيانات. ربما متغير البيئة أو ملف التكوين؟

alvations يبدو أن الحل الخاص بك لم يعد يعمل لأن النسخة

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

لقد فتحت للتو تذكرة معهم عبر صفحة الاتصال.

يبدو أن GitHub على علم بهذه المشكلة وتعمل على حلها. هذا ما قالوه لي:

اسف على المشاكل. لقد اضطررنا إلى حظر الطلبات إلى عناوين URL لـ raw.githubusercontent.com لـ nltk / nltk_data repo وشوكاته لأن الاستخدام المفرط كان يتسبب في حدوث مشكلات مع خدمة GitHub. نحن نعمل على حل المشكلة ، ولكن للأسف لا يمكننا السماح بهذه الطلبات في الوقت الحالي.

نعم ، لقد تلقيت هذا أيضًا:

مرحبا ليلينج ،
أنا أعمل في فريق الدعم في GitHub ، وأردت إخطارك بأنه يتعين علينا حظر الوصول مؤقتًا إلى الملفات التي يتم تقديمها من raw.githubusercontent.com عناوين URL الخاصة بـ alvations / nltk_data repo. حاليًا ، يستهلك المستخدم قدرًا كبيرًا جدًا من عرض النطاق الترددي الذي يطلب الملفات من هذا الريبو ، وخيارنا الوحيد في الوقت الحالي هو حظر جميع الطلبات. لقد عملنا بنشاط على طرق للتخفيف من المشكلة ، وسنتابع معك عندما يكون لدينا تحديث. يرجى إعلامنا إذا كان لديك أي أسئلة.
في صحتك ، شونا

@ ewan- kleinstevenbird أعتقد أننا بحاجة إلى طريقة جديدة لتوزيع البيانات ولكن هذا سيتطلب بعض إعادة صياغة nltk.downloader.py .

بعض الاقتراحات:

على ما يبدو ، ليس لدينا خيار سوى تغيير قناة توزيع البيانات:

مرحبا ليلينج ،
أردت متابعة هذا ببعض المعلومات الإضافية. لقد كنا نناقش المشكلة داخليًا ، ومن المحتمل جدًا أننا لن نستعيد الوصول الأولي إلى repos في شبكة فورك nltk / nltk_data في المستقبل المنظور. تكمن المشكلة في وجود عدد من الأجهزة التي تستدعي nltk.download () بتردد عالٍ جدًا. لا يمكننا استعادة الوصول الأولي حتى يتوقف هذا النشاط. لا تتردد في مشاركة هذه الرسالة مع مجتمع nltk. نأمل أن يتم تنبيه كل من يفعل ذلك إلى المشكلة ، وإيقاف أي عملية تقوم بذلك.
في صحتك ، جيمي

قد يعتقد المرء أنه يمكنهم فقط حظر عناوين IP هذه على وجه التحديد. ولكن ربما هناك ما هو أكثر من ذلك.

لدي صورة عامل إرساء تقوم بتنزيل nltk_data ، لكنني لم أكن أعيد بنائها كثيرًا. آمل أنني لم أكن أحد مستخدمي حركة المرور العالية ...

هل هناك عملية تثبيت لا تعتمد على جيثب؟

ربما قام شخص ما بتكوين البرامج النصية الخاصة به على AWS بشكل خاطئ. everyone الرجاء المساعدة في التحقق من

مرحبا ليلينج ،
لا يمكننا مشاركة أرقام محددة ، ولكن الطلبات تأتي من عدد كبير من مثيلات AWS. نشك في أنه قد يكون نصًا أو عملية بناء قد انحرفت. نحن لا نعرف الكثير وراء ذلك.
في صحتك ، جيمي

حسنًا ، هذا يبعث على الارتياح ، لا أستخدم AWS.

:مرتاح:

من الناحية البرمجية ، ربما يتعين علينا تغيير مدى تكرار تحديث الحزمة نفسها من nltk downloader.py أيضًا. وبخلاف ذلك ، بغض النظر عن قناة التوزيع التي ننتقل إليها ، سيحدث نفس انقطاع الخدمة.

ربما شيء يعتمد على التورنت سيعمل؟

لست متأكدًا من شكل الترخيص ، ولكن يمكنك نشره على s3: https://aws.amazon.com/datasets/

alvations يبدو أن تنزيل gzip يعمل فقط في الوقت الحالي. ويجب نقل الحزم إلى مجلد /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/

هل لدينا حل مؤقت حتى الآن؟

ذكرalvationsdarshanlol حل. إذا كنت تحاول بناء عامل إرساء ، فقد نجح ما يلي:

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/

أحاول تغيير عنوان url الافتراضي في "nltk.downloader.py" لكن المشكلة لا تزال قائمة.

الحل البديل المقترح لم يعد يعمل:

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

حاليًا هذا هو الحل العملي الوحيد:

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

كما قال alvations ، هذا هو الحل العملي الوحيد.

PATH_TO_NLTK_DATA = / home / username / nltk_data /wget https://github.com/nltk/nltk_data/archive/gh-pages.zipقم بفك ضغط gh-pages.zipmv nltk_data-gh-pages / $ PATH_TO_NLTK_DATA

ولكن حتى بعد تنزيل جميع الصفحات التي كنت أواجهها ، حيث لم يكن برنامج تنزيل NLTK قادرًا على اكتشاف جميع الحزم التي تم تنزيلها لذلك قد تضطر إلى تغيير قيمة دليل التنزيل يدويًا من خلال الأمر.

تحتوي هذه الصفحة على الأمر المناسب الذي استخدمته لتكوين حزم بيانات NLTK

اضغط على الرابط أعلاه للإجابة.

إليك بعض المقترحات لحل هذه المشكلة بعد القراءة والبحث عن بدائل.

اجعل الجسد قابلًا للأنابيب

  • أولاً ، سنقوم بتغييرها بحيث تكون جميع nltk_data قابلة للنقطة. (لذلك ستتطلب كل بيئة جديدة تثبيت نقطة جديد ولم نعد نعتمد على الدليل المادي)
  • سنحتاج إلى تتبع نوع من الفهرس أيضًا للتنزيل لجلب الإصدارات وتتبعها.
  • ثم نحتاج أيضًا إلى إجراء نوع من الإصلاح الشامل على الكود و downloader.py وجميع واجهة قارئ المجموعة ذات الصلة

  • من المحتمل أن تؤدي قيود pip (من جانب PyPI) إلى إيقاف المستخدمين / الأجهزة المارقة مع الطلبات عالية التردد

استضافة البيانات على S3 / Zenodo أو مضيف خاص

سيتطلب ذلك منا ببساطة إعادة ربط الروابط في index.xml بالروابط المناسبة. بعد إعداد الملفات الفردية على مضيف الويب.

ولكن إذا ظلت حركة المرور عالية بسبب خطأ بعض نصوص التثبيت / الأتمتة ، فسينتهي بنا الأمر إلى التنصت على مزود خدمة لآخر.


أي اقتراحات أخرى؟
أي روح شجاعة تريد أن تأخذ هذا؟

@ harigovind511 ، نعم ، عليك إما وضع المجلد nltk_data الذي تم تنزيله في أحد المواقع القياسية حيث يعرف nltk البحث عنه ، أو إلحاقه بـ nltk.data.path لإخباره بمكان البحث. يبحث برنامج التنزيل التلقائي فقط عن موقع قياسي.

من المحتمل أن يكون تحديد / حل معدل الآلات المارقة ضروريًا لجعل هذا لا يرفع رأسه القبيح مرة أخرى. سيكون تصويتي للنقطة ما لم تكن هناك مشكلة (أو محظورة) مع الحزم الكبيرة على النقطة؟

سيؤدي استخدام النقطة أيضًا إلى حل nltk.download () اليدوي وإدارة الحزم المضمنة في التعليمات البرمجية.

يبدو أن الملفات احتياطيًا؟ يبدو من الحكمة الاستمرار في البحث عن آليات توزيع بديلة. في مؤسستي الخاصة على الرغم من أننا نخطط للانتقال إلى الاستضافة داخليًا وتسجيل الوصول كل ثلاثة أشهر

أود أن أفهم ما يفعله $ PATH_TO_NLTK_DATA. هل يتم تكوين عنوان URL محلي بديل للتنزيل حيث تحصل NLTK على بياناتها؟

أرغب في إعداد ذاكرة تخزين مؤقت محلية لبيانات NLTK ، لذا كنت أتساءل عما إذا كان إعداد هذا يخبر NLTK بالعمل دون اتصال بالإنترنت؟

نظرًا لأن جذر المشكلة هو إساءة استخدام النطاق الترددي ، يبدو أن التوصية بالجلب اليدوي لشجرة nltk_data بأكملها كحل alvations ، لذلك يمكنني wget فقط حزمة punkt ، على سبيل المثال؟

أعتقد أن الحل طويل المدى هو جعله أقل أهمية بالنسبة للمستخدمين المبتدئين لجلب حزمة البيانات بأكملها (638 ميجابايت مضغوطة ، عندما راجعت). بدلاً من ترتيب (ودفع مقابل) المزيد من عرض النطاق الترددي لإهداره على التنزيلات غير المجدية ، توقف عن تقديم "all" كخيار تنزيل ؛ يجب أن توضح الوثائق بدلاً من ذلك للناسخ الغافل كيفية تنزيل المورد (الموارد) المحدد الذي يحتاجه. وفي هذه الأثناء ، تخلص من عادة كتابة nltk.download("all") (أو ما يعادله) كنموذج أو استخدام موصى به ، على stackoverflow (أنا أنظر إليك ،alvations) وفي مستندات التنزيل. (لاستكشاف nltk ، يعد nltk.dowload("book") وليس "all" مفيدًا بنفس القدر وأصغر بكثير.)

في الوقت الحاضر من الصعب معرفة المورد الذي يجب تنزيله ؛ إذا قمت بتثبيت nltk وجربت nltk.pos_tag(["hello", "friend"]) ، فلا توجد طريقة لتعيين رسالة الخطأ إلى معرف مورد يمكنني تمريره إلى nltk.download(<resource id>) . تنزيل كل شيء هو الحل الواضح في مثل هذه الحالات. إذا كان من الممكن تصحيح nltk.data.load() أو nltk.data.find() للبحث عن معرف المورد في مثل هذه الحالات ، أعتقد أنك سترى استخدامك على nltk_data ينخفض ​​بشكل ملحوظ على المدى الطويل.

zxiiro $PATH_TO_NLTK_DATA ليس له معنى لـ nltk ، إنه مجرد متغير في عينة البرنامج النصي. متغير البيئة $NLTK_DATA له معنى خاص. راجع http://www.nltk.org/data.html ، تم شرح جميع الخيارات.

وافق alexisdimi على nltk.download('all') . آسف كانت هذه إجابة قديمة من أيامي الأولى. يجب أن أنصح ضد ذلك. لقد غيرت إجابة SO إلى nltk.download('popular') بدلاً من ذلك: https://stackoverflow.com/questions/22211525/how-do-i-download-nltk-data

تتمثل إحدى مشكلات wget مباشرة في الحزمة في أنها لا تزال تعتمد على المحتوى الخام على github. أثناء وقت التوقف ، كان الرابط https://github.com/nltk/nltk_data/blob/gh-pages/packages/tokenizers/punkt.zip يؤدي أيضًا إلى الخطأ 403/405.

وهكذا كان العمل حول تنزيل شجرة البوابة بأكملها. بالنظر إلى الماضي ، قد لا تكون هذه فكرة جيدة.

يبدو أنه تم رفع الإغلاق ، هذا رائع! آمل الآن أن تكون هناك بعض التذاكر التي ستعمل على منع حدوث مشكلات مماثلة في المستقبل (ربما على غرار ما اقترحته ، وربما لا).

(هل يجب وضع علامة على هذه المشكلة على أنها "مغلقة" ، بالمناسبة ، حيث تعمل التنزيلات مرة أخرى؟)

يعد وضع

لأولئك الذين يستخدمون NLTK في بيئة CI. أود أن أقترح GH-1795 الذي يسمح باستخدامه لتحديد عنوان URL بديل للتنزيل. الفكرة هنا هي أنه يمكن للمرء إعداد نسخة محلية من nltk_data على خادم ويب (أو حتى python -m http.server) ومن ثم الحصول على متغير عام يمكنه تجاوز عنوان URL للتنزيل.

هذا حتى نتمكن من التجاوز دون تعديل استدعاءات الأوامر المحلية للمشاريع لتشمل -u من نظام CI مثل Jenkins.

سؤال إلى Github بخصوص توزيع بيانات النقاط باستخدام الإصدارات وتركيب النقطة:

شكرا لك جيمي على الدعم!

نحن نبحث عن بدائل لاستضافة nltk_data وأحدها هو استضافتها كإصدارات للمستودعات كما يفعل SpaCy https://github.com/explosion/spacy-models/releases

هل يمكننا التحقق معك فقط مما إذا كان سيتم تنفيذ نفس الكتلة إذا تم إجراء طلبات عالية التردد مماثلة لإصدارات المستودع؟ أم يتم التعامل مع إصدارات المستودع بشكل مختلف عن المحتوى الأولي على جيثب؟

مع تحياتي،
ليلينج

بعض التحديثات على جانب جيثب:

مرحبا ليلينج ،

يؤدي استخدام الإصدارات إلى نقل الطلبات إلى جزء مختلف من بنيتنا التحتية. إذا كان هذا الحجم من النطاق الترددي سيبدأ مرة أخرى ، فسنظل مضطرًا إلى حظر هذه الطلبات ، حتى لو كانت للإصدارات.

لقد حاولنا التفكير في بعض الطرق التي يمكن أن تظل بها حزم البيانات على GitHub ، ولكن بصراحة لا يوجد حل جيد. نحن لم نعد لنكون CDN عالي الحجم.

في صحتك،
جيمي

owaaa / zxiiro +1 على الاستضافة داخليًا لـ CI. نحن نقوم بذلك الآن ، والميزة بالنسبة لمستخدمي EC2 / S3 هي أنه يمكنك وضع البيانات (أو المجموعة الفرعية التي تحتاجها) بالقرب من المكان الذي تريد إنشاء الأجهزة فيه. إذا كنت عبر مناطق توفر ، يمكنك فقط نسخ الحاويات حيثما تحتاج وتكون أكثر قوة لما يحدث خارج AWS.

alvations تعجبني تمامًا _data / model كفكرة package_ في spaCy ، ولكن إحدى العواقب هي أنه إذا استخدمت virtualenv ، يمكن أن تتضخم أدلة البيئة الخاصة بك مع بقاء حزمك هناك. بالطبع ، هذا يشتري لك بيانات / نماذج معزولة وقابلة للتدقيق تمامًا ، وهو أمر ذو قيمة لمشروع مع تحديثات نموذجية متكررة مثل spaCy ، ولكن ليس غداء مجاني 😕

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات