【发布时间】:2015-11-05 07:32:38
【问题描述】:
我想为一组文档 (10) 计算 TF_IDF。我为此使用 Python Anaconda。
import nltk
import string
import os
from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.stem.porter import PorterStemmer
path = '/opt/datacourse/data/parts'
token_dict = {}
stemmer = PorterStemmer()
def stem_tokens(tokens, stemmer):
stemmed = []
for item in tokens:
stemmed.append(stemmer.stem(item))
return stemmed
def tokenize(text):
tokens = nltk.word_tokenize(text)
stems = stem_tokens(tokens, stemmer)
return stems
for subdir, dirs, files in os.walk(path):
for file in files:
file_path = subdir + os.path.sep + file
shakes = open(file_path, 'r')
text = shakes.read()
lowers = text.lower()
no_punctuation = lowers.translate(None, string.punctuation)
token_dict[file] = no_punctuation
tfidf = TfidfVectorizer(tokenizer=tokenize, stop_words='english')
tfs = tfidf.fit_transform(token_dict.values())
但在打印tfs = tfidf.fit_transform(token_dict.values()) 后,我收到以下错误消息。
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 1412: invalid start byte
如何解决此错误?
【问题讨论】:
-
尝试 latin-1 而不是 utf8
-
如何更改代码以尝试 latin-1?
-
tfs = tfs.decode('latin-1')
标签: python utf-8 anaconda tf-idf