我有一个 Pandas 数据帧,想使用以下代码计算双字母:
from nltk import bigrams
df['tweet_bigrams'] = df['tweet_tokenized'].apply(lambda x: list(bigrams(x)))
它在Jupyter中工作正常。但是,当我尝试在Linux终端上运行它时,我不断收到以下错误:
Traceback (most recent call last):
File "/usr/licensed/anaconda3/5.3.1/lib/python3.7/site-packages/nltk/util.py", line 468, in ngrams
history.append(next(sequence))
StopIteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "url_tweet_feature_extraction.py", line 143, in <module>
df['tweet_bigrams'] = df['tweet_tokenized'].apply(lambda x: list(bigrams(x)))
File "/usr/licensed/anaconda3/5.3.1/lib/python3.7/site-packages/pandas/core/series.py", line 3194, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas/_libs/src/inference.pyx", line 1472, in pandas._libs.lib.map_infer
File "url_tweet_feature_extraction.py", line 143, in <lambda>
df['tweet_bigrams'] = df['tweet_tokenized'].apply(lambda x: list(bigrams(x)))
File "/usr/licensed/anaconda3/5.3.1/lib/python3.7/site-packages/nltk/util.py", line 491, in bigrams
for item in ngrams(sequence, 2, **kwargs):
RuntimeError: generator raised StopIteration
关于如何解决这个问题的任何想法?
更新你的 NLTK。您需要版本 3.4(或更高版本,供将来的读者使用(。旧版本依赖于 Python 3.7 中更改的StopIteration
处理。