假设我有基于文本的训练数据和测试数据。更具体地说,我有两个数据集 - 训练和测试 - 两个数据集都有一个包含文本并与手头的工作相关的列。
我使用R中的tm软件包处理训练数据集中的文本列。在去除空格、标点符号和停用词后,我对语料库进行了词干提取,并最终创建了一个包含每个文档中单词频率/计数的1元文档术语矩阵。然后,我采取了预先确定的50个截止值,并仅保留那些计数大于50的术语。
接下来,我使用DTM和因变量(在训练数据中存在)训练一个GLMNET模型。到目前为止,一切都很顺利和容易。
但是,当我想在测试数据或未来可能出现的任何新数据上进行评分/预测时,我该怎么做呢?
具体来说,我想知道如何在新数据上创建完全相同的DTM结构。
如果新数据集没有任何与原始训练数据相似的单词,则所有术语的计数应为零(这没问题)。但我希望能够在任何新语料库上复制完全相同的DTM(以结构为准)。
有任何想法/思路吗?
我使用R中的tm软件包处理训练数据集中的文本列。在去除空格、标点符号和停用词后,我对语料库进行了词干提取,并最终创建了一个包含每个文档中单词频率/计数的1元文档术语矩阵。然后,我采取了预先确定的50个截止值,并仅保留那些计数大于50的术语。
接下来,我使用DTM和因变量(在训练数据中存在)训练一个GLMNET模型。到目前为止,一切都很顺利和容易。
但是,当我想在测试数据或未来可能出现的任何新数据上进行评分/预测时,我该怎么做呢?
具体来说,我想知道如何在新数据上创建完全相同的DTM结构。
如果新数据集没有任何与原始训练数据相似的单词,则所有术语的计数应为零(这没问题)。但我希望能够在任何新语料库上复制完全相同的DTM(以结构为准)。
有任何想法/思路吗?
plyr
包的rbind.fill
函数将其与旧数据绑定,这将创建一个新矩阵,其中包含两个原始矩阵的所有列。您的训练数据将具有任何在新数据中但不在训练数据中的术语的NA列。然后,您可以删除那些列。您的新数据将具有任何在训练数据中但不在新数据中的术语的NA列,您可以用零替换这些NA。 - SchaunW