在预定义的文档术语矩阵中导入文本数据的R函数

在预定义的文档术语矩阵中导入文本数据的R函数,r,data-mining,corpus,R,Data Mining,Corpus,我已经导入了一些关于某些产品描述的文本数据。将文本数据转换为语料库,进行数据预处理,最后将其转换为文档术语矩阵(作为数据框架)创建CART模型。代码如下: #Data load o.data = read_excel("ML data.xlsx") # Preparation o.data$label = as.character(o.data$label) corpus = Corpus(VectorSource(o.data$label)) corpus = tm_map(corpus,

我已经导入了一些关于某些产品描述的文本数据。将文本数据转换为语料库,进行数据预处理,最后将其转换为文档术语矩阵(作为数据框架)创建CART模型。代码如下:

#Data load
o.data = read_excel("ML data.xlsx")

# Preparation
o.data$label = as.character(o.data$label)
corpus = Corpus(VectorSource(o.data$label))
corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, removePunctuation)
corpus_matrix = DocumentTermMatrix(corpus)
sparse = removeSparseTerms(corpus_matrix, 0.995)
m.data = as.data.frame(as.matrix(sparse))
t.data = read_excel("new_text_data.xlsx")
corpus_test = Corpus(VectorSource(t.data$label_test))
corpus_test = tm_map(corpus_test, tolower)
corpus_test = tm_map(corpus_test, removePunctuation)
corpus_matrix_test = DocumentTermMatrix(corpus_test)
sparse_test = removeSparseTerms(corpus_matrix_test, 0.995)
corpus.test.data = as.data.frame(as.matrix(sparse_test))
corpus.test.data$k101_pvalue = predict(CART_model_k101, newdata=corpus.test.data)[,2]
之后,我将ID和自变量加载到DTM数据集,将数据拆分到训练和测试集,构建模型,并使用以下代码对测试集进行良好预测:

colnames(m.data) = make.names(colnames(m.data))
# Add independent variable (k101) & id variable
m.data$k101 = o.data$k101
m.data$id = o.data$id_new
split = sample.split(m.data, SplitRatio = 0.7)
m.data_train = subset(m.data, split==TRUE)
m.data_test = subset(m.data, split==FALSE)
CART_model_k101 = rpart(k101~., data=m.data_train, method="class")
#...and so on to the model evaluation etc.
现在的问题是,当我尝试导入新文本数据,将其转换为语料库和文档术语矩阵(作为数据框架)时,我得到了不同的DTM矩阵,因此无法使用以前构建的模型对新文本数据进行分类。代码如下:

#Data load
o.data = read_excel("ML data.xlsx")

# Preparation
o.data$label = as.character(o.data$label)
corpus = Corpus(VectorSource(o.data$label))
corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, removePunctuation)
corpus_matrix = DocumentTermMatrix(corpus)
sparse = removeSparseTerms(corpus_matrix, 0.995)
m.data = as.data.frame(as.matrix(sparse))
t.data = read_excel("new_text_data.xlsx")
corpus_test = Corpus(VectorSource(t.data$label_test))
corpus_test = tm_map(corpus_test, tolower)
corpus_test = tm_map(corpus_test, removePunctuation)
corpus_matrix_test = DocumentTermMatrix(corpus_test)
sparse_test = removeSparseTerms(corpus_matrix_test, 0.995)
corpus.test.data = as.data.frame(as.matrix(sparse_test))
corpus.test.data$k101_pvalue = predict(CART_model_k101, newdata=corpus.test.data)[,2]
在我尝试使用使用DTM从以前的文本数据构建的模型对新文本数据进行预测后,我得到一个错误,其中未找到对象['column name']——它在测试数据的新DTM中搜索完全相同的DTM结构(列名)

我的问题是找到一种方法,将测试数据中的语料库转换为训练数据中的确切DTM结构。


很抱歉,我提供了大量的文字和解释,希望能找到解决方案。

您能创建一个字典,将列从一个数据集映射到另一个数据集吗?这很有帮助,因为我已经成功地实现了创建和加载字典的目的。以下是其他人需要的代码:#1我已导出语料库并将所有列名复制到一个名为“Dictionary”
#Load Dictionary Dictionary=read\u Excel(“Dictionary.xlsx”)d_list=as.list(Dictionary$Dictionary)
#从名为“label”的文本变量corpus=VCorpus(VectorSource)创建语料库(data$label))
#使用dictionary test.data=DocumentTermMatrix(语料库,控件=list(dictionary=d_list))%%>%as.matrix()从数据创建DTM