gpt4 book ai didi

r - 使用 R 和 SVM 进行文本分类。矩阵特征

转载 作者:行者123 更新时间:2023-11-30 09:01:03 25 4
gpt4 key购买 nike

我正在研究文本分类和 SVM。

我的理解是,通常为训练矩阵选取特征的方法本质上是使用“词袋”,其中我们最终得到的矩阵的列数与文档中不同单词的列数相同,并且这些列的值是每个文档中每个单词出现的次数(当然每个文档由一行表示)。

这样一切正常,我可以训练我的算法等等,但有时我会收到类似的错误

Error during wrapup: test data does not match model !

通过挖掘一下,我在这个问题 Error in predict.svm: test data does not match model 中找到了答案。这实质上是说如果您的模型具有特征 A、B 和 C,那么要分类的新数据应包含 A、B 和 C 列。当然,对于文本来说,这有点棘手,我要分类的新文档可能包含分类器在训练集上从未见过的单词。

更具体地说,我使用的是 RTextTools 库,它在内部使用 SparseM 和 tm 库,用于训练 svm 的对象的类型为“matrix.csr”。

无论库的具体情况如何,我的问题是,文档分类中是否有任何技术可以确保培训文档和新文档具有不同单词的事实不会妨碍新数据的分类?

更新 @lejlot 建议的解决方案在 RTextTools 中实现非常简单,只需在使用 create_matrix 时使用 originalMatrix 可选参数即可> 功能。本质上,originalMatrix 应该与使用 create_matrix 函数训练数据时创建的矩阵相同。因此,在训练数据并拥有模型后,还保留原始文档矩阵,在使用新示例时,请确保在为预测集创建新矩阵时使用此类对象。

最佳答案

Regardless of the specifics of the library my question is, is there any technique in document classification to ensure that the fact that training documents and new documents have different words will not prevent new data from being classified?

是的,而且这是非常微不足道的。在应用任何训练或分类之前,您需要创建一个预处理对象,该对象应该将文本映射到矢量表示。特别是 - 它存储用于训练的整个词汇。稍后,您在测试文档上重用相同的预处理对象,并且您只需忽略之前存储的词汇表之外的单词(OOV 单词,因为它们经常在文献中引用)。

显然还有很多其他更“启发式”的方法,您不是放弃它们,而是尝试将它们映射到现有的单词(尽管理论上不太合理)。相反,您应该创建中间表示,这将是您新的“预处理”对象,它可以处理 OOV 单词(通过一些 levenstein 距离映射等)。

关于r - 使用 R 和 SVM 进行文本分类。矩阵特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37086414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com