我正在创建一个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]))
使用
我想输入一个字符串“chấtlượngmônhọckhátốttruyềncho chonhiềukỹnăngcóíchphòngmáyđảmbảovềsốlượngmáycho”作为输入。 多谢您阅读我的问题。祝你有美好的一天!
答案 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