我对Python很幼稚,几个月前开始学习Python 我正在本地处理 Twitter 数据,它有 4 列。 ID、品牌、情感、评论
def data_clean_pipeline(text):
#removing html tags
text = str(BeautifulSoup(text).get_text())
#removing any nonletter words
text = re.sub("[^a-zA-Z]", " ", text)
text = text.lower()
text = nltk.word_tokenize(text)
SW = stopwords.words('english')
text = [t for t in text if not t in set(SW)]
#Then we can apply stemming and then lemmitize the data
SS_stem = SnowballStemmer(language='english')
text = [SS_stem.stem(t) for t in text]
word_lemmitize = WordNetLemmatizer()
text = [word_lemmitize.lemmatize(t) for t in text]
return " ".join(text)
当我将此函数应用于 Twitter 数据中的评论之一时,它可以工作,但是当我应用于整个列时
例如
data_clean_pipeline(twitter_data['comment'][0] #it works fine and return the output
但是当我将此函数应用于列时会发生错误
twitter_data['clean'] = twitter_data['comment'].apply(data_clean_pipeline)
任何反馈都会有帮助,谢谢:)
我在 python 错误窗口的图像描述中附上了错误代码的图像
我原以为它将将该功能应用于整个评论栏,但这并没有发生。
我尝试过多次失败
Python 图像描述中我的错误代码的图像 错误窗口
它确实表明以下行发生错误
text = str(BeautifulSoup(text).get_text())
将把该函数应用到整个评论栏,而不是 正在发生
它确实尝试这样做,但失败了。显然您在评论栏中至少有一个条目不适合
BeautifulSoup
。您应该在处理之前清理数据或制作函数,以便它返回指示正确类型故障的值。在 python
中,try- except-else 用于处理非典型情况。对于文本处理功能,可以使用以下方式
def clean(text):
try:
result = ... # process text as you wish
except Exception:
return "<error>"
else:
return text