web-dev-qa-db-ja.com

警告「DeprecationWarninggenerator'ngrams'raisedStopIteration」を取り除く方法

Kaggleノートブックで作業しているときに、問題が発生しました。次のコードブロック:

from nltk import ngrams
def grams(tokens):
    return list(ngrams(tokens, 3))
negative_grams = preprocessed_negative_tweets.apply(grams)

その結果、赤いボックスが表示され、

/opt/conda/bin/ipython:5: DeprecationWarning: generator 'ngrams' raised StopIteration

変数preprocessed_negative_tweetsは、トークンを含むPandasデータフレームです。

誰かがこれをなくす方法を知っていますか?

(フルノートブックが利用可能 ここ

10
langkilde

警告を望まない、または抑制できない他の人へ。

これは、ngramsがジェネレータを終了するためにStopIteration例外を発生させているために発生しており、これはPython 3.5から非推奨です。

ジェネレーターが停止するコードを変更することで警告を取り除くことができるので、StopIterationを上げる代わりに、Pythonのキーワードreturnを使用するだけです。

詳細: PEP 479

15
carla08

すべての警告を静めたいだけの場合は、次のことができます。

import warnings

warnings.filterwarnings('ignore')

これらの警告に耳を傾ける必要があります...

2
duhaime

次のようなラッパーを使用できます。

def get_data(gen):
    try:
        for elem in gen:
            yield elem
    except (RuntimeError, StopIteration):
        return

そして(あなたの例によると):

data = get_data(ngrams(tokens, 3))

トリックを行う必要があります

2
Most Wanted