Nltk: text.generate() tidak ada, tetapi masih direferensikan

Dibuat pada 20 Agu 2014  ·  27Komentar  ·  Sumber: nltk/nltk

Saya telah mencoba mengikuti buku Natural Language Processing, tetapi tepat di bab pertama saya menemukan beberapa masalah. Setelah import ing semuanya dari nltk.book , pikiran pertama saya adalah mencoba text3.generate() seperti yang ditunjukkan dalam salah satu contoh. Tentu saja, saya mendapat AttributeError yang bagus karena kelas Teks tampaknya tidak memiliki metode itu di NLTK yang saya instal.
Lebih jauh lagi, bahkan menjalankan nltk.text.demo() mencoba melakukan teks yang dihasilkan - dan mengembalikan kesalahan yang sama.
Tentu saja, saya tidak dapat menemukan dokumentasi apa pun untuk metode generate() , jadi saya berasumsi bahwa metode itu telah dihapus; jika demikian, Anda harus menghapus referensinya dari nltk.text.demo() dan dari buku teks.

Saya menggunakan Python 2.7.8 dengan NLTK 3.0.0b1 (yang merupakan versi yang tersedia melalui paket penginstal Windows dari PyPI pada saat penulisan ini). Contoh text3.generate() ada di versi buku teks lama dan saat ini.

language-model

Komentar yang paling membantu

Ini masih dirujuk dalam Bab satu buku: http://www.nltk.org/book/ch01.html

Ini bukan masalah besar, tapi saya mungkin biasa menghabiskan beberapa menit untuk mencari masalah di googling. Beberapa menit itu, namun banyak orang sedang mengerjakan buku itu ... :)

Semua 27 komentar

Maaf bila membingungkan. Ada masalah dengan pemodelan bahasa NLTK
kelas dan jadi kami menghapusnya sampai masalah teratasi. Ini merusak
fungsi pembuatan teks. Saya telah memperbarui versi online buku
dengan catatan tentang ini, dan memperbarui demo teks (untuk disertakan dalam
rilis 3.0.0b2 segera).

-Steven Burung

Pada 20 Agustus 2014 17:12, Kasran [email protected] menulis:

Saya sudah mencoba mengikuti Natural Language Processing
buku, tapi tepat di bab pertama saya menemukan beberapa masalah. Setelah
mengimpor semuanya dari nltk.book, pikiran pertama saya adalah mencoba
text3.generate() seperti yang ditunjukkan dalam salah satu contoh. Tentu saja saya
mendapat AttributeError yang indah karena kelas Teks tampaknya tidak
memiliki metode itu di NLTK yang saya instal.
Selanjutnya, bahkan menjalankan nltk.text.demo() mencoba melakukan teks yang dihasilkan -
dan mengembalikan kesalahan yang sama.
Tentu saja, saya tidak dapat menemukan dokumentasi apa pun untuk metode generate(),
jadi saya berasumsi itu telah dihapus; jika itu masalahnya, Anda harus menghapus
referensi dari nltk.text.demo() dan dari buku teks.

Saya menggunakan Python 2.7.8 dengan NLTK 3.0.0b1. Contoh text3.generate() adalah
baik dalam versi lama dan versi terbaru dari buku teks.

Balas email ini secara langsung atau lihat di GitHub
https://github.com/nltk/nltk/issues/736.

Baik! Benar-benar bisa dimengerti. Saya kira saya harus menulis chatterbots saya sendiri dengan rantai Markov yang diterapkan, cara lama yang kasar, sampai diperbaiki.

Terima kasih atas tanggapan yang cepat.

Saya juga bertemu dengan masalah yang sama yang sedikit membingungkan saya. Terima kasih untuk utas ini yang telah saya tuju oleh pencarian google.

hmmm. apakah ini membantu (https://github.com/alvations/nltk/blob/develop/nltk/translate/decoder.py#L33)? Model bahasa tampaknya berfungsi dengan baik saat melakukan decoding. Saya akan segera mendorong kode yang diperbarui dan didokumentasikan dengan baik untuk perpustakaan translate .

Maaf saya keluar untuk hackathon, lokakarya, dan konferensi berturut-turut. Saya akan mencoba untuk mendorongnya pada akhir minggu ini, saya harap.

Ah tapi model saya memuat model yang sudah diperhitungkan sebelumnya, bukan membangun model dari awal. Adakah yang membuat modul model bahasa?

Saya melihat dua masalah dengan kode saat ini (selain fakta bahwa itu tidak berfungsi), berdasarkan pengalaman pengguna:

  1. Dalam buku, metode tidak mengambil parameter apa pun (setidaknya saat pertama kali muncul di buku), tetapi tanda tangan saat ini memerlukan parameter words . Jadi ketika Anda mengikuti buku, apa yang Anda dapatkan adalah sebagai berikut:

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

    Ini sangat tidak ramah pengguna. Saya sarankan memberi kata nilai default di tanda tangan (misalnya words=None ) untuk menghindari masalah ini.

  2. Menggunakan konsol Python biasa mengikuti instruksi buku, saya tidak melihat DeprecationWarning yang dicatat oleh kode. Inilah yang saya lakukan dari awal:

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

    Karena generate() tidak hanya ditinggalkan seperti dalam "akan dihapus", tetapi juga seperti dalam "tidak berfungsi lagi", saya sarankan menaikkan NotImplementedError daripada mencatat peringatan. Melakukan hal itu akan membuat kode yang ada gagal (yang saya, sebagai pengembang, ingin lakukan alih-alih tampaknya berhasil tanpa benar-benar melakukan apa yang biasa dilakukan) dan muncul di konsol untuk pembaca buku.

Jika Anda setuju dengan perubahan ini tetapi tidak memiliki waktu atau motivasi untuk menerapkannya, beri tahu saya dan saya akan mengirimkan permintaan penggabungan.

Saya juga ingin tahu apakah kami dapat menghapus referensi ke generate() dari buku. Setidaknya dalam bab 1, mereka tampaknya tidak diperlukan oleh bagian lain dari bab ini.

Menurut pendapat saya, saya sangat setuju dengan kalian untuk menghapus (menghasilkan () referensi).

Ini masih dirujuk dalam Bab satu buku: http://www.nltk.org/book/ch01.html

Ini bukan masalah besar, tapi saya mungkin biasa menghabiskan beberapa menit untuk mencari masalah di googling. Beberapa menit itu, namun banyak orang sedang mengerjakan buku itu ... :)

