Как использовать искровой наивный байесовский классификатор для классификации текста с IDF?

Я хочу преобразовать текстовые документы в векторы функций, используя tf-idf, а затем обучить наивный алгоритм Байеса для их классификации.

Я могу легко загружать свои текстовые файлы без меток и использовать HashingTF (), чтобы преобразовать их в вектор, а затем использовать IDF () для взвешивания слов в соответствии с их важностью. Но если я сделаю это, я избавлюсь от меток, и, кажется, невозможно рекомбинировать метку с вектором, даже если порядок тот же.

С другой стороны, я могу вызывать HashingTF () для каждого отдельного документа и сохранять метки, но затем я не могу вызвать IDF () для него, так как для этого требуется весь корпус документов (и метки будут мешать) ,

В документации по искрам для наивных байесов есть только один пример, где точки уже помечены и векторизованы, так что это не сильно поможет.

Я также взглянул на это руководство:http://help.mortardata.com/technologies/spark/train_a_machine_learning_model но здесь он только применяет функцию хеширования к каждому документу без idf.

Поэтому у меня вопрос, есть ли способ не только векторизовать, но и взвесить слова, используя idf для наивного байесовского классификатора? Кажется, главная проблема заключается в том, что Спаркс настаивает на том, чтобы в качестве входных данных для NaiveBayes принимались только числа с помеченными точками.

def parseLine(line):
    label = row[1] # the label is the 2nd element of each row
    features = row[3] # the text is the 4th element of each row
    features = tokenize(features)
    features = hashingTF.transform(features)
    return LabeledPoint(label, features)
labeledData = data1.map(parseLine)

Ответы на вопрос(1)

Ваш ответ на вопрос