2014-12-24 5 views
1

У меня есть каталог, полный .txt файлов (документов). Сначала я load документов и раздеть некоторые скобки и удалить некоторые цитаты, так что документы выглядят следующим образом, например:Проблемы с подбором словаря в scikit-learn?

document1: 
is a scientific discipline that explores the construction and study of algorithms that can learn from data Such algorithms operate by building a model 

document2: 
Machine learning can be considered a subfield of computer science and statistics It has strong ties to artificial intelligence and optimization which deliver methods 

Так я загружаю файлы из каталога, как это:

preprocessDocuments =[[' '.join(x) for x in sample[:-1]] for sample in load(directory)] 


documents = ''.join(i for i in ''.join(str(v) for v 
               in preprocessDocuments) if i not in "',()") 

Тогда я triying векторизовать document1 и document2 для того, чтобы создать учебную матрицу следующим образом:

from sklearn.feature_extraction.text import HashingVectorizer 
vectorizer = HashingVectorizer(analyzer='word') 
X = HashingVectorizer.fit_transform(documents) 
X.toarray() 

Тогда это выход:

raise ValueError("empty vocabulary; perhaps the documents only" 
ValueError: empty vocabulary; perhaps the documents only contain stop words 

Как создать векторное представление с учетом этого ?. Я думал, что загружал загруженные файлы в documents, но кажется, что документы не могут быть установлены.

ответ

2

Какое содержимое documents? It looks like предполагается, что он должен быть списком имен файлов или строк с токенами. Кроме того, вы должны вызывать fit_transform с помощью объекта, а не как статический метод, i. е. vectorizer.fit_transform(documents).

Например, это работает здесь:

from sklearn.feature_extraction.text import HashingVectorizer 
documents=['this is a test', 'another test'] 
vectorizer = HashingVectorizer(analyzer='word') 
X = vectorizer.fit_transform(documents) 
+0

Спасибо за обратную связь, когда я печатаю 'documents' я получаю следующее:' [очень большой текст] [другой очень большой текст] [третий очень большой текст] ', три списка, которые представляют 3 .txt-файлы, которые у меня есть в каталоге, любое предложение отсюда ?. – tumbleweed

+0

Да, ваши 'документы' должны быть списком, где каждый элемент представляет собой строку с символическим документом. Что-то вроде: 'documents = ['word_1_doc_1 word_2_doc_1 word_3_doc_1', 'word_1_doc_2 word_2_doc_2 ...', 'word_1_doc_3, word_2_doc_3 ...']'. Если вы делаете что-то вроде 'documents = ['' .join (ii) для ii в документах]', это может сделать трюк. –

Смежные вопросы