Ich habe einen Datensatz von BBC Artikel mit zwei Spalten: 'Kategorie' und 'Text'. Ich muss einen naiven Bayes-Algorithmus konstruieren, der die Kategorie (d. H. Geschäft, Unterhaltung) eines Artikels basierend auf dem Typ vorhersagt.Implementieren Naive Bayes für die Textklassifizierung mit Quanteda
Ich versuche, dies mit Quanteda und habe den folgenden Code:
library(quanteda)
bbc_data <- read.csv('bbc_articles_labels_all.csv')
text <- textfile('bbc_articles_labels_all.csv', textField='text')
bbc_corpus <- corpus(text)
bbc_dfm <- dfm(bbc_corpus, ignoredFeatures = stopwords("english"), stem=TRUE)
# 80/20 split for training and test data
trainclass <- factor(c(bbc_data$category[1:1780], rep(NA, 445)))
testclass <- factor(c(bbc_data$category[1781:2225]))
bbcNb <- textmodel_NB(bbc_dfm, trainclass)
bbc_pred <- predict(bbcNb, testclass)
Es scheint reibungslos zu funktionieren, bis vorhersagen(), das gibt:
Error in newdata %*% log.lik :
requires numeric/complex matrix/vector arguments
Kann jemand gibt einen Einblick darüber, wie um das zu lösen? Ich bekomme immer noch den Dreh für Textanalyse und Quanteda. Vielen Dank!
Here is a link to the dataset.
Sie sollten genügend Daten zur Verfügung stellen, um Ihr Beispiel [reproduzierbar] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) zu machen. Es hat wahrscheinlich etwas mit Ihren Daten zu tun, aber da wir nicht sehen können, dass es unmöglich ist, mit Sicherheit zu sagen. – MrFlick
@MrFlick Ich habe den Post bearbeitet, um einen direkten Link zu der .csv-Datei aufzunehmen. Gibt es zusätzliche Informationen, die ich zur Verfügung stellen sollte? Neu dazu! – Matt
'newdata' das zweite Argument zu' predicate() 'kann kein Faktor sein, der' test class' ist, stattdessen muss es ein dfm sein. Siehe '?? predict.textmodel_NB_fitted'. Wenn deine letzte Zeile "Predicate (bbcNb)" ist, sollte das funktionieren - tut es aber nicht. Anscheinend gibt es einen Fehler in der Vorhersage-Methode, wenn * k *> 2. Bitte reichen Sie ein Problem unter https://github.com/kbenoit/quanteda/issues ein. –