Nltk: text.generate()は存在しませんが、引き続き参照されます

作成日 2014年08月20日  ·  27コメント  ·  ソース: nltk/nltk

私は自然言語処理の本に沿って従おうとしていますが、最初の章でいくつかの問題に遭遇しています。 importからnltk.bookまですべてを試した後、最初に考えたのは、例の1つに示されているようにtext3.generate()を試すことでした。 もちろん、私がインストールしたNLTKにはTextクラスにそのメソッドがないようであるため、素敵なAttributeErrorを取得しました。
さらに、 nltk.text.demo()を実行しても、生成されたテキストを実行しようとします-そして同じエラーを返します。
もちろん、 generate()メソッドのドキュメントが見つからなかったので、削除されたと思います。 その場合は、 nltk.text.demo()と教科書からその参照を削除する必要があります。

NLTK3.0.0b1でPython2.7.8を使用しています(これは、この記事の執筆時点でPyPIからWindowsインストーラーパッケージを介して入手可能なバージョンでした)。 text3.generate()の例は、古いバージョンと現在のバージョンの両方の教科書にあります。

language-model

最も参考になるコメント

これはまだ本の第1章で参照されています: http ://www.nltk.org/book/ch01.html

それは大したことではありませんが、私はおそらくこれを問題としてグーグルで数分過ごすのが一般的です。 それらの数分の時間、しかし多くの人々が本を通して彼らの道を進んでいます... :)

全てのコメント27件

混乱させて申し訳ありません。 NLTKの言語モデリングに問題がありました
クラスなので、問題が解決するまで削除しました。 これは壊れた
テキスト生成機能。 オンライン版の本を更新しました
これについてのメモを付けて、テキストデモを更新しました(
間もなくリリース3.0.0b2)。

-スティーブンバード

2014年8月20日17:12、 Kasrannotifications @ github.comは次のように書いています。

私は自然言語処理に沿って従おうとしています
本ですが、最初の章で私はいくつかの問題に遭遇しています。 後
nltk.bookからすべてをインポートして、私の最初の考えは試してみることでした
例の1つで示されているtext3.generate()。 もちろん、私
Textクラスは明らかにそうではないので、素敵なAttributeErrorを取得しました
私がインストールしたNLTKにそのメソッドがあります。
さらに、nltk.text.demo()を実行しても、生成されたテキストを実行しようとします-
同じエラーを返します。
もちろん、generate()メソッドのドキュメントは見つかりませんでした。
だから私はそれが削除されたと思います。 その場合は、削除する必要があります
nltk.text.demo()および教科書からの参照。

NLTK3.0.0b1でPython2.7.8を使用しています。 text3.generate()の例は
教科書の古いバージョンと現在のバージョンの両方で。

このメールに直接返信するか、GitHubで表示してください
https://github.com/nltk/nltk/issues/736。

大丈夫! 完全に理解できます。 修正されるまで、マルコフ連鎖を適用した独自のチャットボットを作成する必要があると思います。これは古い大雑把な方法です。

あなたの迅速な対応に感謝。

私も少し戸惑ったこの同じ問題に遭遇しました。 グーグル検索が私を連れて行ったこのスレッドをありがとう。

うーん。 これは役に立ちますか(https://github.com/alvations/nltk/blob/develop/nltk/translate/decoder.py#L33)? 言語モデルは、デコード時に正常に機能するようです。 translateライブラリの更新され、適切に文書化されたコードを間もなくプッシュします。

申し訳ありませんが、ハッカソン、ワークショップ、会議に連続して出かけました。 私は今週の終わりまでにそれをプッシュしようとします、私は願っています。

ああ、でも私のモデルは、モデルを最初から作成するのではなく、事前に計算されたモデルをロードします。 言語モデルモジュールを構築している人はいますか?

現在のコードには(機能しないという事実を除いて)ユーザーエクスペリエンスの観点から2つの問題があります。

  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()への参照を削除できるかどうか疑問に思います。 少なくとも第1章では、この章の他のセクションでは必要とされていないようです。

私の意見では、削除する(generate()参照)ことに完全に同意します。

これはまだ本の第1章で参照されています: http ://www.nltk.org/book/ch01.html

それは大したことではありませんが、私はおそらくこれを問題としてグーグルで数分過ごすのが一般的です。 それらの数分の時間、しかし多くの人々が本を通して彼らの道を進んでいます... :)

バンプ、generate()参照はまだそこにあります。

それは今でもそこにあります。

それは今でもそこにあります。

それは今でもそこにあります(NLTK本のSafariオンラインバージョンで)

ああ、例の後に挿入されたメモがあり、generate()がNLTK3から削除されたことがわかります-申し訳ありません

それはまだエラーを投げています

generateメソッドは、NLTK3.4の時点で存在する必要があります。 nltk.lmパッケージをチェックしてください!

こんにちは、この関数の代わりに、テキストを自動生成するための現在の可能な代替手段は何ですか? 私は本の第1章から生成されたテキストを読んでおり、私も「彼の兄弟の初めには毛むくじゃらの男です」またはこの基本的な質問「あなたの賃金はそうなるでしょうか?」などの素晴らしい文章を作成したいと思います。 。

申し訳ありませんが@ eric-burelあなたのコメントがよくわかりません。 私はそれを私の言葉で言い表すつもりです、そしてあなたはそれが正しいかどうか私に言います、いいですか?

言語モデルをトレーニングしてそのgenerateメソッドを使用する以外に、テキストを生成する他の方法が必要ですか?

こんにちは、申し訳ありませんが、はっきりしていませんでした。テキスト生成の部分に到達したときに、Pythonの本でNLPを読んで大笑いしていました。文章は非常にリアルでありながら奇妙であり、この主題は一般的に興味深いものです。
generate()の代わりに、テキストを自動的に生成するために現在推奨されている代替手段は何でしょうか。 smthを更新するか、別のライブラリをロードする必要がありますか?

NLTKバージョン3.4以降、実際にはgenerate()にアクセスできます。 lmモジュールのドキュメントをご覧ください。

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

必要に応じて、独自の生成物を作成することもできます: http: //www.cyber-omelette.com/2017/01/markov.html¶

O'Reilly Natural Language Processing with Pythonの本の例に従おうとしています。これが、この議論にたどり着いた方法です。 人々はnltk.parse.generate関数ではなく、nltk.text.generate関数について話していると思います。これは、混乱を引き起こしているようです。

text1.generate()と入力すると、MobyDickのスタイルでフレーズのリストを取得することになっています。 代わりに、エラーメッセージTypeError: generate() missing 1 required positional argument: 'words'だけが表示されます。

これは、 def generate(self, words)として定義されているsite-packages / nltk / text.pyからのものであるように見えます。唯一の目的は、ジェネレーター関数が使用できなくなったという警告を出力することであるように見えますが、これは実行できません。 words引数の値を渡したとしても。

nltkバージョン3.5.2を使用しています。

generate was added 、これを閉じることができます。

ありがとう@ Copper-Head

生成は再び削除されましたか? 私は本を​​フォローしていますが、エラーgenerate() missing 1 required positional argument: 'words'が発生しました。 助けてください。

まだこの機能に問題があります:/

@Tserewara @AlbertSawZどのバージョンの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 評価

関連する問題

stevenbird picture stevenbird  ·  4コメント

BLKSerene picture BLKSerene  ·  4コメント

jeryini picture jeryini  ·  5コメント

ndvbd picture ndvbd  ·  4コメント

libingnan54321 picture libingnan54321  ·  3コメント