Bump, generate() referensi masih ada.

Itu masih ada sekarang.

Itu masih ada sekarang.

Itu masih ada sekarang (pada versi Safari Online dari buku NLTK)

Oh saya melihat ada catatan yang dimasukkan setelah contoh, generate() telah dihapus dari NLTK 3 -- maaf

Itu masih melempar kesalahan

Metode generate harus ada pada NLTK 3.4. Lihat paket nltk.lm !

Hai, apa alternatif saat ini yang memungkinkan untuk menghasilkan teks secara otomatis, sebagai pengganti fungsi ini? Saya sedang membaca teks yang dihasilkan dari Bab 1 buku ini, dan saya juga ingin membuat kalimat-kalimat yang luar biasa seperti "Pada mulanya saudara laki-lakinya adalah seorang pria berbulu" atau pertanyaan mendasar ini: "begitukah upahmu?" .

Maaf @eric-burel Saya tidak begitu mengerti komentar Anda. Saya akan mencoba mengungkapkannya dengan kata-kata saya dan Anda memberi tahu saya jika itu benar, oke?

Apakah Anda ingin cara lain untuk menghasilkan teks selain melatih model bahasa dan menggunakan metode generate ?

Hai, maaf saya tidak jelas, saya baru saja tertawa membaca buku NLP dengan Python ketika mencapai bagian pembuatan teks, karena kalimatnya sangat realistis sementara masih aneh, dan saya menemukan subjek ini menarik secara umum.
Saya hanya ingin tahu apa alternatif yang direkomendasikan saat ini untuk menghasilkan teks secara otomatis, sebagai pengganti generate() . Haruskah saya memperbarui atau memuat perpustakaan lain?

Nah, mulai dengan NLTK versi 3.4 Anda sebenarnya memiliki akses ke generate() . Lihatlah dokumentasi untuk modul lm :

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

Bisa juga buat generate sendiri, kalau mau: http://www.cyber-omelette.com/2017/01/markov.html

Saya mencoba mengikuti contoh dalam buku O'Reilly Natural Language Processing with Python, begitulah cara saya sampai pada diskusi ini. Saya pikir orang berbicara tentang fungsi nltk.text.generate dan bukan fungsi nltk.parse.generate, yang tampaknya menyebabkan kebingungan.

Saya mengetik text1.generate(), saya seharusnya mendapatkan daftar frasa dalam gaya Moby Dick. Sebaliknya, yang saya dapatkan hanyalah pesan kesalahan TypeError: generate() missing 1 required positional argument: 'words' .

Ini tampaknya berasal dari site-packages/nltk/text.py yang didefinisikan sebagai def generate(self, words) dan satu-satunya tujuan tampaknya adalah untuk mencetak peringatan bahwa fungsi generator tidak lagi tersedia, yang gagal dilakukan bahkan jika Anda memberikan nilai untuk argumen kata.

Saya menggunakan nltk versi 3.5.2.

Ini dapat ditutup sekarang sejak generate was added .

Terima kasih @Copper-Head

Apakah hasil dihapus lagi? Saya mengikuti buku, dan mendapatkan kesalahan generate() missing 1 required positional argument: 'words' . Ada bantuan, tolong?

Masih mengalami masalah dengan fungsi ini :/

@Tserewara @AlbertSawZ versi NLTK apa yang Anda gunakan? Bisakah Anda memposting contoh minimal yang dapat kami coba jalankan untuk mereproduksi masalah ini?

Agak sulit untuk membantu Anda berdasarkan informasi apa yang Anda kirim sejauh ini :(

Saya juga mengikuti buku itu tetapi masalahnya masih berlanjut
Cara alternatif apa pun untuk menghasilkan fungsi ini

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

TypeError: generate() missing 1 required positional argument: 'words'
Apakah halaman ini membantu?
0 / 5 - 0 peringkat