【问题标题】:RecursionError using NLTK使用 NLTK 的递归错误
【发布时间】:2018-10-13 16:42:31
【问题描述】:

我运行此代码的目的是在将文本输入模型之前对其进行处理

并得到 RecursionError: 比较中超出了最大递归深度

train_text 是一个带有文本的python系列 stem 是 nltk 库中的 PorterStemmer 对象

train_corpus = []
for i in range(0, len(train_text)):
    data = re.sub("[^a-zA-Z]", ' ', train_text[i]).lower().split()
    data = [ps.stem(word) for word in data if not word in set(stopwords.words("english"))]
    data = ' '.join(data)
    train_corpus.append(data)

RecursionError                            Traceback (most recent call last)
<ipython-input-25-4a8646f33f6f> in <module>()

     57 for i in range(0, len(train_text)):
     58     data = re.sub("[^a-zA-Z]", ' ', train_text[i]).lower().split()
---> 59     data = [ps.stem(word) for word in data if not word in set(stopwords.words("english"))]
     60     data = ' '.join(data)
     61     train_corpus.append(data)

<ipython-input-25-4a8646f33f6f> in <listcomp>(.0)
     57 for i in range(0, len(train_text)):
     58     data = re.sub("[^a-zA-Z]", ' ', train_text[i]).lower().split()
---> 59     data = [ps.stem(word) for word in data if not word in set(stopwords.words("english"))]
     60     data = ' '.join(data)
     61     train_corpus.append(data)

~\Anaconda3\lib\site-packages\nltk\stem\porter.py in stem(self, word)
    665         stem = self._step1a(stem)
    666         stem = self._step1b(stem)
--> 667         stem = self._step1c(stem)
    668         stem = self._step2(stem)
    669         stem = self._step3(stem)
....

我能做些什么来解决这个问题?

谢谢。

【问题讨论】:

  • 不清楚你的代码应该做什么,它所做的只是抛出一个 NameError 因为有未定义的变量。请发帖minimal reproducible example
  • train_text 中到底有什么?这个github.com/nltk/nltk/issues/1971 表明很长的单词会导致递归错误。您是否尝试过一个简短的训练示例?
  • 我有一些这样的文字评论(这是从数据帧中提取的系列) 0 解释\n为什么在我的用户名下进行编辑... 1 哇!他匹配这个背景颜色我是... 2 嘿,伙计,我真的不想编辑战争。它...
  • train_text 中字符串的最大长度是多少? (您可以使用print(max(len(s) for s in train_text)) 进行检查)
  • 我的系列中字符串的最大长度是 5000

标签: python for-loop recursion


【解决方案1】:

看来Docs可以中奖: setrecursionlimit().
但是记住,递归不是免费的——它会消耗memory_of_function_consumes * amount_of_circles_of_recursion——所以当你有大量的递归运行时,你可能会耗尽内存。这就是为什么这个限制在 Python 中被硬编码,我认为覆盖它是个坏主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多