Nltk: text.generate () غير موجود ، لكن لا يزال مراجعًا له

تم إنشاؤها على ٢٠ أغسطس ٢٠١٤  ·  27تعليقات  ·  مصدر: nltk/nltk

كنت أحاول متابعة كتاب معالجة اللغة الطبيعية ، لكن في الفصل الأول واجهت بعض المشكلات. بعد import ing كل شيء بدءًا من nltk.book ، كان فكرتي الأولى هي تجربة text3.generate() كما هو موضح في أحد الأمثلة. بالطبع ، لقد حصلت على AttributeError جميل لأن فئة Text على ما يبدو لا تحتوي على هذه الطريقة في NLTK التي قمت بتثبيتها.
علاوة على ذلك ، حتى تشغيل nltk.text.demo() يحاول إنشاء نص - وإرجاع نفس الخطأ.
بالطبع ، لم أتمكن من العثور على أي وثائق لطريقة generate() ، لذلك أفترض أنه تمت إزالتها ؛ إذا كان الأمر كذلك ، فيجب عليك إزالة المراجع إليه من nltk.text.demo() ومن الكتاب المدرسي.

أنا أستخدم Python 2.7.8 مع NLTK 3.0.0b1 (والذي كان الإصدار المتاح عبر حزمة مثبت Windows من PyPI في وقت كتابة هذا التقرير). المثال text3.generate() موجود في كلا الإصدارين القديم والحالي من الكتاب المدرسي.

language-model

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

لا يزال يشار إلى هذا في الفصل الأول من الكتاب: http://www.nltk.org/book/ch01.html

إنها ليست مشكلة كبيرة ، لكن من المحتمل أن أمضي بضع دقائق في البحث على Google عن هذه المشكلة. تلك المرات القليلة ولكن الكثير من الناس يشقون طريقهم من خلال الكتاب ... :)

ال 27 كومينتر

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

-ستيفن بيرد

في 20 أغسطس 2014 الساعة 17:12 ، كتب Kasran [email protected] :

كنت أحاول متابعة معالجة اللغة الطبيعية
الكتاب ، ولكن في الفصل الأول أواجه بعض المشكلات. بعد
استيراد كل شيء من nltk.book ، كان أول ما فكرت به هو المحاولة
text3.generate () كما تم توضيحه في أحد الأمثلة. بالطبع أنا
حصلت على خطأ AttributeError جميل لأن فئة Text على ما يبدو لا
هذه الطريقة في NLTK التي قمت بتثبيتها.
علاوة على ذلك ، حتى تشغيل nltk.text.demo () يحاول إنشاء نص -
ويعيد نفس الخطأ.
بالطبع ، لم أتمكن من العثور على أي توثيق لطريقة إنشاء () ،
لذلك أفترض أنه تمت إزالته ؛ إذا كان هذا هو الحال ، يجب عليك إزالة
مراجع إليه من nltk.text.demo () ومن الكتاب المدرسي.

أنا أستخدم Python 2.7.8 مع NLTK 3.0.0b1. مثال text3.generate () هو
في كل من النسختين القديمة والحالية من الكتاب المدرسي.

قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/nltk/nltk/issues/736.

على ما يرام! مفهوم تماما. أعتقد أنه سيتعين علي كتابة روبوتات الثرثرة الخاصة بي باستخدام سلاسل ماركوف المطبقة ، بالطريقة القديمة البدائية ، حتى يتم إصلاحها.

شكرا لردكم السريع.

كما أنني قابلت نفس المشكلة التي حيرتني قليلاً. شكرًا على هذا الموضوع الذي أخذني إليه بحث Google.

