在创建机器学习模型时,为了提高其质量,通常会使用各种预处理技术 - 标记化、停用词、词形还原等。此外,像 spaCy 这样的现代工具可以提供深入分析的机会,深入到词根,例如,对于单词“Cat”,它可以建议词根“Cat”,而不是“Window”(这将是字母-按字母更接近单词 cat)。
我的问题是,如果我为文本多类分类创建了一个经过大量预处理的机器学习模型,那么在使用该模型时是否需要进行相同的预处理才能使该模型正常工作?
让我举个例子。让我们开发一个模型,根据评论文本将其分配到不同的类别。假设预处理后的部分训练样本如下所示:
Сэмпл | Класс
猫毛灰|动物。猫
在这种情况下,显然假设用户会写这样的评论:“我的猫有这么灰色的皮毛,这真是一个奇迹!”我的假设如下:如果我们首先通过相同的预处理管道运行此用户请求,然后将其传递到现成的机器学习模型的输入,那么我们收到的不是编写的短语,而是“灰色羊毛奇迹” cat,”这不会导致模型质量的提高吗?
即使您问题的具体情况如何,我也会给出通用答案。
使用机器学习模型时,必须有与训练模型时完全相同的数据准备(预处理)。如果您不以与训练期间相同的方式准备数据,则模型的输出将完全未知。并且可能会有不正确的预测和错误。因为模型需要以某种格式专门准备的数据。如果你给它喂其他东西,至少质量会下降,最多模型可能根本无法工作。
歌词也是如此,是的。尤其是文字。但总的来说,这是机器学习的普遍原则。
在您的示例中,很可能模型根本不知道什么是“猫”以及什么是“毛皮”。她根本不认识这些词,因为她在训练时没有看到它们。她只看到了“猫”和“毛皮”两个字。而你现在喂给她的那些话,她根本不知道,也无法从中预测到任何事情。
我再总结一下。数据预处理的过程是机器学习的必经阶段,无论是训练模型的阶段还是使用模型的阶段都必须完全相同。一般来说,神经网络有一些额外的细微差别,但一般来说最好严格遵守这个规则。
PS 例如,
FastText
在教授图书馆时,它不仅从提供给它的文本中的单词中学习,而且从文本中的单个字母及其组合中学习。因此,即使对于训练期间没有看到的单词,它也可以比更简单的模型表现得更好。所以她可能正确地识别出“猫”和“毛皮”。但我不会依赖它。