Как обучить наивный байесовский классификатор для tf-idf-взвешенного dfm в R? - PullRequest
0 голосов
/ 14 марта 2020

Я новичок в анализе текста и пытаюсь обучить наивный байесовский классификатор для набора данных из quanteda, используя следующие коды:

library("quanteda")

data(data_corpus_amicus, package = "quanteda.corpora")

# set training class
trainclass <- docvars(data_corpus_amicus, "trainclass")
amicus_train <- which(trainclass == "P" | trainclass == "R" )

# set test class
testclass  <- docvars(data_corpus_amicus, "testclass")
amicus_test <- which(testclass == "AP" | testclass == "AR")

# create dfm from the data
amicus_dfm <- dfm(data_corpus_amicus, verbose = FALSE)

Я хотел обучить классификатор для tf-idf весил dfm, поэтому я попробовал следующее:

amicus_dfm_weight <- dfm_tfidf(amicus_dfm, scheme_tf = "count", scheme_df = "inverse") 

weight_nb <-textmodel_nb(amicus_dfm_weight[amicus_train,], docvars(data_corpus_amicus, "trainclass")[amicus_train])

Приведенный выше код дает мне ошибку Error: will not group a weighted dfm; use force = TRUE to override, поэтому я также попытался amicus_dfm_weight <- dfm_tfidf(amicus_dfm, scheme_tf = "count", scheme_df = "inverse", force = TRUE), но все равно возникает та же ошибка.

Кто-нибудь знает, что означает эта ошибка и как ее исправить?

Большое спасибо!

1 Ответ

0 голосов
/ 15 марта 2020

Да: установите новейший пакет quanteda.textmodels (> = 0.9.1), в котором сейчас находится textmodel_nb(). Эта проблема была исправлена. В будущем, пожалуйста, рассмотрите возможность использования reprex::reprex() для воспроизводимых примеров и всегда включайте версии пакета в вывод или объяснение.

Это было бы более уместно как вопрос GitHub, чем как вопрос SO.

...