分配前已引用Jupyter Notebook错误局部变量

时间:2019-05-14 17:51:48

标签: python jupyter-notebook

我正在创建一个Stop_word函数,以便预处理我的文本数据。我在Jupyter Notebook平台上工作时收到“我在分配之前引用的本地变量'text2'”。

详细信息

  • text是文本令牌的数组

  • list_stopwords = ['sinhviên','giảngviên']

我已经使用其他平台Pycharm调试了代码,结果相当不错(如我所愿)

filename = './StopWord.csv'
data = pd.read_csv(filename,names=['word'])
list_stopwords = data['word']
def remove_stopword(text):
    pre_text = []
    for x in text:
        if x in list_stopwords:
            text2 = ' '.join(pre_text)
        else:
            pre_text.append(x)
    return text2
print(remove_stopword(tokenize_df[1]))

使用

  • tokenize_df [1] = ['chấtlượng', 'mônhọc', 'khá', 'tốt', 'giảngviên', “truyềnđạt”, 'cho', 'sinhviên', “nhiều”, 'kỹnăng', 'cóch', “phòng”, '可以', 'đảmbảo', 'về', “sốlượng”, '可以', 'cho', 'sinhviên']

我想输入一个字符串“chấtlượngmônhọckhátốttruyềncho chonhiềukỹnăngcóíchphòngmáyđảmbảovềsốlượngmáycho”作为输入。 多谢您阅读我的问题。祝你有美好的一天!

2 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您的remove_stopword()函数返回了text2,但是您的代码只有在找到停用词后才设置text2。如果没有,那么else总是被执行,而text2永远不会得到值。

推迟构造text2直到return语句之前。您无需在每次找到停用词时都进行重建。但是您确实需要至少构建一次。

答案 1 :(得分:0)

您的if语句引起问题。如果您的条件的第一部分得到满足

if x in list_stopwords:
    text2 = ' '.join(pre_text)

然后返回text2,一切都很好。但是,如果条件的第二个“其他”部分起作用,则在本地名称空间中未定义text2,并且无法返回in。

else:
    pre_text.append(x)
return text2