首先,模型的工作效果有多好有多种因素。数据量、数据来源、超参数、模型类型、训练时间等……所有这些都会影响准确性。但是,一般来说,没有分类器效果最好。这一切都取决于不同的因素,至少目前没有人能满足所有人的要求。
为了提高准确率,我们首先需要使这些因素理想化,这样分类才会有更高的准确率。
首先,你有多少数据?如果您使用的是 html 网页,您可能需要至少 10000 个数据样本。如果你至少有这么多的数据,你应该可以接受过度拟合。您还需要清理数据。一种方法是对其进行标记。文本数据的标记化基本上意味着将文本拆分为单词并从中制作字典。然后将每个单词编码为特定数字,其中每个相同的单词具有相同的编码。您正在使用原始 HTML 作为输入,其中包含许多不必要的信息和标签等内容,您可以尝试删除这些或完全删除所有 html 标签(如果不需要的话)。清洗数据的关键是提取重要和必要的信息让模型工作。
然后,您应该探索模型。对于 NLP(自然语言处理)任务,最好的选择是选择 RNN(循环神经网络)。这种类型的网络具有记忆单元,有助于处理文本类型数据,因为文本在段落中通常具有远距离链接,例如,一个句子可能使用“她”来指代前面两句话中提到的人,如果你只是喂每个MLP 中单词的单一编码,它不会有这种记忆供网络学习文本之间的长期连接。RNN 也是时间相关的,这意味着它会根据时间的方向一个一个地处理每个令牌。这使得文本对网络更直观,因为文本被设计为向前阅读,而不是一次全部阅读。
您当前的方法是首先对 HTML 代码进行矢量化处理,然后将其输入随机森林分类器。随机森林分类器效果很好,但是当有更多数据时它无法扩展。当数据增加时,随机森林分类器的准确性将基本保持不变,而在深度神经网络中,准确性将随着数据量的增加而增加。然而,深度神经网络需要大量数据才能开始。如果您的数据量不是太多(< 10000),则此方法应该是您选择的方法。但是,如果您计划添加更多数据或数据更多,则应尝试基于深度学习的方法。
对于基于深度学习的方法,ULMFit 是一个很好的尝试模型。它使用具有语言模型预训练和许多不同方法的 LSTM(长短期记忆)网络(这是 RNN 的一种)来提高准确性。你可以尝试使用 fast.ai 实现。https://nlp.fast.ai/
如果您想尝试一种您可以实际实现的方法,您可以尝试使用带有一个热编码的普通 LSTM 作为输入。但是,不要使用 word2vec 进行预处理,因为您的输入数据是 html 代码。word2vec 模型适用于普通英文文本,而不是 html 标记和内容。此外,自定义编码会更好,因为在训练过程中您也可以训练编码。
希望我能帮助你