在使用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)
答案 0 :(得分:12)
致任何不想要或无法抑制警告的人。
这种情况正在发生,因为ngrams
正在引发StopIteration
异常以结束生成器,并且这已从Python 3.5中弃用。
您可以通过更改生成器停止的代码来消除警告,因此您只需使用Python的关键字StopIteration
而不是提出return
。
更多信息:PEP 479
答案 1 :(得分:0)
如果只想使所有警告静音,则可以执行以下操作:
import warnings
warnings.filterwarnings('ignore')
我们应该听这些警告...
答案 2 :(得分:0)
您可以使用像这样的包装器:
def get_data(gen):
try:
for elem in gen:
yield elem
except (RuntimeError, StopIteration):
return
然后(根据您的示例):
data = get_data(ngrams(tokens, 3))
应该可以解决问题