我对文本分类中特征提取所需词汇集的定义有疑问。 在一个实验中,我可以想到两种方法:
1.使用训练数据和测试数据定义词汇量大小,这样测试数据中的任何单词都不会被视为“未知”。在测试期间。
2.根据仅来自训练数据的数据定义词汇量大小,并将测试数据中不会出现在训练数据中的每个单词视为“未知”。
乍一看,第二个更科学的方式。然而值得注意的是,尽管我们无法在实际系统中了解词汇的真实大小,但是将词汇量大小设置为比训练数据中出现的大小稍微大一点似乎没有问题。涵盖可能更大的问题。这有助于它实际上将不同的未知单词视为不同,而不是将它们总结为“未知”。有什么理由说这不实用吗?机器学习新手。非常感谢。
答案 0 :(得分:3)
如果您将训练集中不会出现的测试集词包含在您的模型中(例如分类模型),那么因为它们没有出现在训练集中,所以他们在训练模型中的权重将为零因此,除了增加模型尺寸之外,它们不会产生任何影响。所以选项2更好。
话虽如此,为了弥补测试数据的变化性质,一种解决方案是定期重新训练模型,另一种解决方案是使用word2vec来构建表示,并使用K-Nearest Neighbor模型给出每个看不见的单词测试集为您提供训练集中最近的单词,以便您可以使用该单词而不是未知单词。
答案 1 :(得分:1)
在现实世界中,nlp系统总是需要处理未知单词。
如果您将测试数据用作词汇集的一部分,那么当您进行测试时,您的模型将不会遇到这种情况。指标已被破坏,无法向您显示模型的真实性能。
这是知识发现和自然语言处理的重要组成部分,您可以通过Google natural language processing unknown words
了解模型用于解决此问题的详细信息,理论和常用方法。
如果您只是想要一些工具来处理未知单词,word2vec
可能对您有好处。