仅从训练数据或整个数据中构建词汇表?

Posted

技术标签:

【中文标题】仅从训练数据或整个数据中构建词汇表?【英文标题】:Build vocabulary only from training data or entire data? 【发布时间】:2020-10-15 21:24:11 【问题描述】:

我应该仅从训练数据还是所有数据构建词汇表,这不会对测试数据产生两种方式的影响吗?我的意思是:

如果我们只从训练数据中构建词汇表,如果词汇表中没有单词,模型将无法识别验证和测试数据中的很多单词。

在这种情况下考虑预训练的词嵌入是否有帮助(即模型不是从训练数据而是从预训练的词嵌入中学习新词)?

如果是,随机初始化的词嵌入会产生同样的效果吗?

相反,我看到很多例子,编码人员根据整个数据构建词汇,测试和验证数据与训练数据共享。这不是很明显的数据泄露问题吗?

【问题讨论】:

【参考方案1】:

    如果您谈论的是词嵌入,那么您应该为词汇外的词设置一些特殊标记(您可能不希望拥有所有唯一的词,而是希望拥有前 N 个词)。例如。添加一个特殊的标记,如[UNK],并用它替换每个未知单词。

    如果您有预训练的词嵌入和小型训练集,请将它们用作初始点。

    此外,没有理由为您在训练期间不会优化的单词初始化嵌入。

    唯一可能泄露的信息是词频,这不是一个严重的问题。

【讨论】:

以上是关于仅从训练数据或整个数据中构建词汇表?的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯分类器是不是需要了解整个词汇表?

第八篇:词汇语义

汽车检测SIFT+BOW+SVM

文本分类-FastText

如何从TfidfVectorizer计算余弦相似度?

Java编程入门(词汇表)