如何为 NLP BOW 匹配新记录中的特征

How to match features in new records for NLP BOW

我有一个包含 100,000 条记录的数据集

此数据集中的数据是 2 列 1- 文本 2- Class

当我应用模型的 BOW 时,我得到了一大堆特征

很好,我设法与他们合作

我的问题是在构建模型和部署之后。

现在,如果新文本带有新词,那么模型将无法工作,因为它在相同的特征结构中工作

例子 “这是一个测试,测试很重要”,Red “亚当通过考试”,格林

所以我的最终数据集是

This is a test important Adam pass class
 1    2 1 2    1          0    0   Red
 0    0 1 1    0          1    1   Green

创建模型并获得此文本后

“考试和考试很相似”,黄色

在这种情况下,特征集有新特征

和考试差不多

由于这些特征从未包含在训练模型中,因此模型会出错

我想知道如何解决这个问题?

为了解决这个问题,使用固定词汇表将文本转换为词袋。 OOV(超出词汇表)的标记用特殊的 <UNK> 标记表示。

比如我们定义一个词表V

V = ['this', 'is', 'a', 'test', 'pass', 'and', 'are', '<UNK>']

然后,您的句子将用以下向量表示:

s1 = "This is a test, test is important"  #important is OOV
v1 = [1, 2, 1, 2, 0, 0, 0, 1]

s2 = "Adam pass a test" # Adam is OOV
v2 = [0, 0, 1, 1, 1, 0, 0, 1]

当您用词袋表示训练数据并拟合模型时,测试数据将以相同的方式表示,您的模型将使用此表示进行预测。在你的情况下,

s3 = "test and exam are similar"
v3 = [0, 0, 0, 1, 0, 1, 1, 2]