НЛП Текстовая классификация - Ошибка с кодом - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть пара столбцов - один имеет 60 классов, которые идентифицируют тип электронной почты, а другой столбец содержит описание электронной почты.Теперь, как мне обучить мои данные для самостоятельной классификации на основе описания электронной почты.Попробовал создать тдм, нграмм и затем использовать его в наивном байесовском.Тем не менее получаю сообщение об ошибке, что используется не числовое значение.

Пример данных

R Код:

install.packages("tm")
install.packages("SnowballC")
install.packages("wordcloud")
install.packages("RColorBrewer")
install.packages("RWeka")
install.packages("tokenizers")
install.packages("ngram")
install.packages("rJava")
install.packages("caret")
install.packages("randomForest")
install.packages("e1071")
library("e1071")
library(randomForest)
library(caret)
library(tm)
library(SnowballC)
library(wordcloud)
library(RColorBrewer)
unloadNamespace('Rweka')
library(RWeka)
library(tokenizers)
library(rJava)
library(ngram)
library(naivebayes)
library(kernlab)
library(forecast)
setwd("C:/Users/Harsha/Downloads")
getwd()
jobData <- read.csv("consumercompliant.csv", header = TRUE)
jobData <- jobData[c("Issue", "complaint_narrative")]
jobDesc <- jobData[jobData$Issue == "Improper contact or sharing of info","complaint_narrative"]
# jobDesc <- jobData[jobData$job_title == ".Net Architect Job in Dallas","complaint_narrative"]
# jobDesc <- as.character(jobDesc)
jobDesc <- VCorpus(VectorSource(jobDesc))
processedJobDesc <- tm_map(jobDesc, content_transformer(tolower))
processedJobDesc <- tm_map(processedJobDesc, removeWords, stopwords("english"))
# Remove punctuations
processedJobDesc <- tm_map(processedJobDesc, removePunctuation)
# Eliminate extra white spaces
processedJobDesc <- tm_map(processedJobDesc, stripWhitespace)
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2))
termDocument <- TermDocumentMatrix(processedJobDesc,control=list(tokenize = BigramTokenizer))
termMatrix <- as.matrix(termDocument)
sortedTermMatrix <- sort(rowSums(termMatrix),decreasing=TRUE)
d <- data.frame(word = names(sortedTermMatrix),freq=sortedTermMatrix)
head(d, 10)

par(bg="grey30")
png(file="net_TM.png",width=1000,height=700, bg="grey30")
wordcloud(d$word, d$freq, col=terrain.colors(length(d$word), alpha=0.9), random.order=FALSE, rot.per=0.3 )
title(main = "Job Keywords", font.main = 1, col.main = "cornsilk3", cex.main = 1.5)
dev.off()
shortest <- min(length(sortedTermMatrix), length(jobDesc$Issue))
df.model<-naive_bayes(as.factor(tail(sortedTermMatrix,shortest)), as.factor(tail(jobDesc$Issue,shortest)))
df.pred<-forecast(as.numeric(unlist(df.model)), as.numeric(unlist(jobDesc$Issue)))
con.matrix<-confusionMatrix(df.pred, df.test$corpus)
print(con.matrix)
...