我有一个关于在文本分类中定义用于特征提取的词汇集的问题。在一个实验中,我可以想到两种方法:
1.使用训练数据和测试数据来定义词汇量,这样在测试过程中测试数据中的任何词都不会被视为“未知”。
2.仅根据训练数据来定义词汇量,将测试数据中未在训练数据中出现的每个词视为“未知”。
乍一看,第二种方法更为科学。然而值得注意的是,尽管在实际系统中我们无法得知词汇的真实大小,但似乎可以将词汇量设置得比训练数据中出现的略大一些,以覆盖可能更大的问题。这有助于将不同的未知词视为不同,而不是将它们总称为“未知”。为什么这种方法不实用呢?
我是机器学习的新手。非常感谢您的帮助。
回答:
如果您将训练集中未出现的测试集词语包含在您的模型中(例如,一个分类模型),由于它们在训练集中没有出现过,它们在训练模型中的权重将为零,因此除了增加模型大小外,它们不会产生任何影响。因此,第二种选项更好。
尽管如此,为了应对测试数据的变化性质,一个解决方案是定期重新训练您的模型。另一个解决方案是使用word2vec构建表示,并使用K最近邻模型,对于测试集中每个未见过的词,给出训练集中最接近的词,这样您就可以使用那个词来代替未知词。