如何摆脱警告 "DeprecationWarning generator 'ngrams' raised StopIteration"
How to get rid of warning "DeprecationWarning generator 'ngrams' raised StopIteration"
在使用 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数据框。
有人知道如何解决这个问题吗?
(完整笔记本可用 here)
对于任何其他不想或不能抑制警告的人。
发生这种情况是因为 ngrams
正在引发 StopIteration
结束生成器的异常,并且这已从 Python 3.5.
中弃用
您可以通过更改生成器停止处的代码来消除警告,因此您只需使用 Python 的关键字 return
.[=15 而不是引发 StopIteration
=]
更多信息:PEP 479
如果你只想消除所有警告,你可以这样做:
import warnings
warnings.filterwarnings('ignore')
我们应该听取这些警告...
您可以使用这样的包装器:
def get_data(gen):
try:
for elem in gen:
yield elem
except (RuntimeError, StopIteration):
return
然后(根据您的示例):
data = get_data(ngrams(tokens, 3))
应该可以解决问题
在使用 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数据框。
有人知道如何解决这个问题吗?
(完整笔记本可用 here)
对于任何其他不想或不能抑制警告的人。
发生这种情况是因为 ngrams
正在引发 StopIteration
结束生成器的异常,并且这已从 Python 3.5.
您可以通过更改生成器停止处的代码来消除警告,因此您只需使用 Python 的关键字 return
.[=15 而不是引发 StopIteration
=]
更多信息:PEP 479
如果你只想消除所有警告,你可以这样做:
import warnings
warnings.filterwarnings('ignore')
我们应该听取这些警告...
您可以使用这样的包装器:
def get_data(gen):
try:
for elem in gen:
yield elem
except (RuntimeError, StopIteration):
return
然后(根据您的示例):
data = get_data(ngrams(tokens, 3))
应该可以解决问题