أمم. هل هذا يساعد (https://github.com/alvations/nltk/blob/develop/nltk/translate/decoder.py#L33)؟ يبدو أن نموذج اللغة يعمل بشكل جيد عند فك التشفير. سأقوم برفع رمز محدث وموثق بشكل صحيح لمكتبة translate قريبًا.

آسف لقد كنت خارجا في الهاكاثون وورش العمل والمؤتمرات مرة أخرى. سأحاول دفعه بحلول نهاية هذا الأسبوع ، على ما آمل.

آه ، لكن نموذجي يحمل نموذجًا مُطلَق مسبقًا ، وليس بناء النموذج من نقطة الصفر. هل يقوم أي شخص ببناء نموذج لغوي؟

أرى مشكلتين في الكود الحالي (إلى جانب حقيقة أنه لا يعمل) ، من حيث تجربة المستخدم:

  1. في الكتاب ، لا تأخذ الطريقة أي معلمات (على الأقل عند ظهورها لأول مرة في الكتاب) ، لكن التوقيع الحالي يتطلب معلمة words . لذلك عندما تتابع الكتاب ، فإن ما تحصل عليه هو ما يلي:

    >>> text1.generate()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: generate() missing 1 required positional argument: 'words'
    

    هذا ليس سهل الاستخدام للغاية. أقترح إعطاء الكلمات قيمة افتراضية في التوقيع (على سبيل المثال words=None ) لتجنب هذه المشكلة.

  2. باستخدام وحدة تحكم Python العادية باتباع إرشادات الكتاب ، لا أرى DeprecationWarning الذي يسجله الرمز. هذا ما فعلته منذ البداية:

    [adrian<strong i="17">@chakra</strong> temporal]$ mkdir nltk
    [adrian<strong i="18">@chakra</strong> temporal]$ cd nltk/
    [adrian<strong i="19">@chakra</strong> nltk]$ python3 -m venv venv
    [adrian<strong i="20">@chakra</strong> nltk]$ . venv/bin/activate
    (venv) [adrian<strong i="21">@chakra</strong> nltk]$ pip install nltk
    Collecting nltk
    Using cached nltk-3.2.2.tar.gz
    Collecting six (from nltk)
    Using cached six-1.10.0-py2.py3-none-any.whl
    Installing collected packages: six, nltk
    Running setup.py install for nltk ... done
    Successfully installed nltk-3.2.2 six-1.10.0
    You are using pip version 8.1.1, however version 9.0.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    (venv) [adrian<strong i="22">@chakra</strong> nltk]$ python
    Python 3.5.2 (default, Jan 18 2017, 23:05:33) 
    [GCC 5.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import nltk
    >>> # Download the book resources, which requires GUI interaction.
    ... 
    >>> nltk.download()
    showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
    True
    >>> from nltk.book import *
    *** Introductory Examples for the NLTK Book ***
    Loading text1, ..., text9 and sent1, ..., sent9
    Type the name of the text or sentence to view it.
    Type: 'texts()' or 'sents()' to list the materials.
    text1: Moby Dick by Herman Melville 1851
    text2: Sense and Sensibility by Jane Austen 1811
    text3: The Book of Genesis
    text4: Inaugural Address Corpus
    text5: Chat Corpus
    text6: Monty Python and the Holy Grail
    text7: Wall Street Journal
    text8: Personals Corpus
    text9: The Man Who Was Thursday by G . K . Chesterton 1908
    >>> text1.generate(words=None)
    >>>
    

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

إذا كنت توافق على هذه التغييرات ولكن ليس لديك الوقت أو الدافع لتنفيذها ، فيرجى إبلاغي بذلك وسأرسل طلب دمج.

أتساءل أيضًا عما إذا كان بإمكاننا إزالة الإشارات إلى generate() من الكتاب. على الأقل في الفصل الأول ، لا يبدو أن الأقسام الأخرى من هذا الفصل مطلوبة.

في رأيي ، أتفق معكم تمامًا على إزالة (إنشاء () المراجع).

لا يزال يشار إلى هذا في الفصل الأول من الكتاب: http://www.nltk.org/book/ch01.html

إنها ليست مشكلة كبيرة ، لكن من المحتمل أن أمضي بضع دقائق في البحث على Google عن هذه المشكلة. تلك المرات القليلة ولكن الكثير من الناس يشقون طريقهم من خلال الكتاب ... :)

نتوء ، توليد () المراجع لا تزال موجودة.

لا يزال هناك الآن.

لا يزال هناك الآن.

لا يزال موجودًا الآن (في إصدار Safari Online من كتاب NLTK)

أوه ، أرى أنه تم إدخال ملاحظة بعد المثال ، تم حذف إنشاء () من NLTK 3 - آسف

لا يزال يرمي الخطأ

يجب أن تكون الطريقة generate موجودة اعتبارًا من NLTK 3.4. تحقق من حزمة nltk.lm !

مرحبًا ، ما هي البدائل الحالية الممكنة لإنشاء نص تلقائيًا ، بدلاً من هذه الوظيفة؟ أنا أقرأ النص الذي تم إنشاؤه من الفصل الأول من الكتاب ، وأود أيضًا أن أنتج جمل رائعة مثل "في بداية أخيه رجل مشعر" أو هذا السؤال الأساسي: "فهل يجب أن تكون أجرك؟" .

آسف @ eric-burel أنا لا أفهم تعليقك تمامًا. سأحاول صياغتها في كلماتي وستخبرني إذا كان هذا صحيحًا ، حسنًا؟

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

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

حسنًا ، بدءًا من الإصدار 3.4 من NLTK ، يمكنك بالفعل الوصول إلى generate() . ألق نظرة على وثائق الوحدة النمطية lm :

>>> from nltk import lm
>>> help(lm)

يمكن أيضًا إنشاء التوليد الخاص بك ، إذا أردت: http://www.cyber-omelette.com/2017/01/markov.html

أحاول اتباع الأمثلة الواردة في كتاب O'Reilly Natural Language Processing مع Python ، وهو كيف وصلت إلى هذه المناقشة. أعتقد أن الناس يتحدثون عن وظيفة nltk.text.generate وليس الدالة nltk.parse.generate ، والتي يبدو أنها تسبب بعض الالتباس.

اكتب text1.generate () ، من المفترض أن أحصل على قائمة من العبارات بأسلوب Moby Dick. بدلاً من ذلك ، كل ما أحصل عليه هو رسالة الخطأ TypeError: generate() missing 1 required positional argument: 'words' .

يبدو أن هذا قادم من حزم الموقع / nltk / text.py التي تم تعريفها على أنها def generate(self, words) ويبدو أن الغرض الوحيد منها هو طباعة تحذير بأن وظيفة المولد لم تعد متاحة ، وهو ما فشل في القيام به حتى لو قمت بتمرير قيمة للحجة الكلمات.

أنا أستخدم الإصدار 3.5.2 من nltk.

يمكن إغلاق هذا الآن منذ generate was added .

شكرا @ كوبر هيد

هل تم إزالة التوليد مرة أخرى؟ أنا أتابع الكتاب ، وتلقيت الخطأ generate() missing 1 required positional argument: 'words' . اي مساعدة من فضلك؟

لا تزال تواجه مشاكل مع هذه الوظيفة: /

TserewaraAlbertSawZ ما هو إصدار NLTK الذي تستخدمه؟ هل يمكنك نشر مثال بسيط يمكننا محاولة تشغيله لإعادة إنتاج هذه المشكلة؟

من الصعب بعض الشيء مساعدتك بناءً على المعلومات التي أرسلتها حتى الآن :(

أنا أتابع الكتاب أيضًا ولكن المشكلة لا تزال قائمة
أي طريقة بديلة لهذه الوظيفة تولد

TypeError                                 Traceback (most recent call last)
<ipython-input-36-463eb7c367ab> in <module>()
----> 1 text3.generate()

TypeError: generate() missing 1 required positional argument: 'words'
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

DavidNemeskey picture DavidNemeskey  ·  4تعليقات

mwess picture mwess  ·  5تعليقات

vezeli picture vezeli  ·  3تعليقات

ndvbd picture ndvbd  ·  4تعليقات

chaseireland picture chaseireland  ·  3تعليقات