我是python的新手,我正尝试在Yelp的一小部分上工作!数据集是JSON,但我使用熊猫库和NLTK转换为CSV。
在进行数据预处理时,我首先尝试删除所有标点符号以及最常见的停用词。完成此操作后,我想应用nltk.stem中易于使用的Porter Stemming算法。
这是我的代码:
"""A method for removing the noise in the data and the most common stop.words (NLTK)."""
def stopWords(review):
stopset = set(stopwords.words("english"))
review = review.lower()
review = review.replace(".","")
review = review.replace("-"," ")
review = review.replace(")","")
review = review.replace("(","")
review = review.replace("i'm"," ")
review = review.replace("!","")
review = re.sub("[$!@#*;:<+>~-]", '', review)
row = review.split()
tokens = ' '.join([word for word in row if word not in stopset])
return tokens
我在这里使用令牌输入我编写的词干方法:
"""A method for stemming the words to their roots using Porter Algorithm (NLTK)"""
def stemWords(impWords):
stemmer = stem.PorterStemmer()
tok = stopWords(impWords)
========================================================================
stemmed = " ".join([stemmer.stem(str(word)) for word in tok.split(" ")])
========================================================================
return stemmed
但是我收到一个错误UnicodeDecodeError: 'utf8' codec can't decode byte 0xc2 in position 0: unexpected end of data
。 '=='内的行给了我错误。
我尝试清理数据并删除所有特殊字符!@#$ ^&*和其他字符来完成这项工作。但是停用词效果很好。阻止不起作用。有人可以告诉我我做错了什么吗?
如果我的数据不干净,或者unicode字符串在某处中断,我可以通过任何方式清理或修复它不会给我这个错误的方法吗?我想做词干,任何建议都会有所帮助。
python大神给出的解决方案
阅读python中的unicode字符串处理。有类型str
,但也有类型unicode
。
我建议:
读取后立即解码每一行,以缩小输入数据中的错误字符(实际数据包含错误)
在任何地方都可以使用unicode
和u" "
字符串。