У меня есть следующий код для извлечения функций из набора файлов (имя папки — это имя категории) для классификации текста.
import sklearn.datasets
from sklearn.feature_extraction.text import TfidfVectorizer
train = sklearn.datasets.load_files('./train', description=None, categories=None, load_content=True, shuffle=True, encoding=None, decode_error='strict', random_state=0)
print len(train.data)
print train.target_names
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(train.data)
Он выдает следующую трассировку стека:
Traceback (most recent call last):
File "C:\EclipseWorkspace\TextClassifier\main.py", line 16, in <module>
X_train = vectorizer.fit_transform(train.data)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line 1285, in fit_transform
X = super(TfidfVectorizer, self).fit_transform(raw_documents)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line 804, in fit_transform
self.fixed_vocabulary_)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line 739, in _count_vocab
for feature in analyze(doc):
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line 236, in <lambda>
tokenize(preprocess(self.decode(doc))), stop_words)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line 113, in decode
doc = doc.decode(self.encoding, self.decode_error)
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 32054: invalid start byte
Я запускаю Python 2.7. Как я могу заставить это работать?
EDIT: я только что обнаружил, что это прекрасно работает для файлов с кодировкой utf-8
(мои файлы имеют кодировку ANSI
). Есть ли способ заставить sklearn.datasets.load_files()
работать с кодировкой ANSI
?
each_string.decode('utf-16').encode('utf-8')
- person mattsilver   schedule 01.05.2015TfidfVectorizer
принимает параметрencoding
. Попробуйте передатьencoding=ansi
и сообщите обо всех ошибках - person mbatchkarov   schedule 01.05.2015