Я думаю, что на ваш вопрос можно ответить следующим образом: этот вопрос , этот еще один и [TfidfVectorizer docs] [3].Для полноты я обернул ответы ниже:
Сначала вы хотите получить идентификаторы файлов, по первому вопросу вы можете получить их следующим образом:
ids = newcorpus.fileids()
Затем, основываясь на второй очереди , вы можете получить слова, предложения или абзацы документов:
doc_words = []
doc_sents = []
doc_paras = []
for id_ in ids:
# Get words
doc_words.append(newcorpus.words(id_))
# Get sentences
doc_sents.append(newcorpus.sents(id_))
# Get paragraph
doc_paras.append(newcorpus.paras(id_))
Теперь, на позиции ith doc_words
, doc_sents
и doc_paras
у вас есть все слова, предложения и абзацы (соответственно) для каждого документа в корпусе.
Для tf-idf вы, вероятно, просто хотитеслова.Так как метод TfidfVectorizer.fit
получает итерацию, которая возвращает str
, Unicode или файловые объекты, вам необходимо либо преобразовать ваши документы (массив токенизированных слов) в одну строку, либо использовать аналогичный подходдо этого .Последнее решение использует фиктивный токенизатор для непосредственного обращения с массивами слов.
Вы также можете передать свой собственный токенизатор в TfidVectorizer
и использовать PlaintextCorpusReader просто для чтения файлов.